--- a/make/data/tzdata/VERSION Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/VERSION Fri Nov 02 11:34:56 2018 -0400
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2018e
+tzdata2018g
--- a/make/data/tzdata/africa Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/africa Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Africa and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -29,7 +31,7 @@
# tz@iana.org for general use in the future). For more, please see
# the file CONTRIBUTING in the tz distribution.
-# From Paul Eggert (2017-04-09):
+# From Paul Eggert (2018-05-27):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -74,13 +76,15 @@
# I vaguely recall 'WAT' also being used for -01 in the past but
# cannot now come up with solid citations.
#
-# I invented the following abbreviations; corrections are welcome!
-# +02 WAST West Africa Summer Time (no longer used)
-# +03 CAST Central Africa Summer Time (no longer used)
-# +03 SAST South Africa Summer Time (no longer used)
+# I invented the following abbreviations in the 1990s:
+# +02 WAST West Africa Summer Time
+# +03 CAST Central Africa Summer Time
+# +03 SAST South Africa Summer Time
# +03 EAT East Africa Time
-# 'EAT' also seems to have caught on; the others are rare but are paired
-# with better-attested non-DST abbreviations.
+# 'EAT' seems to have caught on and is in current timestamps, and though
+# the other abbreviations are rarer and are only in past timestamps,
+# they are paired with better-attested non-DST abbreviations.
+# Corrections are welcome.
# Algeria
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@@ -385,6 +389,13 @@
# Eritrea
# Ethiopia
# See Africa/Nairobi.
+#
+# Unfortunately tzdb records only Western clock time in use in Ethiopia,
+# as the tzdb format is not up to properly recording a common Ethiopian
+# timekeeping practice that is based on solar time. See:
+# Mortada D. If you have a meeting in Ethiopia, you'd better double
+# check the time. PRI's The World. 2015-01-30 15:15 -05.
+# https://www.pri.org/stories/2015-01-30/if-you-have-meeting-ethiopia-you-better-double-check-time
# Gabon
# See Africa/Lagos.
@@ -856,94 +867,61 @@
# <https://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
# with the patch.
-# From Paul Eggert (2015-06-08):
-# For now, guess that later spring and fall transitions will use 2015's rules,
-# and guess that Morocco will switch to standard time at 03:00 the last
-# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
-# Ramadan. To implement this, transition dates for 2016 through 2037 were
-# determined by running the following program under GNU Emacs 24.3, with the
-# results integrated by hand into the table below.
-# (let ((islamic-year 1437))
-# (require 'cal-islam)
-# (while (< islamic-year 1460)
-# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
-# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
-# (sunday 0))
-# (while (/= sunday (mod (setq a (1- a)) 7)))
-# (while (/= sunday (mod b 7))
-# (setq b (1+ b)))
-# (setq a (calendar-gregorian-from-absolute a))
-# (setq b (calendar-gregorian-from-absolute b))
-# (insert
-# (format
-# (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
-# "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
-# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
-# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
-# (setq islamic-year (+ 1 islamic-year))))
+# From Mohamed Essedik Najd (2018-10-26):
+# Today, a Moroccan government council approved the perpetual addition
+# of 60 minutes to the regular Moroccan timezone.
+# From Brian Inglis (2018-10-26):
+# http://www.maroc.ma/fr/actualites/le-conseil-de-gouvernement-adopte-un-projet-de-decret-relatif-lheure-legale-stipulant-le
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-
-Rule Morocco 1939 only - Sep 12 0:00 1:00 S
+Rule Morocco 1939 only - Sep 12 0:00 1:00 -
Rule Morocco 1939 only - Nov 19 0:00 0 -
-Rule Morocco 1940 only - Feb 25 0:00 1:00 S
+Rule Morocco 1940 only - Feb 25 0:00 1:00 -
Rule Morocco 1945 only - Nov 18 0:00 0 -
-Rule Morocco 1950 only - Jun 11 0:00 1:00 S
+Rule Morocco 1950 only - Jun 11 0:00 1:00 -
Rule Morocco 1950 only - Oct 29 0:00 0 -
-Rule Morocco 1967 only - Jun 3 12:00 1:00 S
+Rule Morocco 1967 only - Jun 3 12:00 1:00 -
Rule Morocco 1967 only - Oct 1 0:00 0 -
-Rule Morocco 1974 only - Jun 24 0:00 1:00 S
+Rule Morocco 1974 only - Jun 24 0:00 1:00 -
Rule Morocco 1974 only - Sep 1 0:00 0 -
-Rule Morocco 1976 1977 - May 1 0:00 1:00 S
+Rule Morocco 1976 1977 - May 1 0:00 1:00 -
Rule Morocco 1976 only - Aug 1 0:00 0 -
Rule Morocco 1977 only - Sep 28 0:00 0 -
-Rule Morocco 1978 only - Jun 1 0:00 1:00 S
+Rule Morocco 1978 only - Jun 1 0:00 1:00 -
Rule Morocco 1978 only - Aug 4 0:00 0 -
-Rule Morocco 2008 only - Jun 1 0:00 1:00 S
+Rule Morocco 2008 only - Jun 1 0:00 1:00 -
Rule Morocco 2008 only - Sep 1 0:00 0 -
-Rule Morocco 2009 only - Jun 1 0:00 1:00 S
+Rule Morocco 2009 only - Jun 1 0:00 1:00 -
Rule Morocco 2009 only - Aug 21 0:00 0 -
-Rule Morocco 2010 only - May 2 0:00 1:00 S
+Rule Morocco 2010 only - May 2 0:00 1:00 -
Rule Morocco 2010 only - Aug 8 0:00 0 -
-Rule Morocco 2011 only - Apr 3 0:00 1:00 S
+Rule Morocco 2011 only - Apr 3 0:00 1:00 -
Rule Morocco 2011 only - Jul 31 0:00 0 -
-Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 S
+Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
Rule Morocco 2012 only - Jul 20 3:00 0 -
-Rule Morocco 2012 only - Aug 20 2:00 1:00 S
+Rule Morocco 2012 only - Aug 20 2:00 1:00 -
Rule Morocco 2012 only - Sep 30 3:00 0 -
Rule Morocco 2013 only - Jul 7 3:00 0 -
-Rule Morocco 2013 only - Aug 10 2:00 1:00 S
-Rule Morocco 2013 max - Oct lastSun 3:00 0 -
-Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
+Rule Morocco 2013 only - Aug 10 2:00 1:00 -
+Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
+Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
Rule Morocco 2014 only - Jun 28 3:00 0 -
-Rule Morocco 2014 only - Aug 2 2:00 1:00 S
+Rule Morocco 2014 only - Aug 2 2:00 1:00 -
Rule Morocco 2015 only - Jun 14 3:00 0 -
-Rule Morocco 2015 only - Jul 19 2:00 1:00 S
+Rule Morocco 2015 only - Jul 19 2:00 1:00 -
Rule Morocco 2016 only - Jun 5 3:00 0 -
-Rule Morocco 2016 only - Jul 10 2:00 1:00 S
+Rule Morocco 2016 only - Jul 10 2:00 1:00 -
Rule Morocco 2017 only - May 21 3:00 0 -
-Rule Morocco 2017 only - Jul 2 2:00 1:00 S
+Rule Morocco 2017 only - Jul 2 2:00 1:00 -
Rule Morocco 2018 only - May 13 3:00 0 -
-Rule Morocco 2018 only - Jun 17 2:00 1:00 S
-Rule Morocco 2019 only - May 5 3:00 0 -
-Rule Morocco 2019 only - Jun 9 2:00 1:00 S
-Rule Morocco 2020 only - Apr 19 3:00 0 -
-Rule Morocco 2020 only - May 24 2:00 1:00 S
-Rule Morocco 2021 only - Apr 11 3:00 0 -
-Rule Morocco 2021 only - May 16 2:00 1:00 S
-Rule Morocco 2022 only - May 8 2:00 1:00 S
-Rule Morocco 2023 only - Apr 23 2:00 1:00 S
-Rule Morocco 2024 only - Apr 14 2:00 1:00 S
-Rule Morocco 2025 only - Apr 6 2:00 1:00 S
-Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
-Rule Morocco 2036 only - Oct 19 3:00 0 -
-Rule Morocco 2037 only - Oct 4 3:00 0 -
+Rule Morocco 2018 only - Jun 17 2:00 1:00 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
- 0:00 Morocco WE%sT 1984 Mar 16
- 1:00 - CET 1986
- 0:00 Morocco WE%sT
+ 0:00 Morocco +00/+01 1984 Mar 16
+ 1:00 - +01 1986
+ 0:00 Morocco +00/+01 2018 Oct 27
+ 1:00 - +01
# Western Sahara
#
@@ -958,7 +936,8 @@
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
-1:00 - -01 1976 Apr 14
- 0:00 Morocco WE%sT
+ 0:00 Morocco +00/+01 2018 Oct 27
+ 1:00 - +01
# Mozambique
#
--- a/make/data/tzdata/antarctica Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/antarctica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Antarctica and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/make/data/tzdata/asia Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/asia Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Asia and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -29,7 +31,7 @@
# tz@iana.org for general use in the future). For more, please see
# the file CONTRIBUTING in the tz distribution.
-# From Paul Eggert (2017-01-13):
+# From Paul Eggert (2018-06-19):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -58,7 +60,8 @@
# A reliable and entertaining source about time zones is
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
#
-# The following alphabetic abbreviations appear in these tables:
+# The following alphabetic abbreviations appear in these tables
+# (corrections are welcome):
# std dst
# LMT Local Mean Time
# 2:00 EET EEST Eastern European Time
@@ -67,11 +70,13 @@
# 7:00 WIB west Indonesia (Waktu Indonesia Barat)
# 8:00 WITA central Indonesia (Waktu Indonesia Tengah)
# 8:00 CST China
+# 8:00 PST PDT* Philippine Standard Time
# 8:30 KST KDT Korea when at +0830
# 9:00 WIT east Indonesia (Waktu Indonesia Timur)
# 9:00 JST JDT Japan
# 9:00 KST KDT Korea when at +09
# 9:30 ACST Australian Central Standard Time
+# *I invented the abbreviation PDT; see "Philippines" below.
# Otherwise, these tables typically use numeric abbreviations like +03
# and +0330 for integer hour and minute UT offsets. Although earlier
# editions invented alphabetic time zone abbreviations for every
@@ -304,6 +309,29 @@
# China
+# From Paul Eggert (2018-10-02):
+# The following comes from Table 1 of:
+# Li Yu. Research on the daylight saving movement in 1940s Shanghai.
+# Nanjing Journal of Social Sciences. 2014;(2):144-50.
+# http://oversea.cnki.net/kns55/detail.aspx?dbname=CJFD2014&filename=NJSH201402020
+# 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.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Shang 1940 only - Jun 1 0:00 1:00 D
+Rule Shang 1940 only - Oct 12 24:00 0 S
+Rule Shang 1941 only - Mar 15 0:00 1:00 D
+Rule Shang 1941 only - Nov 1 24:00 0 S
+Rule Shang 1942 only - Jan 31 0:00 1:00 D
+Rule Shang 1945 only - Sep 1 24:00 0 S
+Rule Shang 1946 only - May 15 0:00 1:00 D
+Rule Shang 1946 only - Sep 30 24:00 0 S
+Rule Shang 1947 only - Apr 15 0:00 1:00 D
+Rule Shang 1947 only - Oct 31 24:00 0 S
+Rule Shang 1948 1949 - May 1 0:00 1:00 D
+Rule Shang 1948 1949 - Sep 30 24:00 0 S #plan
+
# From Guy Harris:
# People's Republic of China. Yes, they really have only one time zone.
@@ -330,18 +358,33 @@
# time - sort of", Los Angeles Times, 1986-05-05 ... [says] that China began
# observing daylight saving time in 1986.
-# From Paul Eggert (2014-06-30):
-# Shanks & Pottenger have China switching to a single time zone in 1980, but
-# this doesn't seem to be correct. They also write that China observed summer
-# DST from 1986 through 1991, which seems to match the above commentary, so
-# go with them for DST rules as follows:
+# From P Chan (2018-05-07):
+# The start and end time of DST in China [from 1986 on] should be 2:00
+# (i.e. 2:00 to 3:00 at the start and 2:00 to 1:00 at the end)....
+# Government notices about summer time:
+#
+# 1986-04-12 http://www.zj.gov.cn/attach/zfgb/198608.pdf p.21-22
+# (To establish summer time from 1986. On 4 May, set the clocks ahead one hour
+# at 2 am. On 14 September, set the clocks backward one hour at 2 am.)
+#
+# 1987-02-15 http://www.gov.cn/gongbao/shuju/1987/gwyb198703.pdf p.114
+# (Summer time in 1987 to start from 12 April until 13 September)
+#
+# 1987-09-09 http://www.gov.cn/gongbao/shuju/1987/gwyb198721.pdf p.709
+# (From 1988, summer time to start from 2 am of the first Sunday of mid-April
+# until 2 am of the first Sunday of mid-September)
+#
+# 1992-03-03 http://www.gov.cn/gongbao/shuju/1992/gwyb199205.pdf p.152
+# (To suspend summer time from 1992)
+#
+# The first page of People's Daily on 12 April 1988 stating that summer time
+# to begin on 17 April.
+# http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Shang 1940 only - Jun 3 0:00 1:00 D
-Rule Shang 1940 1941 - Oct 1 0:00 0 S
-Rule Shang 1941 only - Mar 16 0:00 1:00 D
-Rule PRC 1986 only - May 4 0:00 1:00 D
-Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S
-Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D
+Rule PRC 1986 only - May 4 2:00 1:00 D
+Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
+Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
# From Anthony Fok (2001-12-20):
# BTW, I did some research on-line and found some info regarding these five
@@ -363,10 +406,11 @@
# Alois Treindl kindly sent me translations of the following two sources:
#
# (1)
-# Guo Qingsheng (National Time-Service Center, CAS, Xi'an 710600, China)
+# Guo Qing-sheng (National Time-Service Center, CAS, Xi'an 710600, China)
# Beijing Time at the Beginning of the PRC
# China Historical Materials of Science and Technology
-# (Zhongguo ke ji shi liao, 中国科技史料), Vol. 24, No. 1 (2003)
+# (Zhongguo ke ji shi liao, 中国科技史料). 2003;24(1):5-9.
+# http://oversea.cnki.net/kcms/detail/detail.aspx?filename=ZGKS200301000&dbname=CJFD2003
# It gives evidence that at the beginning of the PRC, Beijing time was
# officially apparent solar time! However, Guo also says that the
# evidence is dubious, as the relevant institute of astronomy had not
@@ -543,7 +587,7 @@
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
# Beijing time, used throughout China; represented by Shanghai.
Zone Asia/Shanghai 8:05:43 - LMT 1901
- 8:00 Shang C%sT 1949
+ 8:00 Shang C%sT 1949 May 28
8:00 PRC C%sT
# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
# / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.)
@@ -772,24 +816,140 @@
8:00 Taiwan C%sT
# Macau (Macao, Aomen)
+#
+# From P Chan (2018-05-10):
+# * LegisMac
+# http://legismac.safp.gov.mo/legismac/descqry/Descqry.jsf?lang=pt
+# A database for searching titles of legal documents of Macau in
+# Chinese and Portuguese. The term "HORÁRIO DE VERÃO" can be used for
+# searching decrees about summer time.
+# * Archives of Macao
+# http://www.archives.gov.mo/en/bo/
+# It contains images of old official gazettes.
+# * The Macao Meteorological and Geophysical Bureau have a page listing the
+# summer time history. But it is not complete and has some mistakes.
+# http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm
+# Macau adopted GMT+8 on 30 Oct 1904 to follow Hong Kong. Clocks were
+# advanced by 25 minutes and 50 seconds. Which means the LMT used was
+# +7:34:10. As stated in the "Portaria No. 204" dated 21 October 1904
+# and published in the Official Gazette on 29 October 1904.
+# http://igallery.icm.gov.mo/Images/Archives/BO/MO_AH_PUB_BO_1904_10/MO_AH_PUB_BO_1904_10_00025_Grey.JPG
+#
+# Therefore the 1911 decree of Portugal did not change time in Macau.
+#
+# From LegisMac, here is a list of decrees that changed the time ...
+# [Decree Gazette-no. date; titles omitted in this quotation]
+# DIL 732 BOCM 51 1941.12.20
+# DIL 764 BOCM 9S 1942.04.30
+# DIL 781 BOCM 21 1942.10.10
+# PT 3434 BOCM 8S 1943.04.17
+# PT 3504 BOCM 20 1943.09.25
+# PT 3843 BOCM 39 1945.09.29
+# PT 3961 BOCM 17 1946.04.27
+# PT 4026 BOCM 39 1946.09.28
+# PT 4153 BOCM 16 1947.04.10
+# PT 4271 BOCM 48 1947.11.29
+# PT 4374 BOCM 18 1948.05.01
+# PT 4465 BOCM 44 1948.10.30
+# PT 4590 BOCM 14 1949.04.02
+# PT 4666 BOCM 44 1949.10.29
+# PT 4771 BOCM 12 1950.03.25
+# PT 4838 BOCM 43 1950.10.28
+# PT 4946 BOCM 12 1951.03.24
+# PT 5025 BO 43 1951.10.27
+# PT 5149 BO 14 1952.04.05
+# PT 5251 BO 43 1952.10.25
+# PT 5366 BO 13 1953.03.28
+# PT 5444 BO 44 1953.10.31
+# PT 5540 BO 12 1954.03.20
+# PT 5589 BO 44 1954.10.30
+# PT 5676 BO 12 1955.03.19
+# PT 5739 BO 45 1955.11.05
+# PT 5823 BO 11 1956.03.17
+# PT 5891 BO 44 1956.11.03
+# PT 5981 BO 12 1957.03.23
+# PT 6064 BO 43 1957.10.26
+# PT 6172 BO 12 1958.03.22
+# PT 6243 BO 43 1958.10.25
+# PT 6341 BO 12 1959.03.21
+# PT 6411 BO 43 1959.10.24
+# PT 6514 BO 11 1960.03.12
+# PT 6584 BO 44 1960.10.29
+# PT 6721 BO 10 1961.03.11
+# PT 6815 BO 43 1961.10.28
+# PT 6947 BO 10 1962.03.10
+# PT 7080 BO 43 1962.10.27
+# PT 7218 BO 12 1963.03.23
+# PT 7340 BO 43 1963.10.26
+# PT 7491 BO 11 1964.03.14
+# PT 7664 BO 43 1964.10.24
+# PT 7846 BO 15 1965.04.10
+# PT 7979 BO 42 1965.10.16
+# PT 8146 BO 15 1966.04.09
+# PT 8252 BO 41 1966.10.08
+# PT 8429 BO 15 1967.04.15
+# PT 8540 BO 41 1967.10.14
+# PT 8735 BO 15 1968.04.13
+# PT 8860 BO 41 1968.10.12
+# PT 9035 BO 16 1969.04.19
+# PT 9156 BO 42 1969.10.18
+# PT 9328 BO 15 1970.04.11
+# PT 9418 BO 41 1970.10.10
+# PT 9587 BO 14 1971.04.03
+# PT 9702 BO 41 1971.10.09
+# PT 38-A/72 BO 14 1972.04.01
+# PT 126-A/72 BO 41 1972.10.07
+# PT 61/73 BO 14 1973.04.07
+# PT 182/73 BO 40 1973.10.06
+# PT 282/73 BO 51 1973.12.22
+# PT 177/74 BO 41 1974.10.12
+# PT 51/75 BO 15 1975.04.12
+# PT 173/75 BO 41 1975.10.11
+# PT 67/76/M BO 14 1976.04.03
+# PT 169/76/M BO 41 1976.10.09
+# PT 78/79/M BO 19 1979.05.12
+# PT 166/79/M BO 42 1979.10.20
+# Note that DIL 732 does not belong to "HORÁRIO DE VERÃO" according to
+# LegisMac.... Note that between 1942 and 1945, the time switched
+# between GMT+9 and GMT+10. Also in 1965 and 1965 the DST ended at 2:30am.
+
+# From Paul Eggert (2018-05-10):
+# The 1904 decree says that Macau changed from the meridian of
+# Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 D
-Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 S
-Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 D
-Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 D
-Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 D
-Rule Macau 1965 only - Oct 31 0:00 0 S
-Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 D
-Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 S
-Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 D
-Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 S
-Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 S
-Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D
-Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D
-Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S
-# See Europe/Lisbon for info about the 1912 transition.
+Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
+Rule Macau 1942 only - Nov 17 23:00 0 -
+Rule Macau 1943 only - Sep 30 23:00 0 S
+Rule Macau 1946 only - Apr 30 23:00s 1:00 D
+Rule Macau 1946 only - Sep 30 23:00s 0 S
+Rule Macau 1947 only - Apr 19 23:00s 1:00 D
+Rule Macau 1947 only - Nov 30 23:00s 0 S
+Rule Macau 1948 only - May 2 23:00s 1:00 D
+Rule Macau 1948 only - Oct 31 23:00s 0 S
+Rule Macau 1949 1950 - Apr Sat>=1 23:00s 1:00 D
+Rule Macau 1949 1950 - Oct lastSat 23:00s 0 S
+Rule Macau 1951 only - Mar 31 23:00s 1:00 D
+Rule Macau 1951 only - Oct 28 23:00s 0 S
+Rule Macau 1952 1953 - Apr Sat>=1 23:00s 1:00 D
+Rule Macau 1952 only - Nov 1 23:00s 0 S
+Rule Macau 1953 1954 - Oct lastSat 23:00s 0 S
+Rule Macau 1954 1956 - Mar Sat>=17 23:00s 1:00 D
+Rule Macau 1955 only - Nov 5 23:00s 0 S
+Rule Macau 1956 1964 - Nov Sun>=1 03:30 0 S
+Rule Macau 1957 1964 - Mar Sun>=18 03:30 1:00 D
+Rule Macau 1965 1973 - Apr Sun>=16 03:30 1:00 D
+Rule Macau 1965 1966 - Oct Sun>=16 02:30 0 S
+Rule Macau 1967 1976 - Oct Sun>=16 03:30 0 S
+Rule Macau 1973 only - Dec 30 03:30 1:00 D
+Rule Macau 1975 1976 - Apr Sun>=16 03:30 1:00 D
+Rule Macau 1979 only - May 13 03:30 1:00 D
+Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u
+Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
+ 8:00 - CST 1941 Dec 21 23:00
+ 9:00 Macau +09/+10 1945 Sep 30 24:00
8:00 Macau C%sT
@@ -1494,9 +1654,29 @@
# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00719500331039.htm
# ... In summary, it is written as follows. From 24:00 on the first Saturday
# in May, until 0:00 on the day after the second Saturday in September.
+
+# From Phake Nick (2018-09-27):
+# [T]he webpage authored by National Astronomical Observatory of Japan
+# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EF.html
+# ... mentioned that using Showa 23 (year 1948) as example, 13pm of September
+# 11 in summer time will equal to 0am of September 12 in standard time.
+# It cited a document issued by the Liaison Office which briefly existed
+# during the postwar period of Japan, where the detail on implementation
+# of the summer time is described in the document.
+# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EFB2C6BBFEB9EFA4CEBCC2BBDCA4CBA4C4A4A4A4C6.pdf
+# The text in the document do instruct a fall back to occur at
+# September 11, 13pm in summer time, while ordinary citizens can
+# change the clock before they sleep.
+#
+# From Paul Eggert (2018-09-27):
+# This instruction is equivalent to "Sat>=8 25:00", so use that. zic treats
+# it like "Sun>=9 01:00", which is not quite the same but is the best we can
+# do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
+# which should be safe now.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
-Rule Japan 1948 1951 - Sep Sun>=9 0:00 0 S
+Rule Japan 1948 1951 - Sep Sun>=9 1: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
@@ -1878,7 +2058,7 @@
5:00 - +05
# Mangghystaū (KZ-MAN)
# Aqtau was not founded until 1963, but it represents an inhabited region,
-# so include time stamps before 1963.
+# so include timestamps before 1963.
Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
4:00 - +04 1930 Jun 21
5:00 - +05 1981 Oct 1
@@ -2018,6 +2198,10 @@
# Assembly, as published in Rodong Sinmun.
# From Tim Parenti (2018-04-29):
# It appears to be the front page story at the top in the right-most column.
+#
+# From Paul Eggert (2018-05-04):
+# The BBC reported that the transition was from 23:30 to 24:00 today.
+# https://www.bbc.com/news/world-asia-44010705
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1
@@ -2030,7 +2214,7 @@
8:30 - KST 1912 Jan 1
9:00 - JST 1945 Aug 24
9:00 - KST 2015 Aug 15 00:00
- 8:30 - KST 2018 May 5
+ 8:30 - KST 2018 May 4 23:30
9:00 - KST
###############################################################################
@@ -2780,19 +2964,35 @@
# Philippine Star 2014-08-05
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
+# From Paul Goyette (2018-06-15):
+# In the Philippines, there is a national law, Republic Act No. 10535
+# which declares the official time here as "Philippine Standard Time".
+# The act [1] even specifies use of PST as the abbreviation, although
+# the FAQ provided by PAGASA [2] uses the "acronym PhST to distinguish
+# it from the Pacific Standard Time (PST)."
+# [1] http://www.officialgazette.gov.ph/2013/05/15/republic-act-no-10535/
+# [2] https://www1.pagasa.dost.gov.ph/index.php/astronomy/philippine-standard-time#republic-act-10535
+#
+# From Paul Eggert (2018-06-19):
+# I surveyed recent news reports, and my impression is that "PST" is
+# more popular among reliable English-language news sources. This is
+# not just a measure of Google hit counts: it's also the sizes and
+# influence of the sources. There is no current abbreviation for DST,
+# so use "PDT", the usual American style.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Phil 1936 only - Nov 1 0:00 1:00 -
-Rule Phil 1937 only - Feb 1 0:00 0 -
-Rule Phil 1954 only - Apr 12 0:00 1:00 -
-Rule Phil 1954 only - Jul 1 0:00 0 -
-Rule Phil 1978 only - Mar 22 0:00 1:00 -
-Rule Phil 1978 only - Sep 21 0:00 0 -
+Rule Phil 1936 only - Nov 1 0:00 1:00 D
+Rule Phil 1937 only - Feb 1 0:00 0 S
+Rule Phil 1954 only - Apr 12 0:00 1:00 D
+Rule Phil 1954 only - Jul 1 0:00 0 S
+Rule Phil 1978 only - Mar 22 0:00 1:00 D
+Rule Phil 1978 only - Sep 21 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
8:04:00 - LMT 1899 May 11
- 8:00 Phil +08/+09 1942 May
- 9:00 - +09 1944 Nov
- 8:00 Phil +08/+09
+ 8:00 Phil P%sT 1942 May
+ 9:00 - JST 1944 Nov
+ 8:00 Phil P%sT
# Qatar
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -2803,15 +3003,34 @@
# Saudi Arabia
#
-# From Paul Eggert (2014-07-15):
+# From Paul Eggert (2018-08-29):
# Time in Saudi Arabia and other countries in the Arabian peninsula was not
-# standardized until relatively recently; we don't know when, and possibly it
+# standardized until 1968 or so; we don't know exactly when, and possibly it
# has never been made official. Richard P Hunt, in "Islam city yielding to
# modern times", New York Times (1961-04-09), p 20, wrote that only airlines
# observed standard time, and that people in Jeddah mostly observed quasi-solar
# time, doing so by setting their watches at sunrise to 6 o'clock (or to 12
# o'clock for "Arab" time).
#
+# Timekeeping differed depending on who you were and which part of Saudi
+# Arabia you were in. In 1969, Elias Antar wrote that although a common
+# practice had been to set one's watch to 12:00 (i.e., midnight) at sunset -
+# which meant that the time on one side of a mountain could differ greatly from
+# the time on the other side - many foreigners set their watches to 6pm
+# instead, while airlines instead used UTC +03 (except in Dhahran, where they
+# used UTC +04), Aramco used UTC +03 with DST, and the Trans-Arabian Pipe Line
+# Company used Aramco time in eastern Saudi Arabia and airline time in western.
+# (The American Military Aid Advisory Group used plain UTC.) Antar writes,
+# "A man named Higgins, so the story goes, used to run a local power
+# station. One day, the whole thing became too much for Higgins and he
+# assembled his staff and laid down the law. 'I've had enough of this,' he
+# shrieked. 'It is now 12 o'clock Higgins Time, and from now on this station is
+# going to run on Higgins Time.' And so, until last year, it did." See:
+# Antar E. Dinner at When? Saudi Aramco World, 1969 March/April. 2-3.
+# http://archive.aramcoworld.com/issue/196902/dinner.at.when.htm
+# newspapers.com says a similar story about Higgins was published in the Port
+# Angeles (WA) Evening News, 1965-03-10, page 5, but I lack access to the text.
+#
# The TZ database cannot represent quasi-solar time; airline time is the best
# we can do. The 1946 foreign air news digest of the U.S. Civil Aeronautics
# Board (OCLC 42299995) reported that the "... Arabian Government, inaugurated
@@ -2821,7 +3040,8 @@
#
# Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two
# time zones; the other zone, at UT +04, was in the far eastern part of
-# the country. Ignore this, as it's before our 1970 cutoff.
+# the country. Presumably this is documenting airline time. Ignore this,
+# as it's before our 1970 cutoff.
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
--- a/make/data/tzdata/australasia Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/australasia Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Australasia and environs, and for much of the Pacific
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -384,8 +386,15 @@
# Dominic Fok writes (2017-08-20) that DST ends 2018-01-14, citing
# Extraordinary Government of Fiji Gazette Supplement No. 21 (2017-08-27),
# [Legal Notice No. 41] of an order of the previous day by J Usamate.
+
+# From Raymond Kumar (2018-07-13):
+# http://www.fijitimes.com/government-approves-2018-daylight-saving/
+# ... The daylight saving period will end at 3am on Sunday January 13, 2019.
+#
+# From Paul Eggert (2018-07-15):
# For now, guess DST from 02:00 the first Sunday in November to 03:00
-# the first Sunday on or after January 14. Although ad hoc, it matches
+# the first Sunday on or after January 13. January transitions reportedly
+# depend on when school terms start. Although the guess is ad hoc, it matches
# transitions since late 2014 and seems more likely to match future
# practice than guessing no DST.
@@ -399,7 +408,7 @@
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
-Rule Fiji 2015 max - Jan Sun>=14 3:00 0 -
+Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
12:00 Fiji +12/+13
--- a/make/data/tzdata/backward Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/backward Fri Nov 02 11:34:56 2018 -0400
@@ -21,10 +21,12 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb links for backward compatibility
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
-# This file provides links between current names for time zones
+# This file provides links between current names for timezones
# and their old names. Many names changed in late 1993.
# Link TARGET LINK-NAME
--- a/make/data/tzdata/etcetera Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/etcetera Fri Nov 02 11:34:56 2018 -0400
@@ -21,12 +21,14 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for ships at sea and other miscellany
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
# These entries are mostly present for historical reasons, so that
# people in areas not otherwise covered by the tz files could "zic -l"
-# to a time zone that was right for their area. These days, the
+# to a timezone that was right for their area. These days, the
# tz files cover almost all the inhabited world, and the only practical
# need now for the entries that are not on UTC are for ships at sea
# that cannot use POSIX TZ settings.
--- a/make/data/tzdata/europe Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/europe Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Europe and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -540,7 +542,7 @@
#
# To work around this problem, the build procedure can translate the
# following data into two forms, one with negative SAVE values and the
-# other form with a traditional approximation for Irish time stamps
+# other form with a traditional approximation for Irish timestamps
# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst
# flags that are reversed, its UTC offsets are correct and this often
# suffices. This source file currently uses only nonnegative SAVE
@@ -2450,6 +2452,33 @@
# administratively part of Sakhalin oblast', they appear to have
# remained on UTC+11 along with Magadan.
+# From Marat Nigametzianov (2018-07-16):
+# this is link to order from 1956 about timezone in USSR
+# http://astro.uni-altai.ru/~orion/blog/2011/11/novyie-granitsyi-chasovyih-poyasov-v-sssr/
+#
+# From Paul Eggert (2018-07-16):
+# Perhaps someone could translate the above-mentioned link and use it
+# to correct our data for the ex-Soviet Union. It cites the following:
+# «Поясное время и новые границы часовых поясов» / сост. П.Н. Долгов,
+# отв. ред. Г.Д. Бурдун - М: Комитет стандартов, мер и измерительных
+# приборов при Совете Министров СССР, Междуведомственная комиссия
+# единой службы времени, 1956 г.
+# This book looks like it would be a helpful resource for the Soviet
+# Union through 1956. Although a copy was in the Scientific Library
+# of Tomsk State University, I have not been able to track down a copy nearby.
+#
+# From Stepan Golosunov (2018-07-21):
+# http://astro.uni-altai.ru/~orion/blog/2015/05/center-reforma-ischisleniya-vremeni-br-na-territorii-sssr-v-1957-godu-center/
+# says that the 1956 decision to change time belts' borders was not
+# implemented as planned in 1956 and the change happened in 1957.
+# There is also the problem that actual time zones were different from
+# the official time belts (and from many time belts' maps) as there were
+# numerous exceptions to application of time belt rules. For example,
+# https://ru.wikipedia.org/wiki/Московское_время#Перемещение_границы_применения_московского_времени_на_восток
+# says that by 1962 there were many regions in the 3rd time belt that
+# were on Moscow time, referring to a 1962 map. By 1989 number of such
+# exceptions grew considerably.
+
# From Tim Parenti (2014-07-06):
# The comments detailing the coverage of each Russian zone are meant to assist
# with maintenance only and represent our best guesses as to which regions
@@ -2460,9 +2489,6 @@
# future stability. ISO 3166-2:RU codes are also listed for first-level
# divisions where available.
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-
-
# From Tim Parenti (2014-07-03):
# Europe/Kaliningrad covers...
# 39 RU-KGD Kaliningrad Oblast
@@ -2730,6 +2756,15 @@
# 34 RU-VGG Volgograd Oblast
# The 1988 transition is from USSR act No. 5 (1988-01-04).
+# From Alexander Fetisov (2018-09-20):
+# Volgograd region in southern Russia (Europe/Volgograd) change
+# timezone from UTC+3 to UTC+4 from 28oct2018.
+# http://sozd.parliament.gov.ru/bill/452878-7
+#
+# From Stepan Golosunov (2018-10-11):
+# The law has been published today on
+# http://publication.pravo.gov.ru/Document/View/0001201810110037
+
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
3:00 - +03 1930 Jun 21
4:00 - +04 1961 Nov 11
@@ -2738,7 +2773,8 @@
4:00 - +04 1992 Mar 29 2:00s
3:00 Russia +03/+04 2011 Mar 27 2:00s
4:00 - +04 2014 Oct 26 2:00s
- 3:00 - +03
+ 3:00 - +03 2018 Oct 28 2:00s
+ 4:00 - +04
# From Paul Eggert (2016-11-11):
# Europe/Saratov covers:
@@ -3427,7 +3463,8 @@
#Rule NatSpain 1937 only - May 22 23:00 1:00 S
#Rule NatSpain 1937 1938 - Oct Sat>=1 24:00s 0 -
#Rule NatSpain 1938 only - Mar 26 23:00 1:00 S
-# The following rules are copied from Morocco from 1967 through 1978.
+# The following rules are copied from Morocco from 1967 through 1978,
+# except with "S" letters.
Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
@@ -3447,6 +3484,7 @@
0:00 1:00 WEST 1918 Oct 7 23:00
0:00 - WET 1924
0:00 Spain WE%sT 1929
+ 0:00 - WET 1967 # Help zishrink.awk.
0:00 SpainAfrica WE%sT 1984 Mar 16
1:00 - CET 1986
1:00 EU CE%sT
@@ -3632,7 +3670,7 @@
# http://www.resmigazete.gov.tr/eskiler/2001/03/20010324.htm#2 - for 2001
# http://www.resmigazete.gov.tr/eskiler/2002/03/20020316.htm#2 - for 2002-2006
# From Paul Eggert (2016-09-25):
-# Prefer the above sources to Shanks & Pottenger for time stamps after 1985.
+# Prefer the above sources to Shanks & Pottenger for timestamps after 1985.
# From Steffen Thorsen (2007-03-09):
# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
@@ -3842,10 +3880,29 @@
# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
+# From Paul Eggert (2018-10-03):
+# As is usual in tzdb, Ukrainian zones use the most common English spellings.
+# For example, tzdb uses Europe/Kiev, as "Kiev" is the most common spelling in
+# English for Ukraine's capital, even though it is certainly wrong as a
+# transliteration of the Ukrainian "Київ". This is similar to tzdb's use of
+# Europe/Prague, which is certainly wrong as a transliteration of the Czech
+# "Praha". ("Kiev" came from old Slavic via Russian to English, and "Prague"
+# came from old Slavic via French to English, so the two cases have something
+# in common.) Admittedly English-language spelling of Ukrainian names is
+# controversial, and some day "Kyiv" may become substantially more popular in
+# English; in the meantime, stick with the traditional English "Kiev" as that
+# means less disruption for our users.
+#
+# Anyway, none of the common English-language spellings (Kiev, Kyiv, Kieff,
+# Kijeff, Kijev, Kiyef, Kiyeff) do justice to the common pronunciation in
+# Ukrainian, namely [ˈkɪjiu̯] (IPA). This pronunciation has nothing like an
+# English "v" or "f", and instead trails off with what an English-speaker
+# would call a demure "oo" sound, and it would would be better anglicized as
+# "Kuiyu". Here's a sound file, if you would like to do as the Kuiyuvians do:
+# https://commons.wikimedia.org/wiki/File:Uk-Київ.ogg
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-# Most of Ukraine since 1970 has been like Kiev.
-# "Kyiv" is the transliteration of the Ukrainian name, but
-# "Kiev" is more common in English.
+# This represents most of Ukraine. See above for the spelling of "Kiev".
Zone Europe/Kiev 2:02:04 - LMT 1880
2:02:04 - KMT 1924 May 2 # Kiev Mean Time
2:00 - EET 1930 Jun 21
--- a/make/data/tzdata/factory Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/factory Fri Nov 02 11:34:56 2018 -0400
@@ -21,11 +21,13 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for noncommittal factory settings
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
-# For distributors who don't want to put time zone specification in
-# their installation procedures. Users that run 'date' will get the
+# For distributors who don't want to specify a timezone in their
+# installation procedures. Users who run 'date' will get the
# time zone abbreviation "-00", indicating that the actual time zone
# is unknown.
--- a/make/data/tzdata/leapseconds Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/leapseconds Fri Nov 02 11:34:56 2018 -0400
@@ -26,21 +26,25 @@
# This file is in the public domain.
# This file is generated automatically from the data in the public-domain
-# leap-seconds.list file, which is copied from:
-# ftp://ftp.nist.gov/pub/time/leap-seconds.list
+# leap-seconds.list file, which can be copied from
+# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
+# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>
+# or <ftp://tycho.usno.navy.mil/pub/ntp/leap-seconds.list>.
# For more about leap-seconds.list, please see
# The NTP Timescale and Leap Seconds
-# https://www.eecis.udel.edu/~mills/leap.html
+# <https://www.eecis.udel.edu/~mills/leap.html>.
# The International Earth Rotation and Reference Systems Service
# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
-# (which measures the true angular orientation of the earth in space); see
-# Levine J. Coordinated Universal Time and the leap second.
+# (which measures the true angular orientation of the earth in space)
+# and publishes leap second data in a copyrighted file
+# <https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat>.
+# See: Levine J. Coordinated Universal Time and the leap second.
# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995
-# http://ieeexplore.ieee.org/document/7909995/
+# <https://ieeexplore.ieee.org/document/7909995>.
# There were no leap seconds before 1972, because the official mechanism
# accounting for the discrepancy between atomic time and the earth's rotation
-# did not exist until the early 1970s.
+# did not exist.
# The correction (+ or -) is made at the given time, so lines
# will typically look like:
@@ -48,10 +52,7 @@
# or
# Leap YEAR MON DAY 23:59:59 - R/S
-# If the leapsecond is Rolling (R) the given time is local time.
-# If the leapsecond is Stationary (S) the given time is UTC.
-
-# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
+# If the leap second is Rolling (R) the given time is local time (unused here).
Leap 1972 Jun 30 23:59:60 + S
Leap 1972 Dec 31 23:59:60 + S
Leap 1973 Dec 31 23:59:60 + S
@@ -80,5 +81,9 @@
Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
-# Updated through IERS Bulletin C55
-# File expires on: 28 December 2018
+# POSIX timestamps for the data in this file:
+#updated 1467936000
+#expires 1561680000
+
+# Updated through IERS Bulletin C56
+# File expires on: 28 June 2019
--- a/make/data/tzdata/northamerica Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/northamerica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for North and Central America and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -71,7 +73,7 @@
#
# Most of the US soon followed suit. See:
# Bartky IR. The adoption of standard time. Technol Cult 1989 Jan;30(1):25-56.
-# http://dx.doi.org/10.2307/3105430
+# https://dx.doi.org/10.2307/3105430
# From Paul Eggert (2005-04-16):
# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
@@ -460,6 +462,19 @@
# western South Dakota, far western Texas (El Paso County, Hudspeth County,
# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
#
+# From Paul Eggert (2018-10-25):
+# On 1921-03-04 federal law placed all of Texas into the central time zone.
+# However, El Paso ignored the law for decades and continued to observe
+# mountain time, on the grounds that that's what they had always done
+# and they weren't about to let the federal government tell them what to do.
+# Eventually the federal government gave in and changed the law on
+# 1970-04-10 to match what El Paso was actually doing. Although
+# that's slightly after our 1970 cutoff, there is no need to create a
+# separate zone for El Paso since they were ignoring the law anyway. See:
+# Long T. El Pasoans were time rebels, fought to stay in Mountain zone.
+# El Paso Times. 2018-10-24 06:40 -06.
+# https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
+#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
Rule Denver 1920 only - Oct lastSun 2:00 0 S
@@ -729,9 +744,7 @@
Zone Pacific/Honolulu -10:31:26 - LMT 1896 Jan 13 12:00
-10:30 - HST 1933 Apr 30 2:00
-10:30 1:00 HDT 1933 May 21 12:00
- -10:30 - HST 1942 Feb 9 2:00
- -10:30 1:00 HDT 1945 Sep 30 2:00
- -10:30 - HST 1947 Jun 8 2:00
+ -10:30 US H%sT 1947 Jun 8 2:00
-10:00 - HST
# Now we turn to US areas that have diverged from the consensus since 1970.
--- a/make/data/tzdata/pacificnew Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/pacificnew Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for proposed US election time (this file is obsolete)
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/make/data/tzdata/southamerica Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/southamerica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for South America and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -415,7 +417,7 @@
# standard time, so let's do that here too. This does not change UTC
# offsets, only tm_isdst and the time zone abbreviations. One minor
# plus is that this silences a zic complaint that there's no POSIX TZ
-# setting for time stamps past 2038.
+# setting for timestamps past 2038.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
@@ -948,6 +950,14 @@
# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
# From Steffen Thorsen (2017-12-20):
# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
+#
+# From Fábio Gomes (2018-10-04):
+# The Brazilian president just announced a new change on this year DST.
+# It was scheduled to start on November 4th and it was changed to November 18th.
+# From Rodrigo Brüning Wessler (2018-10-15):
+# The Brazilian government just announced that the change in DST was
+# canceled.... Maybe the president Michel Temer also woke up one hour
+# earlier today. :)
Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
@@ -1254,6 +1264,24 @@
# they will switch from -03 to -04 one hour after Santiago does that day.
# For now, assume that they will not revert.
+# From Juan Correa (2018-08-13):
+# As of moments ago, the Ministry of Energy in Chile has announced the new
+# schema for DST. ... Announcement in video (in Spanish):
+# https://twitter.com/MinEnergia/status/1029000399129374720
+# From Yonathan Dossow (2018-08-13):
+# The video says "first Saturday of September", we all know it means Sunday at
+# midnight.
+# From Tim Parenti (2018-08-13):
+# Translating the captions on the video at 0:44-0:55, "We want to announce as
+# Government that from 2019, Winter Time will be increased to 5 months, between
+# the first Saturday of April and the first Saturday of September."
+# At 2:08-2:20, "The Magallanes region will maintain its current time, as
+# decided by the citizens during 2017, but our Government will promote a
+# regional dialogue table to gather their opinion on this matter."
+# https://twitter.com/MinEnergia/status/1029009354001973248
+# "We will keep the new time policy unchanged for at least the next 4 years."
+# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
Rule Chile 1928 1932 - Apr 1 0:00 0 -
@@ -1287,8 +1315,10 @@
Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
-Rule Chile 2016 max - May Sun>=9 3:00u 0 -
-Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 -
+Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
+Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
+Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
+Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08. Ignore these.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
--- a/make/data/tzdata/systemv Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/systemv Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for System V rules (this file is obsolete)
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/make/data/tzdata/zone.tab Thu Nov 01 14:36:18 2018 -0400
+++ b/make/data/tzdata/zone.tab Fri Nov 02 11:34:56 2018 -0400
@@ -21,12 +21,12 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-# tz zone descriptions (deprecated version)
+# tzdb timezone descriptions (deprecated version)
#
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
-# From Paul Eggert (2014-07-31):
+# From Paul Eggert (2018-06-27):
# This file is intended as a backward-compatibility aid for older programs.
# New programs should use zone1970.tab. This file is like zone1970.tab (see
# zone1970.tab's comments), but with the following additional restrictions:
@@ -35,13 +35,13 @@
# 2. The first data column contains exactly one country code.
#
# Because of (2), each row stands for an area that is the intersection
-# of a region identified by a country code and of a zone where civil
+# of a region identified by a country code and of a timezone where civil
# clocks have agreed since 1970; this is a narrower definition than
# that of zone1970.tab.
#
-# This table is intended as an aid for users, to help them select time
-# zone data entries appropriate for their practical needs. It is not
-# intended to take or endorse any position on legal or territorial claims.
+# This table is intended as an aid for users, to help them select timezones
+# appropriate for their practical needs. It is not intended to take or
+# endorse any position on legal or territorial claims.
#
#country-
#code coordinates TZ comments
@@ -291,7 +291,7 @@
MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas)
MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
-MO +2214+11335 Asia/Macau
+MO +221150+1133230 Asia/Macau
MP +1512+14545 Pacific/Saipan
MQ +1436-06105 America/Martinique
MR +1806-01557 Africa/Nouakchott
--- a/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -179,10 +179,10 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder = nativeMovConstReg_at(stub);
method_holder->set_data(0);
--- a/src/hotspot/cpu/aarch64/compiledIC_aot_aarch64.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/aarch64/compiledIC_aot_aarch64.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -69,10 +69,10 @@
#ifdef NEVER_CALLED
void CompiledPltStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeLoadGot* method_loader = nativeLoadGot_at(stub);
NativeGotJump* jump = nativeGotJump_at(method_loader->next_instruction_address());
--- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
+#include "code/compiledIC.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_aarch64.hpp"
#include "oops/oop.inline.hpp"
@@ -178,7 +179,8 @@
// during code generation, where no patching lock is needed.
void NativeCall::set_destination_mt_safe(address dest, bool assert_lock) {
assert(!assert_lock ||
- (Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint()),
+ (Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint()) ||
+ CompiledICLocker::is_safe(addr_at(0)),
"concurrent code patching");
ResourceMark rm;
--- a/src/hotspot/cpu/arm/compiledIC_arm.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/arm/compiledIC_arm.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -137,10 +137,10 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder = nativeMovConstReg_at(stub);
NativeJump* jump = nativeJump_at(method_holder->next_instruction_address());
--- a/src/hotspot/cpu/ppc/compiledIC_ppc.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/ppc/compiledIC_ppc.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -197,10 +197,10 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder = nativeMovConstReg_at(stub + IC_pos_in_java_to_interp_stub);
NativeJump* jump = nativeJump_at(method_holder->next_instruction_address());
--- a/src/hotspot/cpu/ppc/nativeInst_ppc.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/ppc/nativeInst_ppc.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.inline.hpp"
+#include "code/compiledIC.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_ppc.hpp"
#include "oops/compressedOops.inline.hpp"
@@ -94,7 +95,8 @@
// during code generation, where no patching lock is needed.
void NativeCall::set_destination_mt_safe(address dest, bool assert_lock) {
assert(!assert_lock ||
- (Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint()),
+ (Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint()) ||
+ CompiledICLocker::is_safe(addr_at(0)),
"concurrent code patching");
ResourceMark rm;
--- a/src/hotspot/cpu/s390/compiledIC_s390.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/s390/compiledIC_s390.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -127,10 +127,10 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder = nativeMovConstReg_at(stub + NativeCall::get_IC_pos_in_java_to_interp_stub());
NativeJump* jump = nativeJump_at(method_holder->next_instruction_address());
--- a/src/hotspot/cpu/sparc/compiledIC_sparc.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/sparc/compiledIC_sparc.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -124,10 +124,10 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeMovConstReg* method_holder = nativeMovConstReg_at(stub);
NativeJump* jump = nativeJump_at(method_holder->next_instruction_address());
--- a/src/hotspot/cpu/sparc/nativeInst_sparc.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/sparc/nativeInst_sparc.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.inline.hpp"
#include "code/codeCache.hpp"
+#include "code/compiledIC.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_sparc.hpp"
#include "oops/oop.inline.hpp"
@@ -189,8 +190,9 @@
//
// Used in the runtime linkage of calls; see class CompiledIC.
void NativeCall::set_destination_mt_safe(address dest) {
- assert(Patching_lock->is_locked() ||
- SafepointSynchronize::is_at_safepoint(), "concurrent code patching");
+ assert((Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint()) ||
+ CompiledICLocker::is_safe(addr_at(0)),
+ "concurrent code patching");
// set_destination uses set_long_at which does the ICache::invalidate
set_destination(dest);
}
--- a/src/hotspot/cpu/x86/compiledIC_aot_x86_64.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/x86/compiledIC_aot_x86_64.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -88,10 +88,10 @@
#ifdef NEVER_CALLED
void CompiledPltStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
+ assert(CompiledICLocker::is_safe(stub), "mt unsafe call");
// Creation also verifies the object.
NativeLoadGot* method_loader = nativeLoadGot_at(stub);
NativeGotJump* jump = nativeGotJump_at(method_loader->next_instruction_address());
--- a/src/hotspot/cpu/x86/compiledIC_x86.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/x86/compiledIC_x86.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -177,7 +177,7 @@
}
void CompiledDirectStaticCall::set_stub_to_clean(static_stub_Relocation* static_stub) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
+ assert(CompiledICLocker::is_safe(static_stub->addr()), "mt unsafe call");
// Reset stub.
address stub = static_stub->addr();
assert(stub != NULL, "stub not found");
--- a/src/hotspot/cpu/x86/nativeInst_x86.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/cpu/x86/nativeInst_x86.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
+#include "code/compiledIC.hpp"
#include "memory/resourceArea.hpp"
#include "nativeInst_x86.hpp"
#include "oops/oop.inline.hpp"
@@ -257,8 +258,8 @@
debug_only(verify());
// Make sure patching code is locked. No two threads can patch at the same
// time but one may be executing this code.
- assert(Patching_lock->is_locked() ||
- SafepointSynchronize::is_at_safepoint(), "concurrent code patching");
+ assert(Patching_lock->is_locked() || SafepointSynchronize::is_at_safepoint() ||
+ CompiledICLocker::is_safe(instruction_address()), "concurrent code patching");
// Both C1 and C2 should now be generating code which aligns the patched address
// to be within a single cache line.
bool is_aligned = ((uintptr_t)displacement_address() + 0) / cache_line_size ==
--- a/src/hotspot/share/aot/aotCodeHeap.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/aot/aotCodeHeap.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -926,7 +926,7 @@
continue; // Skip uninitialized entries.
}
AOTCompiledMethod* aot = _code_to_aot[index]._aot;
- aot->cleanup_inline_caches();
+ aot->cleanup_inline_caches(false);
}
}
--- a/src/hotspot/share/aot/aotCompiledMethod.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/aot/aotCompiledMethod.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -75,10 +75,6 @@
return (address*) ((address)fr->unextended_sp() + _meta->orig_pc_offset());
}
-bool AOTCompiledMethod::do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive) {
- return false;
-}
-
oop AOTCompiledMethod::oop_at(int index) const {
if (index == 0) { // 0 is reserved
return NULL;
@@ -352,7 +348,7 @@
log->print(" aot='%2d'", _heap->dso_id());
}
-void AOTCompiledMethod::log_state_change(oop cause) const {
+void AOTCompiledMethod::log_state_change() const {
if (LogCompilation) {
ResourceMark m;
if (xtty != NULL) {
--- a/src/hotspot/share/aot/aotCompiledMethod.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/aot/aotCompiledMethod.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -193,7 +193,7 @@
virtual int comp_level() const { return CompLevel_aot; }
virtual address verified_entry_point() const { return _code + _meta->verified_entry_offset(); }
virtual void log_identity(xmlStream* stream) const;
- virtual void log_state_change(oop cause = NULL) const;
+ virtual void log_state_change() const;
virtual bool make_entrant() NOT_TIERED({ ShouldNotReachHere(); return false; });
virtual bool make_not_entrant() { return make_not_entrant_helper(not_entrant); }
virtual bool make_not_used() { return make_not_entrant_helper(not_used); }
@@ -277,11 +277,6 @@
CompiledStaticCall* compiledStaticCall_before(address addr) const;
private:
bool is_aot_runtime_stub() const { return _method == NULL; }
-
-protected:
- virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive);
- virtual bool do_unloading_jvmci() { return false; }
-
};
class PltNativeCallWrapper: public NativeCallWrapper {
--- a/src/hotspot/share/classfile/javaClasses.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/classfile/javaClasses.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -912,6 +912,7 @@
static inline oop queue(oop ref);
static inline void set_queue(oop ref, oop value);
static bool is_referent_field(oop obj, ptrdiff_t offset);
+ static inline bool is_final(oop ref);
static inline bool is_phantom(oop ref);
};
--- a/src/hotspot/share/classfile/javaClasses.inline.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/classfile/javaClasses.inline.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -127,6 +127,9 @@
HeapWord* java_lang_ref_Reference::discovered_addr_raw(oop ref) {
return ref->obj_field_addr_raw<HeapWord>(discovered_offset);
}
+bool java_lang_ref_Reference::is_final(oop ref) {
+ return InstanceKlass::cast(ref->klass())->reference_type() == REF_FINAL;
+}
bool java_lang_ref_Reference::is_phantom(oop ref) {
return InstanceKlass::cast(ref->klass())->reference_type() == REF_PHANTOM;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/code/codeBehaviours.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "code/codeBehaviours.hpp"
+#include "runtime/mutexLocker.hpp"
+#include "runtime/safepoint.hpp"
+
+CompiledICProtectionBehaviour* CompiledICProtectionBehaviour::_current = NULL;
+
+bool DefaultICProtectionBehaviour::lock(CompiledMethod* method) {
+ if (CompiledIC_lock->owned_by_self()) {
+ return false;
+ }
+ CompiledIC_lock->lock();
+ return true;
+}
+
+void DefaultICProtectionBehaviour::unlock(CompiledMethod* method) {
+ CompiledIC_lock->unlock();
+}
+
+bool DefaultICProtectionBehaviour::is_safe(CompiledMethod* method) {
+ return SafepointSynchronize::is_at_safepoint() || CompiledIC_lock->owned_by_self();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/code/codeBehaviours.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_CODE_CODEBEHAVIOURS_HPP
+#define SHARE_CODE_CODEBEHAVIOURS_HPP
+
+#include "memory/allocation.hpp"
+
+class CompiledMethod;
+
+class CompiledICProtectionBehaviour {
+ static CompiledICProtectionBehaviour* _current;
+
+public:
+ virtual bool lock(CompiledMethod* method) = 0;
+ virtual void unlock(CompiledMethod* method) = 0;
+ virtual bool is_safe(CompiledMethod* method) = 0;
+
+ static CompiledICProtectionBehaviour* current() { return _current; }
+ static void set_current(CompiledICProtectionBehaviour* current) { _current = current; }
+};
+
+class DefaultICProtectionBehaviour: public CompiledICProtectionBehaviour, public CHeapObj<mtInternal> {
+ virtual bool lock(CompiledMethod* method);
+ virtual void unlock(CompiledMethod* method);
+ virtual bool is_safe(CompiledMethod* method);
+};
+
+#endif // SHARE_CODE_CODEBEHAVIOURS_HPP
--- a/src/hotspot/share/code/codeCache.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/codeCache.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -144,7 +144,6 @@
address CodeCache::_low_bound = 0;
address CodeCache::_high_bound = 0;
int CodeCache::_number_of_nmethods_with_dependencies = 0;
-bool CodeCache::_needs_cache_clean = false;
nmethod* CodeCache::_scavenge_root_nmethods = NULL;
// Initialize arrays of CodeHeap subsets
@@ -683,17 +682,11 @@
// Mark nmethods for unloading if they contain otherwise unreachable oops.
void CodeCache::do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred) {
assert_locked_or_safepoint(CodeCache_lock);
+ UnloadingScope scope(is_alive);
CompiledMethodIterator iter;
while(iter.next_alive()) {
- iter.method()->do_unloading(is_alive);
+ iter.method()->do_unloading(unloading_occurred);
}
-
- // Now that all the unloaded nmethods are known, cleanup caches
- // before CLDG is purged.
- // This is another code cache walk but it is moved from gc_epilogue.
- // G1 does a parallel walk of the nmethods so cleans them up
- // as it goes and doesn't call this.
- do_unloading_nmethod_caches(unloading_occurred);
}
void CodeCache::blobs_do(CodeBlobClosure* f) {
@@ -908,28 +901,14 @@
prune_scavenge_root_nmethods();
}
+uint8_t CodeCache::_unloading_cycle = 1;
-void CodeCache::do_unloading_nmethod_caches(bool class_unloading_occurred) {
- assert_locked_or_safepoint(CodeCache_lock);
- // Even if classes are not unloaded, there may have been some nmethods that are
- // unloaded because oops in them are no longer reachable.
- NOT_DEBUG(if (needs_cache_clean() || class_unloading_occurred)) {
- CompiledMethodIterator iter;
- while(iter.next_alive()) {
- CompiledMethod* cm = iter.method();
- assert(!cm->is_unloaded(), "Tautology");
- DEBUG_ONLY(if (needs_cache_clean() || class_unloading_occurred)) {
- // Clean up both unloaded klasses from nmethods and unloaded nmethods
- // from inline caches.
- cm->unload_nmethod_caches(/*parallel*/false, class_unloading_occurred);
- }
- DEBUG_ONLY(cm->verify());
- DEBUG_ONLY(cm->verify_oop_relocations());
- }
+void CodeCache::increment_unloading_cycle() {
+ if (_unloading_cycle == 1) {
+ _unloading_cycle = 2;
+ } else {
+ _unloading_cycle = 1;
}
-
- set_needs_cache_clean(false);
- verify_icholder_relocations();
}
void CodeCache::verify_oops() {
--- a/src/hotspot/share/code/codeCache.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/codeCache.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -27,6 +27,7 @@
#include "code/codeBlob.hpp"
#include "code/nmethod.hpp"
+#include "gc/shared/gcBehaviours.hpp"
#include "memory/allocation.hpp"
#include "memory/heap.hpp"
#include "oops/instanceKlass.hpp"
@@ -90,8 +91,8 @@
static address _low_bound; // Lower bound of CodeHeap addresses
static address _high_bound; // Upper bound of CodeHeap addresses
static int _number_of_nmethods_with_dependencies; // Total number of nmethods with dependencies
- static bool _needs_cache_clean; // True if inline caches of the nmethods needs to be flushed
static nmethod* _scavenge_root_nmethods; // linked via nm->scavenge_root_link()
+ static uint8_t _unloading_cycle; // Global state for recognizing old nmethods that need to be unloaded
static void mark_scavenge_root_nmethods() PRODUCT_RETURN;
static void verify_perm_nmethods(CodeBlobClosure* f_or_null) PRODUCT_RETURN;
@@ -172,7 +173,24 @@
// to) any unmarked codeBlobs in the cache. Sets "marked_for_unloading"
// to "true" iff some code got unloaded.
// "unloading_occurred" controls whether metadata should be cleaned because of class unloading.
+ class UnloadingScope: StackObj {
+ ClosureIsUnloadingBehaviour _is_unloading_behaviour;
+
+ public:
+ UnloadingScope(BoolObjectClosure* is_alive)
+ : _is_unloading_behaviour(is_alive)
+ {
+ IsUnloadingBehaviour::set_current(&_is_unloading_behaviour);
+ increment_unloading_cycle();
+ }
+
+ ~UnloadingScope() {
+ IsUnloadingBehaviour::set_current(NULL);
+ }
+ };
static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
+ static uint16_t unloading_cycle() { return _unloading_cycle; }
+ static void increment_unloading_cycle();
static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
// Apply f to every live code blob in scavengable nmethods. Prune nmethods
@@ -222,12 +240,8 @@
static double reverse_free_ratio(int code_blob_type);
- static bool needs_cache_clean() { return _needs_cache_clean; }
- static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
-
static void clear_inline_caches(); // clear all inline caches
static void cleanup_inline_caches(); // clean unloaded/zombie nmethods from inline caches
- static void do_unloading_nmethod_caches(bool class_unloading_occurred); // clean all nmethod caches for unloading, including inline caches
// Returns true if an own CodeHeap for the given CodeBlobType is available
static bool heap_available(int code_blob_type);
--- a/src/hotspot/share/code/compiledIC.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/compiledIC.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "classfile/systemDictionary.hpp"
+#include "code/codeBehaviours.hpp"
#include "code/codeCache.hpp"
#include "code/compiledIC.hpp"
#include "code/icBuffer.hpp"
@@ -47,12 +48,35 @@
// Every time a compiled IC is changed or its type is being accessed,
// either the CompiledIC_lock must be set or we must be at a safe point.
+CompiledICLocker::CompiledICLocker(CompiledMethod* method)
+ : _method(method),
+ _behaviour(CompiledICProtectionBehaviour::current()),
+ _locked(_behaviour->lock(_method)){
+}
+
+CompiledICLocker::~CompiledICLocker() {
+ if (_locked) {
+ _behaviour->unlock(_method);
+ }
+}
+
+bool CompiledICLocker::is_safe(CompiledMethod* method) {
+ return CompiledICProtectionBehaviour::current()->is_safe(method);
+}
+
+bool CompiledICLocker::is_safe(address code) {
+ CodeBlob* cb = CodeCache::find_blob_unsafe(code);
+ assert(cb != NULL && cb->is_compiled(), "must be compiled");
+ CompiledMethod* cm = cb->as_compiled_method();
+ return CompiledICProtectionBehaviour::current()->is_safe(cm);
+}
+
//-----------------------------------------------------------------------------
// Low-level access to an inline cache. Private, since they might not be
// MT-safe to use.
void* CompiledIC::cached_value() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
assert (!is_optimized(), "an optimized virtual call does not have a cached metadata");
if (!is_in_transition_state()) {
@@ -69,7 +93,7 @@
void CompiledIC::internal_set_ic_destination(address entry_point, bool is_icstub, void* cache, bool is_icholder) {
assert(entry_point != NULL, "must set legal entry point");
- assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
assert (!is_optimized() || cache == NULL, "an optimized virtual call does not have a cached metadata");
assert (cache == NULL || cache != (Metadata*)badOopVal, "invalid metadata");
@@ -101,11 +125,9 @@
}
{
- MutexLockerEx pl(SafepointSynchronize::is_at_safepoint() ? NULL : Patching_lock, Mutex::_no_safepoint_check_flag);
-#ifdef ASSERT
CodeBlob* cb = CodeCache::find_blob_unsafe(_call->instruction_address());
+ MutexLockerEx pl(CompiledICLocker::is_safe(cb->as_compiled_method()) ? NULL : Patching_lock, Mutex::_no_safepoint_check_flag);
assert(cb != NULL && cb->is_compiled(), "must be compiled");
-#endif
_call->set_destination_mt_safe(entry_point);
}
@@ -130,23 +152,23 @@
address CompiledIC::ic_destination() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
- if (!is_in_transition_state()) {
- return _call->destination();
- } else {
- return InlineCacheBuffer::ic_destination_for((CompiledIC *)this);
- }
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
+ if (!is_in_transition_state()) {
+ return _call->destination();
+ } else {
+ return InlineCacheBuffer::ic_destination_for((CompiledIC *)this);
+ }
}
bool CompiledIC::is_in_transition_state() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
return InlineCacheBuffer::contains(_call->destination());;
}
bool CompiledIC::is_icholder_call() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
return !_is_optimized && is_icholder_entry(ic_destination());
}
@@ -216,7 +238,7 @@
}
bool CompiledIC::set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS) {
- assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
assert(!is_optimized(), "cannot set an optimized virtual call to megamorphic");
assert(is_call_to_compiled() || is_call_to_interpreted(), "going directly to megamorphic?");
@@ -270,7 +292,7 @@
// true if destination is megamorphic stub
bool CompiledIC::is_megamorphic() const {
- assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
assert(!is_optimized(), "an optimized call cannot be megamorphic");
// Cannot rely on cached_value. It is either an interface or a method.
@@ -278,7 +300,7 @@
}
bool CompiledIC::is_call_to_compiled() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
// Use unsafe, since an inline cache might point to a zombie method. However, the zombie
// method is guaranteed to still exist, since we only remove methods after all inline caches
@@ -304,7 +326,7 @@
bool CompiledIC::is_call_to_interpreted() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
// Call to interpreter if destination is either calling to a stub (if it
// is optimized), or calling to an I2C blob
bool is_call_to_interpreted = false;
@@ -329,7 +351,7 @@
}
void CompiledIC::set_to_clean(bool in_use) {
- assert(SafepointSynchronize::is_at_safepoint() || CompiledIC_lock->is_locked() , "MT-unsafe call");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
if (TraceInlineCacheClearing || TraceICs) {
tty->print_cr("IC@" INTPTR_FORMAT ": set to clean", p2i(instruction_address()));
print();
@@ -339,7 +361,7 @@
// A zombie transition will always be safe, since the metadata has already been set to NULL, so
// we only need to patch the destination
- bool safe_transition = _call->is_safe_for_patching() || !in_use || is_optimized() || SafepointSynchronize::is_at_safepoint();
+ bool safe_transition = _call->is_safe_for_patching() || !in_use || is_optimized() || CompiledICLocker::is_safe(_method);
if (safe_transition) {
// Kill any leftover stub we might have too
@@ -363,7 +385,7 @@
}
bool CompiledIC::is_clean() const {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
bool is_clean = false;
address dest = ic_destination();
is_clean = dest == _call->get_resolve_call_stub(is_optimized());
@@ -372,7 +394,7 @@
}
void CompiledIC::set_to_monomorphic(CompiledICInfo& info) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+ assert(CompiledICLocker::is_safe(_method), "mt unsafe call");
// Updating a cache to the wrong entry can cause bugs that are very hard
// to track down - if cache entry gets invalid - we just clean it. In
// this way it is always the same code path that is responsible for
@@ -555,14 +577,9 @@
void CompiledStaticCall::set_to_clean(bool in_use) {
// in_use is unused but needed to match template function in CompiledMethod
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
+ assert(CompiledICLocker::is_safe(instruction_address()), "mt unsafe call");
// Reset call site
MutexLockerEx pl(SafepointSynchronize::is_at_safepoint() ? NULL : Patching_lock, Mutex::_no_safepoint_check_flag);
-#ifdef ASSERT
- CodeBlob* cb = CodeCache::find_blob_unsafe(instruction_address());
- assert(cb != NULL && cb->is_compiled(), "must be compiled");
-#endif
-
set_destination_mt_safe(resolve_call_stub());
// Do not reset stub here: It is too expensive to call find_stub.
@@ -606,7 +623,7 @@
}
void CompiledStaticCall::set(const StaticCallInfo& info) {
- assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "mt unsafe call");
+ assert(CompiledICLocker::is_safe(instruction_address()), "mt unsafe call");
MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
// Updating a cache to the wrong entry can cause bugs that are very hard
// to track down - if cache entry gets invalid - we just clean it. In
--- a/src/hotspot/share/code/compiledIC.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/compiledIC.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, 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
@@ -59,8 +59,22 @@
// transition is made to a stub.
//
class CompiledIC;
+class CompiledICProtectionBehaviour;
+class CompiledMethod;
class ICStub;
+class CompiledICLocker: public StackObj {
+ CompiledMethod* _method;
+ CompiledICProtectionBehaviour* _behaviour;
+ bool _locked;
+
+public:
+ CompiledICLocker(CompiledMethod* method);
+ ~CompiledICLocker();
+ static bool is_safe(CompiledMethod* method);
+ static bool is_safe(address code);
+};
+
class CompiledICInfo : public StackObj {
private:
address _entry; // entry point for call
--- a/src/hotspot/share/code/compiledMethod.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/compiledMethod.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -27,6 +27,8 @@
#include "code/compiledMethod.inline.hpp"
#include "code/scopeDesc.hpp"
#include "code/codeCache.hpp"
+#include "gc/shared/barrierSet.hpp"
+#include "gc/shared/gcBehaviours.hpp"
#include "interpreter/bytecode.inline.hpp"
#include "logging/log.hpp"
#include "logging/logTag.hpp"
@@ -37,16 +39,29 @@
#include "runtime/handles.inline.hpp"
#include "runtime/mutexLocker.hpp"
-CompiledMethod::CompiledMethod(Method* method, const char* name, CompilerType type, const CodeBlobLayout& layout, int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps, bool caller_must_gc_arguments)
+CompiledMethod::CompiledMethod(Method* method, const char* name, CompilerType type, const CodeBlobLayout& layout,
+ int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps,
+ bool caller_must_gc_arguments)
: CodeBlob(name, type, layout, frame_complete_offset, frame_size, oop_maps, caller_must_gc_arguments),
- _mark_for_deoptimization_status(not_marked), _method(method) {
+ _mark_for_deoptimization_status(not_marked),
+ _is_unloading_state(0),
+ _method(method)
+{
init_defaults();
+ clear_unloading_state();
}
-CompiledMethod::CompiledMethod(Method* method, const char* name, CompilerType type, int size, int header_size, CodeBuffer* cb, int frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments)
- : CodeBlob(name, type, CodeBlobLayout((address) this, size, header_size, cb), cb, frame_complete_offset, frame_size, oop_maps, caller_must_gc_arguments),
- _mark_for_deoptimization_status(not_marked), _method(method) {
+CompiledMethod::CompiledMethod(Method* method, const char* name, CompilerType type, int size,
+ int header_size, CodeBuffer* cb, int frame_complete_offset, int frame_size,
+ OopMapSet* oop_maps, bool caller_must_gc_arguments)
+ : CodeBlob(name, type, CodeBlobLayout((address) this, size, header_size, cb), cb,
+ frame_complete_offset, frame_size, oop_maps, caller_must_gc_arguments),
+ _mark_for_deoptimization_status(not_marked),
+ _is_unloading_state(0),
+ _method(method)
+{
init_defaults();
+ clear_unloading_state();
}
void CompiledMethod::init_defaults() {
@@ -54,7 +69,6 @@
_has_method_handle_invokes = 0;
_lazy_critical_native = 0;
_has_wide_vectors = 0;
- _unloading_clock = 0;
}
bool CompiledMethod::is_method_handle_return(address return_pc) {
@@ -324,7 +338,7 @@
// Clear ICStubs of all compiled ICs
void CompiledMethod::clear_ic_stubs() {
- assert_locked_or_safepoint(CompiledIC_lock);
+ assert(CompiledICLocker::is_safe(this), "mt unsafe call");
ResourceMark rm;
RelocIterator iter(this);
while(iter.next()) {
@@ -385,26 +399,6 @@
ic->set_to_clean();
}
-unsigned char CompiledMethod::_global_unloading_clock = 0;
-
-void CompiledMethod::increase_unloading_clock() {
- _global_unloading_clock++;
- if (_global_unloading_clock == 0) {
- // _nmethods are allocated with _unloading_clock == 0,
- // so 0 is never used as a clock value.
- _global_unloading_clock = 1;
- }
-}
-
-void CompiledMethod::set_unloading_clock(unsigned char unloading_clock) {
- OrderAccess::release_store(&_unloading_clock, unloading_clock);
-}
-
-unsigned char CompiledMethod::unloading_clock() {
- return OrderAccess::load_acquire(&_unloading_clock);
-}
-
-
// static_stub_Relocations may have dangling references to
// nmethods so trim them out here. Otherwise it looks like
// compiled code is maintaining a link to dead metadata.
@@ -438,84 +432,30 @@
#endif
}
-// This is called at the end of the strong tracing/marking phase of a
-// GC to unload an nmethod if it contains otherwise unreachable
-// oops.
-
-void CompiledMethod::do_unloading(BoolObjectClosure* is_alive) {
- // Make sure the oop's ready to receive visitors
- assert(!is_zombie() && !is_unloaded(),
- "should not call follow on zombie or unloaded nmethod");
-
- address low_boundary = oops_reloc_begin();
-
- if (do_unloading_oops(low_boundary, is_alive)) {
- return;
- }
-
-#if INCLUDE_JVMCI
- if (do_unloading_jvmci()) {
- return;
- }
-#endif
-
- // Cleanup exception cache and inline caches happens
- // after all the unloaded methods are found.
-}
-
// Clean references to unloaded nmethods at addr from this one, which is not unloaded.
template <class CompiledICorStaticCall>
-static bool clean_if_nmethod_is_unloaded(CompiledICorStaticCall *ic, address addr, CompiledMethod* from,
- bool parallel, bool clean_all) {
+static void clean_if_nmethod_is_unloaded(CompiledICorStaticCall *ic, address addr, CompiledMethod* from,
+ bool clean_all) {
// Ok, to lookup references to zombies here
CodeBlob *cb = CodeCache::find_blob_unsafe(addr);
CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL;
if (nm != NULL) {
- if (parallel && nm->unloading_clock() != CompiledMethod::global_unloading_clock()) {
- // The nmethod has not been processed yet.
- return true;
- }
-
// Clean inline caches pointing to both zombie and not_entrant methods
- if (clean_all || !nm->is_in_use() || (nm->method()->code() != nm)) {
+ if (clean_all || !nm->is_in_use() || nm->is_unloading() || (nm->method()->code() != nm)) {
ic->set_to_clean(from->is_alive());
assert(ic->is_clean(), "nmethod " PTR_FORMAT "not clean %s", p2i(from), from->method()->name_and_sig_as_C_string());
}
}
-
- return false;
-}
-
-static bool clean_if_nmethod_is_unloaded(CompiledIC *ic, CompiledMethod* from,
- bool parallel, bool clean_all = false) {
- return clean_if_nmethod_is_unloaded(ic, ic->ic_destination(), from, parallel, clean_all);
-}
-
-static bool clean_if_nmethod_is_unloaded(CompiledStaticCall *csc, CompiledMethod* from,
- bool parallel, bool clean_all = false) {
- return clean_if_nmethod_is_unloaded(csc, csc->destination(), from, parallel, clean_all);
}
-bool CompiledMethod::do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred) {
- ResourceMark rm;
-
- // Make sure the oop's ready to receive visitors
- assert(!is_zombie() && !is_unloaded(),
- "should not call follow on zombie or unloaded nmethod");
-
- address low_boundary = oops_reloc_begin();
+static void clean_if_nmethod_is_unloaded(CompiledIC *ic, CompiledMethod* from,
+ bool clean_all) {
+ clean_if_nmethod_is_unloaded(ic, ic->ic_destination(), from, clean_all);
+}
- if (do_unloading_oops(low_boundary, is_alive)) {
- return false;
- }
-
-#if INCLUDE_JVMCI
- if (do_unloading_jvmci()) {
- return false;
- }
-#endif
-
- return unload_nmethod_caches(/*parallel*/true, unloading_occurred);
+static void clean_if_nmethod_is_unloaded(CompiledStaticCall *csc, CompiledMethod* from,
+ bool clean_all) {
+ clean_if_nmethod_is_unloaded(csc, csc->destination(), from, clean_all);
}
// Cleans caches in nmethods that point to either classes that are unloaded
@@ -525,29 +465,70 @@
// nmethods are unloaded. Return postponed=true in the parallel case for
// inline caches found that point to nmethods that are not yet visited during
// the do_unloading walk.
-bool CompiledMethod::unload_nmethod_caches(bool parallel, bool unloading_occurred) {
+void CompiledMethod::unload_nmethod_caches(bool unloading_occurred) {
+ ResourceMark rm;
// Exception cache only needs to be called if unloading occurred
if (unloading_occurred) {
clean_exception_cache();
}
- bool postponed = cleanup_inline_caches_impl(parallel, unloading_occurred, /*clean_all*/false);
+ cleanup_inline_caches_impl(unloading_occurred, false);
// All static stubs need to be cleaned.
clean_ic_stubs();
// Check that the metadata embedded in the nmethod is alive
DEBUG_ONLY(metadata_do(check_class));
+}
- return postponed;
+// The IsUnloadingStruct represents a tuple comprising a result of
+// IsUnloadingBehaviour::is_unloading() for a given unloading cycle.
+struct IsUnloadingStruct {
+ unsigned int _is_unloading:1;
+ unsigned int _unloading_cycle:2;
+};
+
+// The IsUnloadingUnion allows treating the tuple of the IsUnloadingStruct
+// like a uint8_t, making it possible to read and write the tuple atomically.
+union IsUnloadingUnion {
+ IsUnloadingStruct _inflated;
+ uint8_t _value;
+};
+
+bool CompiledMethod::is_unloading() {
+ IsUnloadingUnion state;
+ state._value = RawAccess<MO_RELAXED>::load(&_is_unloading_state);
+ if (state._inflated._is_unloading == 1) {
+ return true;
+ }
+ if (state._inflated._unloading_cycle == CodeCache::unloading_cycle()) {
+ return state._inflated._is_unloading == 1;
+ }
+
+ // The IsUnloadingBehaviour is responsible for checking if there are any dead
+ // oops in the CompiledMethod, by calling oops_do on it.
+ bool result = IsUnloadingBehaviour::current()->is_unloading(this);
+
+ state._inflated._unloading_cycle = CodeCache::unloading_cycle();
+ state._inflated._is_unloading = result ? 1 : 0;
+
+ RawAccess<MO_RELAXED>::store(&_is_unloading_state, state._value);
+
+ return result;
+}
+
+void CompiledMethod::clear_unloading_state() {
+ IsUnloadingUnion state;
+ state._inflated._unloading_cycle = CodeCache::unloading_cycle();
+ state._inflated._is_unloading = 0;
+ RawAccess<MO_RELAXED>::store(&_is_unloading_state, state._value);
}
// Called to clean up after class unloading for live nmethods and from the sweeper
// for all methods.
-bool CompiledMethod::cleanup_inline_caches_impl(bool parallel, bool unloading_occurred, bool clean_all) {
- assert_locked_or_safepoint(CompiledIC_lock);
- bool postponed = false;
+void CompiledMethod::cleanup_inline_caches_impl(bool unloading_occurred, bool clean_all) {
+ assert(CompiledICLocker::is_safe(this), "mt unsafe call");
ResourceMark rm;
// Find all calls in an nmethod and clear the ones that point to non-entrant,
@@ -564,19 +545,18 @@
clean_ic_if_metadata_is_dead(CompiledIC_at(&iter));
}
- postponed |= clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, parallel, clean_all);
+ clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, clean_all);
break;
case relocInfo::opt_virtual_call_type:
- postponed |= clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, parallel, clean_all);
+ clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, clean_all);
break;
case relocInfo::static_call_type:
- postponed |= clean_if_nmethod_is_unloaded(compiledStaticCall_at(iter.reloc()), this, parallel, clean_all);
+ clean_if_nmethod_is_unloaded(compiledStaticCall_at(iter.reloc()), this, clean_all);
break;
case relocInfo::oop_type:
- // handled by do_unloading_oops already
break;
case relocInfo::metadata_type:
@@ -586,38 +566,6 @@
break;
}
}
-
- return postponed;
-}
-
-void CompiledMethod::do_unloading_parallel_postponed() {
- ResourceMark rm;
-
- // Make sure the oop's ready to receive visitors
- assert(!is_zombie(),
- "should not call follow on zombie nmethod");
-
- RelocIterator iter(this, oops_reloc_begin());
- while(iter.next()) {
-
- switch (iter.type()) {
-
- case relocInfo::virtual_call_type:
- clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, true);
- break;
-
- case relocInfo::opt_virtual_call_type:
- clean_if_nmethod_is_unloaded(CompiledIC_at(&iter), this, true);
- break;
-
- case relocInfo::static_call_type:
- clean_if_nmethod_is_unloaded(compiledStaticCall_at(iter.reloc()), this, true);
- break;
-
- default:
- break;
- }
- }
}
// Iterating over all nmethods, e.g. with the help of CodeCache::nmethods_do(fun) was found
--- a/src/hotspot/share/code/compiledMethod.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/compiledMethod.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -147,6 +147,9 @@
bool _is_far_code; // Code is far from CodeCache.
// Have to use far call instructions to call it from code in CodeCache.
+
+ volatile uint8_t _is_unloading_state; // Local state used to keep track of whether unloading is happening or not
+
// set during construction
unsigned int _has_unsafe_access:1; // May fault due to unsafe access.
unsigned int _has_method_handle_invokes:1; // Has this method MethodHandle invokes?
@@ -202,7 +205,7 @@
virtual address verified_entry_point() const = 0;
virtual void log_identity(xmlStream* log) const = 0;
- virtual void log_state_change(oop cause = NULL) const = 0;
+ virtual void log_state_change() const = 0;
virtual bool make_not_used() = 0;
virtual bool make_not_entrant() = 0;
virtual bool make_entrant() = 0;
@@ -333,17 +336,13 @@
static address get_deopt_original_pc(const frame* fr);
- // GC unloading support
- // Cleans unloaded klasses and unloaded nmethods in inline caches
- bool unload_nmethod_caches(bool parallel, bool class_unloading_occurred);
-
// Inline cache support for class unloading and nmethod unloading
private:
- bool cleanup_inline_caches_impl(bool parallel, bool unloading_occurred, bool clean_all);
+ void cleanup_inline_caches_impl(bool unloading_occurred, bool clean_all);
public:
- bool cleanup_inline_caches(bool clean_all = false) {
+ void cleanup_inline_caches(bool clean_all) {
// Serial version used by sweeper and whitebox test
- return cleanup_inline_caches_impl(false, false, clean_all);
+ cleanup_inline_caches_impl(false, clean_all);
}
virtual void clear_inline_caches();
@@ -373,53 +372,32 @@
virtual void metadata_do(void f(Metadata*)) = 0;
// GC support
-
- void set_unloading_next(CompiledMethod* next) { _unloading_next = next; }
- CompiledMethod* unloading_next() { return _unloading_next; }
-
protected:
address oops_reloc_begin() const;
+
private:
void static clean_ic_if_metadata_is_dead(CompiledIC *ic);
void clean_ic_stubs();
public:
- virtual void do_unloading(BoolObjectClosure* is_alive);
- // The parallel versions are used by G1.
- virtual bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
- virtual void do_unloading_parallel_postponed();
-
- static unsigned char global_unloading_clock() { return _global_unloading_clock; }
- static void increase_unloading_clock();
+ // GC unloading support
+ // Cleans unloaded klasses and unloaded nmethods in inline caches
- void set_unloading_clock(unsigned char unloading_clock);
- unsigned char unloading_clock();
+ bool is_unloading();
-protected:
- virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive) = 0;
-#if INCLUDE_JVMCI
- virtual bool do_unloading_jvmci() = 0;
-#endif
+ void unload_nmethod_caches(bool class_unloading_occurred);
+ void clear_unloading_state();
+ virtual void do_unloading(bool unloading_occurred) { }
private:
- // GC support to help figure out if an nmethod has been
- // cleaned/unloaded by the current GC.
- static unsigned char _global_unloading_clock;
-
- volatile unsigned char _unloading_clock; // Incremented after GC unloaded/cleaned the nmethod
-
PcDesc* find_pc_desc(address pc, bool approximate) {
return _pc_desc_container.find_pc_desc(pc, approximate, PcDescSearch(code_begin(), scopes_pcs_begin(), scopes_pcs_end()));
}
protected:
- union {
- // Used by G1 to chain nmethods.
- CompiledMethod* _unloading_next;
- // Used by non-G1 GCs to chain nmethods.
- nmethod* _scavenge_root_link; // from CodeCache::scavenge_root_nmethods
- };
+ // Used by some GCs to chain nmethods.
+ nmethod* _scavenge_root_link; // from CodeCache::scavenge_root_nmethods
};
#endif //SHARE_VM_CODE_COMPILEDMETHOD_HPP
--- a/src/hotspot/share/code/icBuffer.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/icBuffer.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -170,8 +170,9 @@
void InlineCacheBuffer::create_transition_stub(CompiledIC *ic, void* cached_value, address entry) {
+ MutexLockerEx ml(CompiledIC_lock->owned_by_self() ? NULL : CompiledIC_lock);
assert(!SafepointSynchronize::is_at_safepoint(), "should not be called during a safepoint");
- assert (CompiledIC_lock->is_locked(), "");
+ assert(CompiledICLocker::is_safe(ic->instruction_address()), "mt unsafe call");
if (TraceICBuffer) {
tty->print_cr(" create transition stub for " INTPTR_FORMAT " destination " INTPTR_FORMAT " cached value " INTPTR_FORMAT,
p2i(ic->instruction_address()), p2i(entry), p2i(cached_value));
@@ -224,7 +225,9 @@
// not safe to free them until them since they might be visible to
// another thread.
void InlineCacheBuffer::queue_for_release(CompiledICHolder* icholder) {
- MutexLockerEx mex(InlineCacheBuffer_lock);
+ MutexLockerEx mex1((CompiledIC_lock->owned_by_self() ||
+ SafepointSynchronize::is_at_safepoint()) ? NULL : CompiledIC_lock);
+ MutexLockerEx mex2(InlineCacheBuffer_lock);
icholder->set_next(_pending_released);
_pending_released = icholder;
_pending_count++;
--- a/src/hotspot/share/code/nmethod.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/nmethod.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -413,7 +413,6 @@
_oops_do_mark_link = NULL;
_jmethod_id = NULL;
_osr_link = NULL;
- _unloading_next = NULL;
_scavenge_root_link = NULL;
_scavenge_root_state = 0;
#if INCLUDE_RTM_OPT
@@ -599,6 +598,7 @@
code_buffer->copy_code_and_locs_to(this);
code_buffer->copy_values_to(this);
+
if (ScavengeRootsInCode) {
Universe::heap()->register_nmethod(this);
}
@@ -757,6 +757,7 @@
code_buffer->copy_values_to(this);
debug_info->copy_to(this);
dependencies->copy_to(this);
+ clear_unloading_state();
if (ScavengeRootsInCode) {
Universe::heap()->register_nmethod(this);
}
@@ -953,7 +954,7 @@
void nmethod::verify_clean_inline_caches() {
- assert_locked_or_safepoint(CompiledIC_lock);
+ assert(CompiledICLocker::is_safe(this), "mt unsafe call");
ResourceMark rm;
RelocIterator iter(this, oops_reloc_begin());
@@ -1025,8 +1026,7 @@
mdo->inc_decompile_count();
}
-void nmethod::make_unloaded(oop cause) {
-
+void nmethod::make_unloaded() {
post_compiled_method_unload();
// This nmethod is being unloaded, make sure that dependencies
@@ -1042,11 +1042,8 @@
LogStream ls(lt);
ls.print("making nmethod " INTPTR_FORMAT
" unloadable, Method*(" INTPTR_FORMAT
- "), cause(" INTPTR_FORMAT ") ",
- p2i(this), p2i(_method), p2i(cause));
- if (cause != NULL) {
- cause->print_value_on(&ls);
- }
+ ") ",
+ p2i(this), p2i(_method));
ls.cr();
}
// Unlink the osr method, so we do not look this up again
@@ -1079,12 +1076,6 @@
// Make the class unloaded - i.e., change state and notify sweeper
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
- if (is_in_use()) {
- // Transitioning directly from live to unloaded -- so
- // we need to force a cache clean-up; remember this
- // for later on.
- CodeCache::set_needs_cache_clean(true);
- }
// Unregister must be done before the state change
Universe::heap()->unregister_nmethod(this);
@@ -1092,7 +1083,7 @@
_state = unloaded;
// Log the unloading.
- log_state_change(cause);
+ log_state_change();
#if INCLUDE_JVMCI
// The method can only be unloaded after the pointer to the installed code
@@ -1116,7 +1107,7 @@
}
}
-void nmethod::log_state_change(oop cause) const {
+void nmethod::log_state_change() const {
if (LogCompilation) {
if (xtty != NULL) {
ttyLocker ttyl; // keep the following output all in one block
@@ -1129,9 +1120,6 @@
(_state == zombie ? " zombie='1'" : ""));
}
log_identity(xtty);
- if (cause != NULL) {
- xtty->print(" cause='%s'", cause->klass()->external_name());
- }
xtty->stamp();
xtty->end_elem();
}
@@ -1380,21 +1368,6 @@
}
}
-
-// If this oop is not live, the nmethod can be unloaded.
-bool nmethod::can_unload(BoolObjectClosure* is_alive, oop* root) {
- assert(root != NULL, "just checking");
- oop obj = *root;
- if (obj == NULL || is_alive->do_object_b(obj)) {
- return false;
- }
-
- // An nmethod might be unloaded simply because one of its constant oops has gone dead.
- // No actual classes need to be unloaded in order for this to occur.
- make_unloaded(obj);
- return true;
-}
-
// ------------------------------------------------------------------
// post_compiled_method_load_event
// new method for install_code() path
@@ -1468,70 +1441,6 @@
set_unload_reported();
}
-bool nmethod::unload_if_dead_at(RelocIterator* iter_at_oop, BoolObjectClosure *is_alive) {
- assert(iter_at_oop->type() == relocInfo::oop_type, "Wrong relocation type");
-
- oop_Relocation* r = iter_at_oop->oop_reloc();
- // Traverse those oops directly embedded in the code.
- // Other oops (oop_index>0) are seen as part of scopes_oops.
- assert(1 == (r->oop_is_immediate()) +
- (r->oop_addr() >= oops_begin() && r->oop_addr() < oops_end()),
- "oop must be found in exactly one place");
- if (r->oop_is_immediate() && r->oop_value() != NULL) {
- // Unload this nmethod if the oop is dead.
- if (can_unload(is_alive, r->oop_addr())) {
- return true;;
- }
- }
-
- return false;
-}
-
-bool nmethod::do_unloading_scopes(BoolObjectClosure* is_alive) {
- // Scopes
- for (oop* p = oops_begin(); p < oops_end(); p++) {
- if (*p == Universe::non_oop_word()) continue; // skip non-oops
- if (can_unload(is_alive, p)) {
- return true;
- }
- }
- return false;
-}
-
-bool nmethod::do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive) {
- // Compiled code
-
- // Prevent extra code cache walk for platforms that don't have immediate oops.
- if (relocInfo::mustIterateImmediateOopsInCode()) {
- RelocIterator iter(this, low_boundary);
- while (iter.next()) {
- if (iter.type() == relocInfo::oop_type) {
- if (unload_if_dead_at(&iter, is_alive)) {
- return true;
- }
- }
- }
- }
-
- return do_unloading_scopes(is_alive);
-}
-
-#if INCLUDE_JVMCI
-bool nmethod::do_unloading_jvmci() {
- if (_jvmci_installed_code != NULL) {
- if (JNIHandles::is_global_weak_cleared(_jvmci_installed_code)) {
- if (_jvmci_installed_code_triggers_invalidation) {
- // The reference to the installed code has been dropped so invalidate
- // this nmethod and allow the sweeper to reclaim it.
- make_not_entrant();
- }
- clear_jvmci_installed_code();
- }
- }
- return false;
-}
-#endif
-
// Iterate over metadata calling this function. Used by RedefineClasses
void nmethod::metadata_do(void f(Metadata*)) {
{
@@ -1579,6 +1488,34 @@
if (_method != NULL) f(_method);
}
+
+// This is called at the end of the strong tracing/marking phase of a
+// GC to unload an nmethod if it contains otherwise unreachable
+// oops.
+
+void nmethod::do_unloading(bool unloading_occurred) {
+ // Make sure the oop's ready to receive visitors
+ assert(!is_zombie() && !is_unloaded(),
+ "should not call follow on zombie or unloaded nmethod");
+
+ if (is_unloading()) {
+ make_unloaded();
+ } else {
+#if INCLUDE_JVMCI
+ if (_jvmci_installed_code != NULL) {
+ if (JNIHandles::is_global_weak_cleared(_jvmci_installed_code)) {
+ if (_jvmci_installed_code_triggers_invalidation) {
+ make_not_entrant();
+ }
+ clear_jvmci_installed_code();
+ }
+ }
+#endif
+
+ unload_nmethod_caches(unloading_occurred);
+ }
+}
+
void nmethod::oops_do(OopClosure* f, bool allow_zombie) {
// make sure the oops ready to receive visitors
assert(allow_zombie || !is_zombie(), "should not call follow on zombie nmethod");
@@ -2115,14 +2052,11 @@
void nmethod::verify_interrupt_point(address call_site) {
// Verify IC only when nmethod installation is finished.
if (!is_not_installed()) {
- Thread *cur = Thread::current();
- if (CompiledIC_lock->owner() == cur ||
- ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) &&
- SafepointSynchronize::is_at_safepoint())) {
+ if (CompiledICLocker::is_safe(this)) {
CompiledIC_at(this, call_site);
CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
} else {
- MutexLocker ml_verify (CompiledIC_lock);
+ CompiledICLocker ml_verify(this);
CompiledIC_at(this, call_site);
}
}
@@ -2819,7 +2753,7 @@
switch (iter.type()) {
case relocInfo::virtual_call_type:
case relocInfo::opt_virtual_call_type: {
- VerifyMutexLocker mc(CompiledIC_lock);
+ CompiledICLocker ml_verify(this);
CompiledIC_at(&iter)->print();
break;
}
--- a/src/hotspot/share/code/nmethod.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/code/nmethod.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -323,6 +323,8 @@
bool is_zombie() const { return _state == zombie; }
bool is_unloaded() const { return _state == unloaded; }
+ virtual void do_unloading(bool unloading_occurred);
+
#if INCLUDE_RTM_OPT
// rtm state accessing and manipulating
RTMState rtm_state() const { return _rtm_state; }
@@ -349,7 +351,7 @@
return _state;
}
- void make_unloaded(oop cause);
+ void make_unloaded();
bool has_dependencies() { return dependencies_size() != 0; }
void flush_dependencies(bool delete_immediately);
@@ -483,20 +485,6 @@
public:
#endif
- protected:
- virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive);
-#if INCLUDE_JVMCI
- // See comment for _jvmci_installed_code_triggers_invalidation field.
- // Returns whether this nmethod was unloaded.
- virtual bool do_unloading_jvmci();
-#endif
-
- private:
- bool do_unloading_scopes(BoolObjectClosure* is_alive);
- // Unload a nmethod if the *root object is dead.
- bool can_unload(BoolObjectClosure* is_alive, oop* root);
- bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive);
-
public:
void oops_do(OopClosure* f) { oops_do(f, false); }
void oops_do(OopClosure* f, bool allow_zombie);
@@ -555,7 +543,7 @@
// Logging
void log_identity(xmlStream* log) const;
void log_new_nmethod() const;
- void log_state_change(oop cause = NULL) const;
+ void log_state_change() const;
// Prints block-level comments, including nmethod specific block labels:
virtual void print_block_comment(outputStream* stream, address block_begin) const {
--- a/src/hotspot/share/compiler/compileBroker.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/compiler/compileBroker.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -740,12 +740,11 @@
}
-JavaThread* CompileBroker::make_thread(jobject thread_handle, CompileQueue* queue,
- AbstractCompiler* comp, bool compiler_thread, TRAPS) {
+JavaThread* CompileBroker::make_thread(jobject thread_handle, CompileQueue* queue, AbstractCompiler* comp, TRAPS) {
JavaThread* thread = NULL;
{
MutexLocker mu(Threads_lock, THREAD);
- if (compiler_thread) {
+ if (comp != NULL) {
if (!InjectCompilerCreationFailure || comp->num_compiler_threads() == 0) {
CompilerCounters* counters = new CompilerCounters();
thread = new CompilerThread(queue, counters);
@@ -794,7 +793,7 @@
java_lang_Thread::set_daemon(JNIHandles::resolve_non_null(thread_handle));
thread->set_threadObj(JNIHandles::resolve_non_null(thread_handle));
- if (compiler_thread) {
+ if (comp != NULL) {
thread->as_CompilerThread()->set_compiler(comp);
}
Threads::add(thread);
@@ -804,7 +803,7 @@
// First release lock before aborting VM.
if (thread == NULL || thread->osthread() == NULL) {
- if (UseDynamicNumberOfCompilerThreads && comp->num_compiler_threads() > 0) {
+ if (UseDynamicNumberOfCompilerThreads && comp != NULL && comp->num_compiler_threads() > 0) {
if (thread != NULL) {
thread->smr_delete();
}
@@ -844,12 +843,13 @@
for (int i = 0; i < _c2_count; i++) {
// Create a name for our thread.
sprintf(name_buffer, "%s CompilerThread%d", _compilers[1]->name(), i);
- jobject thread_handle = JNIHandles::make_global(create_thread_oop(name_buffer, THREAD));
+ Handle thread_oop = create_thread_oop(name_buffer, CHECK);
+ jobject thread_handle = JNIHandles::make_global(thread_oop);
_compiler2_objects[i] = thread_handle;
_compiler2_logs[i] = NULL;
if (!UseDynamicNumberOfCompilerThreads || i == 0) {
- JavaThread *ct = make_thread(thread_handle, _c2_compile_queue, _compilers[1], /* compiler_thread */ true, CHECK);
+ JavaThread *ct = make_thread(thread_handle, _c2_compile_queue, _compilers[1], CHECK);
assert(ct != NULL, "should have been handled for initial thread");
_compilers[1]->set_num_compiler_threads(i + 1);
if (TraceCompilerThreads) {
@@ -863,12 +863,13 @@
for (int i = 0; i < _c1_count; i++) {
// Create a name for our thread.
sprintf(name_buffer, "C1 CompilerThread%d", i);
- jobject thread_handle = JNIHandles::make_global(create_thread_oop(name_buffer, THREAD));
+ Handle thread_oop = create_thread_oop(name_buffer, CHECK);
+ jobject thread_handle = JNIHandles::make_global(thread_oop);
_compiler1_objects[i] = thread_handle;
_compiler1_logs[i] = NULL;
if (!UseDynamicNumberOfCompilerThreads || i == 0) {
- JavaThread *ct = make_thread(thread_handle, _c1_compile_queue, _compilers[0], /* compiler_thread */ true, CHECK);
+ JavaThread *ct = make_thread(thread_handle, _c1_compile_queue, _compilers[0], CHECK);
assert(ct != NULL, "should have been handled for initial thread");
_compilers[0]->set_num_compiler_threads(i + 1);
if (TraceCompilerThreads) {
@@ -885,8 +886,9 @@
if (MethodFlushing) {
// Initialize the sweeper thread
- jobject thread_handle = JNIHandles::make_local(THREAD, create_thread_oop("Sweeper thread", THREAD)());
- make_thread(thread_handle, NULL, NULL, /* compiler_thread */ false, CHECK);
+ Handle thread_oop = create_thread_oop("Sweeper thread", CHECK);
+ jobject thread_handle = JNIHandles::make_local(THREAD, thread_oop());
+ make_thread(thread_handle, NULL, NULL, CHECK);
}
}
@@ -909,7 +911,7 @@
(int)(available_cc_np / (128*K)));
for (int i = old_c2_count; i < new_c2_count; i++) {
- JavaThread *ct = make_thread(compiler2_object(i), _c2_compile_queue, _compilers[1], true, CHECK);
+ JavaThread *ct = make_thread(compiler2_object(i), _c2_compile_queue, _compilers[1], CHECK);
if (ct == NULL) break;
_compilers[1]->set_num_compiler_threads(i + 1);
if (TraceCompilerThreads) {
@@ -929,7 +931,7 @@
(int)(available_cc_p / (128*K)));
for (int i = old_c1_count; i < new_c1_count; i++) {
- JavaThread *ct = make_thread(compiler1_object(i), _c1_compile_queue, _compilers[0], true, CHECK);
+ JavaThread *ct = make_thread(compiler1_object(i), _c1_compile_queue, _compilers[0], CHECK);
if (ct == NULL) break;
_compilers[0]->set_num_compiler_threads(i + 1);
if (TraceCompilerThreads) {
--- a/src/hotspot/share/compiler/compileBroker.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/compiler/compileBroker.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -230,8 +230,7 @@
static volatile int _print_compilation_warning;
static Handle create_thread_oop(const char* name, TRAPS);
- static JavaThread* make_thread(jobject thread_oop, CompileQueue* queue,
- AbstractCompiler* comp, bool compiler_thread, TRAPS);
+ static JavaThread* make_thread(jobject thread_oop, CompileQueue* queue, AbstractCompiler* comp, TRAPS);
static void init_compiler_sweeper_threads();
static void possibly_add_compiler_threads();
static bool compilation_is_complete (const methodHandle& method, int osr_bci, int comp_level);
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -62,6 +62,7 @@
#include "gc/g1/heapRegionSet.inline.hpp"
#include "gc/g1/vm_operations_g1.hpp"
#include "gc/shared/adaptiveSizePolicy.hpp"
+#include "gc/shared/gcBehaviours.hpp"
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/gcId.hpp"
#include "gc/shared/gcLocker.hpp"
--- a/src/hotspot/share/gc/shared/accessBarrierSupport.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/shared/accessBarrierSupport.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -28,8 +28,16 @@
#include "oops/access.hpp"
DecoratorSet AccessBarrierSupport::resolve_unknown_oop_ref_strength(DecoratorSet decorators, oop base, ptrdiff_t offset) {
+ // Note that the referent in a FinalReference is technically not strong.
+ // However, it always behaves like one in practice. The two cases are:
+ // 1) A mutator calls Reference.get(). However, a mutator can only ever
+ // see inactive FinalReferences, whose referents really are strong.
+ // 2) A GC heap walking operation. In this case the GC can see active
+ // FinalReferences, but the GC always wants to follow the referent
+ // as if it was strong.
DecoratorSet ds = decorators & ~ON_UNKNOWN_OOP_REF;
- if (!java_lang_ref_Reference::is_referent_field(base, offset)) {
+ if (!java_lang_ref_Reference::is_referent_field(base, offset) ||
+ java_lang_ref_Reference::is_final(base)) {
ds |= ON_STRONG_OOP_REF;
} else if (java_lang_ref_Reference::is_phantom(base)) {
ds |= ON_PHANTOM_OOP_REF;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcBehaviours.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "code/compiledMethod.hpp"
+#include "code/nmethod.hpp"
+#include "gc/shared/gcBehaviours.hpp"
+
+IsUnloadingBehaviour* IsUnloadingBehaviour::_current = NULL;
+
+class IsCompiledMethodUnloadingOopClosure: public OopClosure {
+ BoolObjectClosure *_cl;
+ bool _is_unloading;
+
+public:
+ IsCompiledMethodUnloadingOopClosure(BoolObjectClosure* cl)
+ : _cl(cl),
+ _is_unloading(false)
+ { }
+
+ virtual void do_oop(oop* p) {
+ if (_is_unloading) {
+ return;
+ }
+ oop obj = *p;
+ if (obj == NULL) {
+ return;
+ }
+ if (!_cl->do_object_b(obj)) {
+ _is_unloading = true;
+ }
+ }
+
+ virtual void do_oop(narrowOop* p) {
+ ShouldNotReachHere();
+ }
+
+ bool is_unloading() const {
+ return _is_unloading;
+ }
+};
+
+bool ClosureIsUnloadingBehaviour::is_unloading(CompiledMethod* cm) const {
+ if (cm->is_nmethod()) {
+ IsCompiledMethodUnloadingOopClosure cl(_cl);
+ static_cast<nmethod*>(cm)->oops_do(&cl);
+ return cl.is_unloading();
+ } else {
+ return false;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/gcBehaviours.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_GC_SHARED_BEHAVIOURS_HPP
+#define SHARE_GC_SHARED_BEHAVIOURS_HPP
+
+#include "memory/iterator.hpp"
+#include "oops/oopsHierarchy.hpp"
+
+// This is the behaviour for checking if a CompiledMethod is unloading
+// or has unloaded due to having phantomly dead oops in it after a GC.
+class IsUnloadingBehaviour {
+ static IsUnloadingBehaviour* _current;
+
+public:
+ virtual bool is_unloading(CompiledMethod* cm) const = 0;
+ static IsUnloadingBehaviour* current() { return _current; }
+ static void set_current(IsUnloadingBehaviour* current) { _current = current; }
+};
+
+class ClosureIsUnloadingBehaviour: public IsUnloadingBehaviour {
+ BoolObjectClosure *const _cl;
+
+public:
+ ClosureIsUnloadingBehaviour(BoolObjectClosure* is_alive)
+ : _cl(is_alive)
+ { }
+
+ virtual bool is_unloading(CompiledMethod* cm) const;
+};
+
+#endif // SHARE_GC_SHARED_BEHAVIOURS_HPP
--- a/src/hotspot/share/gc/shared/parallelCleaning.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/shared/parallelCleaning.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -27,6 +27,7 @@
#include "classfile/stringTable.hpp"
#include "code/codeCache.hpp"
#include "gc/shared/parallelCleaning.hpp"
+#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
#include "logging/log.hpp"
@@ -67,14 +68,11 @@
}
CodeCacheUnloadingTask::CodeCacheUnloadingTask(uint num_workers, BoolObjectClosure* is_alive, bool unloading_occurred) :
- _is_alive(is_alive),
+ _unloading_scope(is_alive),
_unloading_occurred(unloading_occurred),
_num_workers(num_workers),
_first_nmethod(NULL),
- _claimed_nmethod(NULL),
- _postponed_list(NULL),
- _num_entered_barrier(0) {
- CompiledMethod::increase_unloading_clock();
+ _claimed_nmethod(NULL) {
// Get first alive nmethod
CompiledMethodIterator iter = CompiledMethodIterator();
if(iter.next_alive()) {
@@ -86,7 +84,6 @@
CodeCacheUnloadingTask::~CodeCacheUnloadingTask() {
CodeCache::verify_clean_inline_caches();
- CodeCache::set_needs_cache_clean(false);
guarantee(CodeCache::scavenge_root_nmethods() == NULL, "Must be");
CodeCache::verify_icholder_relocations();
@@ -94,31 +91,6 @@
Monitor* CodeCacheUnloadingTask::_lock = new Monitor(Mutex::leaf, "Code Cache Unload lock", false, Monitor::_safepoint_check_never);
-void CodeCacheUnloadingTask::add_to_postponed_list(CompiledMethod* nm) {
- CompiledMethod* old;
- do {
- old = _postponed_list;
- nm->set_unloading_next(old);
- } while (Atomic::cmpxchg(nm, &_postponed_list, old) != old);
-}
-
-void CodeCacheUnloadingTask::clean_nmethod(CompiledMethod* nm) {
- bool postponed = nm->do_unloading_parallel(_is_alive, _unloading_occurred);
-
- if (postponed) {
- // This nmethod referred to an nmethod that has not been cleaned/unloaded yet.
- add_to_postponed_list(nm);
- }
-
- // Mark that this nmethod has been cleaned/unloaded.
- // After this call, it will be safe to ask if this nmethod was unloaded or not.
- nm->set_unloading_clock(CompiledMethod::global_unloading_clock());
-}
-
-void CodeCacheUnloadingTask::clean_nmethod_postponed(CompiledMethod* nm) {
- nm->do_unloading_parallel_postponed();
-}
-
void CodeCacheUnloadingTask::claim_nmethods(CompiledMethod** claimed_nmethods, int *num_claimed_nmethods) {
CompiledMethod* first;
CompiledMethodIterator last;
@@ -143,44 +115,10 @@
} while (Atomic::cmpxchg(last.method(), &_claimed_nmethod, first) != first);
}
-CompiledMethod* CodeCacheUnloadingTask::claim_postponed_nmethod() {
- CompiledMethod* claim;
- CompiledMethod* next;
-
- do {
- claim = _postponed_list;
- if (claim == NULL) {
- return NULL;
- }
-
- next = claim->unloading_next();
-
- } while (Atomic::cmpxchg(next, &_postponed_list, claim) != claim);
-
- return claim;
-}
-
-void CodeCacheUnloadingTask::barrier_mark(uint worker_id) {
- MonitorLockerEx ml(_lock, Mutex::_no_safepoint_check_flag);
- _num_entered_barrier++;
- if (_num_entered_barrier == _num_workers) {
- ml.notify_all();
- }
-}
-
-void CodeCacheUnloadingTask::barrier_wait(uint worker_id) {
- if (_num_entered_barrier < _num_workers) {
- MonitorLockerEx ml(_lock, Mutex::_no_safepoint_check_flag);
- while (_num_entered_barrier < _num_workers) {
- ml.wait(Mutex::_no_safepoint_check_flag, 0, false);
- }
- }
-}
-
-void CodeCacheUnloadingTask::work_first_pass(uint worker_id) {
+void CodeCacheUnloadingTask::work(uint worker_id) {
// The first nmethods is claimed by the first worker.
if (worker_id == 0 && _first_nmethod != NULL) {
- clean_nmethod(_first_nmethod);
+ _first_nmethod->do_unloading(_unloading_occurred);
_first_nmethod = NULL;
}
@@ -195,19 +133,11 @@
}
for (int i = 0; i < num_claimed_nmethods; i++) {
- clean_nmethod(claimed_nmethods[i]);
+ claimed_nmethods[i]->do_unloading(_unloading_occurred);
}
}
}
-void CodeCacheUnloadingTask::work_second_pass(uint worker_id) {
- CompiledMethod* nm;
- // Take care of postponed nmethods.
- while ((nm = claim_postponed_nmethod()) != NULL) {
- clean_nmethod_postponed(nm);
- }
-}
-
KlassCleaningTask::KlassCleaningTask() :
_clean_klass_tree_claimed(0),
_klass_iterator() {
@@ -257,21 +187,11 @@
// The parallel work done by all worker threads.
void ParallelCleaningTask::work(uint worker_id) {
- // Do first pass of code cache cleaning.
- _code_cache_task.work_first_pass(worker_id);
-
- // Let the threads mark that the first pass is done.
- _code_cache_task.barrier_mark(worker_id);
+ // Do first pass of code cache cleaning.
+ _code_cache_task.work(worker_id);
- // Clean the Strings and Symbols.
- _string_task.work(worker_id);
-
- // Wait for all workers to finish the first code cache cleaning pass.
- _code_cache_task.barrier_wait(worker_id);
-
- // Do the second code cache cleaning work, which realize on
- // the liveness information gathered during the first pass.
- _code_cache_task.work_second_pass(worker_id);
+ // Clean the Strings and Symbols.
+ _string_task.work(worker_id);
// Clean all klasses that were not unloaded.
// The weak metadata in klass doesn't need to be
--- a/src/hotspot/share/gc/shared/parallelCleaning.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/shared/parallelCleaning.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -56,46 +56,27 @@
};
class CodeCacheUnloadingTask {
-private:
static Monitor* _lock;
- BoolObjectClosure* const _is_alive;
- const bool _unloading_occurred;
- const uint _num_workers;
+ CodeCache::UnloadingScope _unloading_scope;
+ const bool _unloading_occurred;
+ const uint _num_workers;
// Variables used to claim nmethods.
CompiledMethod* _first_nmethod;
CompiledMethod* volatile _claimed_nmethod;
- // The list of nmethods that need to be processed by the second pass.
- CompiledMethod* volatile _postponed_list;
- volatile uint _num_entered_barrier;
-
public:
CodeCacheUnloadingTask(uint num_workers, BoolObjectClosure* is_alive, bool unloading_occurred);
~CodeCacheUnloadingTask();
private:
- void add_to_postponed_list(CompiledMethod* nm);
- void clean_nmethod(CompiledMethod* nm);
- void clean_nmethod_postponed(CompiledMethod* nm);
+ static const int MaxClaimNmethods = 16;
+ void claim_nmethods(CompiledMethod** claimed_nmethods, int *num_claimed_nmethods);
- static const int MaxClaimNmethods = 16;
-
- void claim_nmethods(CompiledMethod** claimed_nmethods, int *num_claimed_nmethods);
- CompiledMethod* claim_postponed_nmethod();
public:
- // Mark that we're done with the first pass of nmethod cleaning.
- void barrier_mark(uint worker_id);
-
- // See if we have to wait for the other workers to
- // finish their first-pass nmethod cleaning work.
- void barrier_wait(uint worker_id);
-
- // Cleaning and unloading of nmethods. Some work has to be postponed
- // to the second pass, when we know which nmethods survive.
- void work_first_pass(uint worker_id);
- void work_second_pass(uint worker_id);
+ // Cleaning and unloading of nmethods.
+ void work(uint worker_id);
};
--- a/src/hotspot/share/gc/z/zAddress.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zAddress.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -37,6 +37,7 @@
static bool is_weak_good_or_null(uintptr_t value);
static bool is_marked(uintptr_t value);
static bool is_finalizable(uintptr_t value);
+ static bool is_finalizable_good(uintptr_t value);
static bool is_remapped(uintptr_t value);
static uintptr_t address(uintptr_t value);
--- a/src/hotspot/share/gc/z/zAddress.inline.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zAddress.inline.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -74,6 +74,10 @@
return value & ZAddressMetadataFinalizable;
}
+inline bool ZAddress::is_finalizable_good(uintptr_t value) {
+ return is_finalizable(value) && is_good(value ^ ZAddressMetadataFinalizable);
+}
+
inline bool ZAddress::is_remapped(uintptr_t value) {
return value & ZAddressMetadataRemapped;
}
--- a/src/hotspot/share/gc/z/zDriver.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zDriver.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -33,6 +33,7 @@
#include "gc/z/zServiceability.hpp"
#include "gc/z/zStat.hpp"
#include "logging/log.hpp"
+#include "memory/universe.hpp"
#include "runtime/vm_operations.hpp"
#include "runtime/vmThread.hpp"
@@ -44,6 +45,7 @@
static const ZStatPhaseConcurrent ZPhaseConcurrentProcessNonStrongReferences("Concurrent Process Non-Strong References");
static const ZStatPhaseConcurrent ZPhaseConcurrentResetRelocationSet("Concurrent Reset Relocation Set");
static const ZStatPhaseConcurrent ZPhaseConcurrentDestroyDetachedPages("Concurrent Destroy Detached Pages");
+static const ZStatPhasePause ZPhasePauseVerify("Pause Verify");
static const ZStatPhaseConcurrent ZPhaseConcurrentSelectRelocationSet("Concurrent Select Relocation Set");
static const ZStatPhaseConcurrent ZPhaseConcurrentPrepareRelocationSet("Concurrent Prepare Relocation Set");
static const ZStatPhasePause ZPhasePauseRelocateStart("Pause Relocate Start");
@@ -210,6 +212,19 @@
}
};
+class ZVerifyClosure : public ZOperationClosure {
+public:
+ virtual const char* name() const {
+ return "ZVerify";
+ }
+
+ virtual bool do_operation() {
+ ZStatTimer timer(ZPhasePauseVerify);
+ Universe::verify();
+ return true;
+ }
+};
+
class ZRelocateStartClosure : public ZOperationClosure {
public:
virtual const char* name() const {
@@ -367,25 +382,31 @@
ZHeap::heap()->destroy_detached_pages();
}
- // Phase 7: Concurrent Select Relocation Set
+ // Phase 7: Pause Verify
+ if (VerifyBeforeGC || VerifyDuringGC || VerifyAfterGC) {
+ ZVerifyClosure cl;
+ vm_operation(&cl);
+ }
+
+ // Phase 8: Concurrent Select Relocation Set
{
ZStatTimer timer(ZPhaseConcurrentSelectRelocationSet);
ZHeap::heap()->select_relocation_set();
}
- // Phase 8: Concurrent Prepare Relocation Set
+ // Phase 9: Concurrent Prepare Relocation Set
{
ZStatTimer timer(ZPhaseConcurrentPrepareRelocationSet);
ZHeap::heap()->prepare_relocation_set();
}
- // Phase 9: Pause Relocate Start
+ // Phase 10: Pause Relocate Start
{
ZRelocateStartClosure cl;
vm_operation(&cl);
}
- // Phase 10: Concurrent Relocate
+ // Phase 11: Concurrent Relocate
{
ZStatTimer timer(ZPhaseConcurrentRelocated);
ZHeap::heap()->relocate();
--- a/src/hotspot/share/gc/z/zHeap.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zHeap.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -366,11 +366,6 @@
// Process weak roots
_weak_roots_processor.process_weak_roots();
- // Verification
- if (VerifyBeforeGC || VerifyDuringGC || VerifyAfterGC) {
- Universe::verify();
- }
-
return true;
}
@@ -570,7 +565,7 @@
_weak_roots() {}
virtual void work() {
- ZVerifyRootOopClosure cl;
+ ZVerifyOopClosure cl;
_strong_roots.oops_do(&cl);
_weak_roots.oops_do(&cl);
}
--- a/src/hotspot/share/gc/z/zOop.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zOop.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -33,7 +33,7 @@
static uintptr_t to_address(oop o);
static bool is_good(oop o);
- static bool is_good_or_null(oop o);
+ static bool is_finalizable_good(oop o);
static oop good(oop);
};
--- a/src/hotspot/share/gc/z/zOop.inline.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zOop.inline.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -40,8 +40,8 @@
return ZAddress::is_good(to_address(o));
}
-inline bool ZOop::is_good_or_null(oop o) {
- return ZAddress::is_good_or_null(to_address(o));
+inline bool ZOop::is_finalizable_good(oop o) {
+ return ZAddress::is_finalizable_good(to_address(o));
}
inline oop ZOop::good(oop o) {
--- a/src/hotspot/share/gc/z/zOopClosures.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zOopClosures.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -28,54 +28,31 @@
#include "memory/iterator.inline.hpp"
#include "oops/access.inline.hpp"
#include "oops/oop.inline.hpp"
+#include "runtime/safepoint.hpp"
#include "utilities/debug.hpp"
#include "utilities/globalDefinitions.hpp"
-static void z_verify_loaded_object(const oop* p, const oop obj) {
- guarantee(ZOop::is_good_or_null(obj),
- "Bad oop " PTR_FORMAT " found at " PTR_FORMAT ", expected " PTR_FORMAT,
- p2i(obj), p2i(p), p2i(ZOop::good(obj)));
- guarantee(oopDesc::is_oop_or_null(obj),
- "Bad object " PTR_FORMAT " found at " PTR_FORMAT,
- p2i(obj), p2i(p));
-}
+void ZVerifyOopClosure::do_oop(oop* p) {
+ guarantee(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint");
+ guarantee(ZGlobalPhase == ZPhaseMarkCompleted, "Invalid phase");
+ guarantee(!ZResurrection::is_blocked(), "Invalid phase");
-OopIterateClosure::ReferenceIterationMode ZVerifyHeapOopClosure::reference_iteration_mode() {
- // Don't visit the j.l.Reference.referents for this verification closure,
- // since they are cleaned concurrently after ZHeap::mark_end(), and can
- // therefore not be verified at this point.
- return DO_FIELDS_EXCEPT_REFERENT;
+ const oop o = RawAccess<>::oop_load(p);
+ if (o != NULL) {
+ guarantee(ZOop::is_good(o) || ZOop::is_finalizable_good(o),
+ "Bad oop " PTR_FORMAT " found at " PTR_FORMAT ", expected " PTR_FORMAT,
+ p2i(o), p2i(p), p2i(ZOop::good(o)));
+ guarantee(oopDesc::is_oop(ZOop::good(o)),
+ "Bad object " PTR_FORMAT " found at " PTR_FORMAT,
+ p2i(o), p2i(p));
+ }
}
-void ZVerifyHeapOopClosure::do_oop(oop* p) {
- guarantee(ZHeap::heap()->is_in((uintptr_t)p), "oop* " PTR_FORMAT " not in heap", p2i(p));
-
- const oop obj = RawAccess<>::oop_load(p);
- z_verify_loaded_object(p, obj);
-}
-
-void ZVerifyHeapOopClosure::do_oop(narrowOop* p) {
- ShouldNotReachHere();
-}
-
-ZVerifyRootOopClosure::ZVerifyRootOopClosure() {
- // This closure should only be used from ZHeap::mark_end(),
- // when all roots should have been fixed by the fixup_partial_loads().
- guarantee(ZGlobalPhase == ZPhaseMarkCompleted, "Invalid phase");
-}
-
-void ZVerifyRootOopClosure::do_oop(oop* p) {
- guarantee(!ZHeap::heap()->is_in((uintptr_t)p), "oop* " PTR_FORMAT " in heap", p2i(p));
-
- const oop obj = RawAccess<>::oop_load(p);
- z_verify_loaded_object(p, obj);
-}
-
-void ZVerifyRootOopClosure::do_oop(narrowOop* p) {
+void ZVerifyOopClosure::do_oop(narrowOop* p) {
ShouldNotReachHere();
}
void ZVerifyObjectClosure::do_object(oop o) {
- ZVerifyHeapOopClosure cl;
+ ZVerifyOopClosure cl;
o->oop_iterate(&cl);
}
--- a/src/hotspot/share/gc/z/zOopClosures.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/gc/z/zOopClosures.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -71,29 +71,23 @@
virtual void do_oop(narrowOop* p);
};
-class ZVerifyHeapOopClosure : public BasicOopIterateClosure {
+class ZVerifyOopClosure : public ZRootsIteratorClosure, public BasicOopIterateClosure {
public:
- virtual ReferenceIterationMode reference_iteration_mode();
-
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
+ virtual ReferenceIterationMode reference_iteration_mode() {
+ return DO_FIELDS;
+ }
+
#ifdef ASSERT
- // Verification handled by the closure itself.
+ // Verification handled by the closure itself
virtual bool should_verify_oops() {
return false;
}
#endif
};
-class ZVerifyRootOopClosure : public ZRootsIteratorClosure {
-public:
- ZVerifyRootOopClosure();
-
- virtual void do_oop(oop* p);
- virtual void do_oop(narrowOop* p);
-};
-
class ZVerifyObjectClosure : public ObjectClosure {
public:
virtual void do_object(oop o);
--- a/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -209,6 +209,7 @@
return map;
}
+#if INCLUDE_AOT
AOTOopRecorder::AOTOopRecorder(Arena* arena, bool deduplicate) : OopRecorder(arena, deduplicate) {
_meta_refs = new GrowableArray<jobject>();
}
@@ -268,6 +269,7 @@
assert(index == _meta_refs->length(), "must be last");
_meta_refs->append(o);
}
+#endif // INCLUDE_AOT
void* CodeInstaller::record_metadata_reference(CodeSection* section, address dest, Handle constant, TRAPS) {
/*
@@ -555,6 +557,7 @@
}
}
+#if INCLUDE_AOT
RelocBuffer::~RelocBuffer() {
if (_buffer != NULL) {
FREE_C_HEAP_ARRAY(char, _buffer);
@@ -593,9 +596,7 @@
// Get instructions and constants CodeSections early because we need it.
_instructions = buffer.insts();
_constants = buffer.consts();
-#if INCLUDE_AOT
buffer.set_immutable_PIC(_immutable_pic_compilation);
-#endif
initialize_fields(target(), JNIHandles::resolve(compiled_code_obj), CHECK_OK);
JVMCIEnv::CodeInstallResult result = initialize_buffer(buffer, false, CHECK_OK);
@@ -618,6 +619,7 @@
reloc_buffer->set_size(size);
return JVMCIEnv::ok;
}
+#endif // INCLUDE_AOT
// constructor used to create a method
JVMCIEnv::CodeInstallResult CodeInstaller::install(JVMCICompiler* compiler, Handle target, Handle compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS) {
@@ -769,6 +771,7 @@
}
}
}
+#if INCLUDE_AOT
if (UseAOT && site->is_a(site_Call::klass())) {
oop target = site_Call::target(site);
InstanceKlass* target_klass = InstanceKlass::cast(target->klass());
@@ -777,6 +780,7 @@
aot_call_stubs++;
}
}
+#endif
}
}
int size = static_call_stubs * CompiledStaticCall::to_interp_stub_size();
@@ -1278,10 +1282,12 @@
if (!_immutable_pic_compilation) {
pd_patch_MetaspaceConstant(pc_offset, constant, CHECK);
}
+#if INCLUDE_AOT
} else if (constant->is_a(HotSpotSentinelConstant::klass())) {
if (!_immutable_pic_compilation) {
JVMCI_ERROR("sentinel constant not supported for normal compiles: %s", constant->klass()->signature_name());
}
+#endif
} else {
JVMCI_ERROR("unknown constant type in data patch: %s", constant->klass()->signature_name());
}
--- a/src/hotspot/share/jvmci/jvmciCodeInstaller.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCodeInstaller.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -28,6 +28,7 @@
#include "jvmci/jvmciEnv.hpp"
#include "code/nativeInst.hpp"
+#if INCLUDE_AOT
class RelocBuffer : public StackObj {
enum { stack_size = 1024 };
public:
@@ -106,6 +107,7 @@
AOTOopRecorder* _oop_recorder;
ExceptionHandlerTable* _exception_table;
};
+#endif // INCLUDE_AOT
/*
* This class handles the conversion from a InstalledCode to a CodeBlob or an nmethod.
@@ -202,7 +204,9 @@
CodeInstaller(bool immutable_pic_compilation) : _arena(mtCompiler), _immutable_pic_compilation(immutable_pic_compilation) {}
+#if INCLUDE_AOT
JVMCIEnv::CodeInstallResult gather_metadata(Handle target, Handle compiled_code, CodeMetadata& metadata, TRAPS);
+#endif
JVMCIEnv::CodeInstallResult install(JVMCICompiler* compiler, Handle target, Handle compiled_code, CodeBlob*& cb, Handle installed_code, Handle speculation_log, TRAPS);
static address runtime_call_target_address(oop runtime_call);
--- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -714,6 +714,7 @@
C2V_END
C2V_VMENTRY(jint, getMetadata, (JNIEnv *jniEnv, jobject, jobject target, jobject compiled_code, jobject metadata))
+#if INCLUDE_AOT
ResourceMark rm;
HandleMark hm;
@@ -783,6 +784,9 @@
HotSpotMetaData::set_exceptionBytes(metadata_handle, exceptionArrayOop());
return result;
+#else
+ THROW_MSG_0(vmSymbols::java_lang_InternalError(), "unimplemented");
+#endif
C2V_END
C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
@@ -1426,12 +1430,16 @@
C2V_END
C2V_VMENTRY(jlong, getFingerprint, (JNIEnv*, jobject, jlong metaspace_klass))
+#if INCLUDE_AOT
Klass *k = CompilerToVM::asKlass(metaspace_klass);
if (k->is_instance_klass()) {
return InstanceKlass::cast(k)->get_stored_fingerprint();
} else {
return 0;
}
+#else
+ THROW_MSG_0(vmSymbols::java_lang_InternalError(), "unimplemented");
+#endif
C2V_END
C2V_VMENTRY(jobject, getHostClass, (JNIEnv*, jobject, jobject jvmci_type))
--- a/src/hotspot/share/memory/universe.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/memory/universe.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -30,6 +30,7 @@
#include "classfile/stringTable.hpp"
#include "classfile/systemDictionary.hpp"
#include "classfile/vmSymbols.hpp"
+#include "code/codeBehaviours.hpp"
#include "code/codeCache.hpp"
#include "code/dependencies.hpp"
#include "gc/shared/collectedHeap.inline.hpp"
@@ -60,9 +61,9 @@
#include "prims/resolvedMethodTable.hpp"
#include "runtime/arguments.hpp"
#include "runtime/atomic.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/flags/flagSetting.hpp"
#include "runtime/flags/jvmFlagConstraintList.hpp"
-#include "runtime/deoptimization.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/init.hpp"
#include "runtime/java.hpp"
@@ -640,6 +641,10 @@
return (void*)_non_oop_bits;
}
+static void initialize_global_behaviours() {
+ CompiledICProtectionBehaviour::set_current(new DefaultICProtectionBehaviour());
+}
+
jint universe_init() {
assert(!Universe::_fully_initialized, "called after initialize_vtables");
guarantee(1 << LogHeapWordSize == sizeof(HeapWord),
@@ -652,6 +657,8 @@
JavaClasses::compute_hard_coded_offsets();
+ initialize_global_behaviours();
+
jint status = Universe::initialize_heap();
if (status != JNI_OK) {
return status;
--- a/src/hotspot/share/runtime/mutexLocker.hpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/runtime/mutexLocker.hpp Fri Nov 02 11:34:56 2018 -0400
@@ -346,38 +346,4 @@
}
};
-#ifndef PRODUCT
-//
-// A special MutexLocker that allows:
-// - reentrant locking
-// - locking out of order
-//
-// Only to be used for verify code, where we can relax out dead-lock
-// detection code a bit (unsafe, but probably ok). This code is NEVER to
-// be included in a product version.
-//
-class VerifyMutexLocker: StackObj {
- private:
- Monitor * _mutex;
- bool _reentrant;
- public:
- VerifyMutexLocker(Monitor * mutex) {
- _mutex = mutex;
- _reentrant = mutex->owned_by_self();
- if (!_reentrant) {
- // We temp. disable strict safepoint checking, while we require the lock
- FlagSetting fs(StrictSafepointChecks, false);
- _mutex->lock();
- }
- }
-
- ~VerifyMutexLocker() {
- if (!_reentrant) {
- _mutex->unlock();
- }
- }
-};
-
-#endif
-
#endif // SHARE_VM_RUNTIME_MUTEXLOCKER_HPP
--- a/src/hotspot/share/runtime/sharedRuntime.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -1351,7 +1351,7 @@
// grab lock, check for deoptimization and potentially patch caller
{
- MutexLocker ml_patch(CompiledIC_lock);
+ CompiledICLocker ml(caller_nm);
// Lock blocks for safepoint during which both nmethods can change state.
@@ -1382,7 +1382,7 @@
}
}
- } // unlock CompiledIC_lock
+ } // unlock CompiledICLocker
return callee_method;
}
@@ -1585,11 +1585,13 @@
JvmtiDynamicCodeEventCollector event_collector;
// Update inline cache to megamorphic. Skip update if we are called from interpreted.
- { MutexLocker ml_patch (CompiledIC_lock);
+ {
RegisterMap reg_map(thread, false);
frame caller_frame = thread->last_frame().sender(®_map);
CodeBlob* cb = caller_frame.cb();
CompiledMethod* caller_nm = cb->as_compiled_method_or_null();
+ CompiledICLocker ml(caller_nm);
+
if (cb->is_compiled()) {
CompiledIC* inline_cache = CompiledIC_before(((CompiledMethod*)cb), caller_frame.pc());
bool should_be_mono = false;
@@ -1647,7 +1649,7 @@
} else {
fatal("Unimplemented");
}
- } // Release CompiledIC_lock
+ } // Release CompiledICLocker
return callee_method;
}
@@ -1731,8 +1733,7 @@
// to a wrong method). It should not be performance critical, since the
// resolve is only done once.
- bool is_nmethod = caller_nm->is_nmethod();
- MutexLocker ml(CompiledIC_lock);
+ CompiledICLocker ml(caller_nm);
if (is_static_call) {
CompiledStaticCall* ssc = caller_nm->compiledStaticCall_at(call_addr);
ssc->set_to_clean();
--- a/src/hotspot/share/runtime/sweeper.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/runtime/sweeper.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -387,13 +387,13 @@
* Handle a safepoint request
*/
void NMethodSweeper::handle_safepoint_request() {
- if (SafepointSynchronize::is_synchronizing()) {
+ JavaThread* thread = JavaThread::current();
+ if (SafepointMechanism::poll(thread)) {
if (PrintMethodFlushing && Verbose) {
tty->print_cr("### Sweep at %d out of %d, yielding to safepoint", _seen, CodeCache::nmethod_count());
}
MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
- JavaThread* thread = JavaThread::current();
ThreadBlockInVM tbivm(thread);
thread->java_suspend_self();
}
@@ -673,8 +673,8 @@
// Clean up any CompiledICHolders
{
ResourceMark rm;
- MutexLocker ml_patch(CompiledIC_lock);
RelocIterator iter(nm);
+ CompiledICLocker ml(nm);
while (iter.next()) {
if (iter.type() == relocInfo::virtual_call_type) {
CompiledIC::cleanup_call_site(iter.virtual_call_reloc(), nm);
@@ -701,8 +701,8 @@
// But still remember to clean-up inline caches for alive nmethods
if (cm->is_alive()) {
// Clean inline caches that point to zombie/non-entrant/unloaded nmethods
- MutexLocker cl(CompiledIC_lock);
- cm->cleanup_inline_caches();
+ CompiledICLocker ml(cm);
+ cm->cleanup_inline_caches(false);
SWEEP(cm);
}
return result;
@@ -723,7 +723,7 @@
// Clear ICStubs to prevent back patching stubs of zombie or flushed
// nmethods during the next safepoint (see ICStub::finalize).
{
- MutexLocker cl(CompiledIC_lock);
+ CompiledICLocker ml(cm);
cm->clear_ic_stubs();
}
// Code cache state change is tracked in make_zombie()
@@ -747,8 +747,8 @@
}
} else {
// Still alive, clean up its inline caches
- MutexLocker cl(CompiledIC_lock);
- cm->cleanup_inline_caches();
+ CompiledICLocker ml(cm);
+ cm->cleanup_inline_caches(false);
SWEEP(cm);
}
} else if (cm->is_unloaded()) {
@@ -757,8 +757,8 @@
{
// Clean ICs of unloaded nmethods as well because they may reference other
// unloaded nmethods that may be flushed earlier in the sweeper cycle.
- MutexLocker cl(CompiledIC_lock);
- cm->cleanup_inline_caches();
+ CompiledICLocker ml(cm);
+ cm->cleanup_inline_caches(false);
}
if (cm->is_osr_method()) {
SWEEP(cm);
@@ -778,8 +778,8 @@
possibly_flush((nmethod*)cm);
}
// Clean inline caches that point to zombie/non-entrant/unloaded nmethods
- MutexLocker cl(CompiledIC_lock);
- cm->cleanup_inline_caches();
+ CompiledICLocker ml(cm);
+ cm->cleanup_inline_caches(false);
SWEEP(cm);
}
return result;
--- a/src/hotspot/share/runtime/thread.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/runtime/thread.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -4286,7 +4286,7 @@
// queue until after the vm thread is dead. After this point,
// we'll never emerge out of the safepoint before the VM exits.
- MutexLocker ml(Heap_lock);
+ MutexLockerEx ml(Heap_lock, Mutex::_no_safepoint_check_flag);
VMThread::wait_for_vm_thread_exit();
assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint");
--- a/src/hotspot/share/runtime/vmThread.cpp Thu Nov 01 14:36:18 2018 -0400
+++ b/src/hotspot/share/runtime/vmThread.cpp Fri Nov 02 11:34:56 2018 -0400
@@ -319,7 +319,9 @@
// Notify the VMThread that the last non-daemon JavaThread has terminated,
// and wait until operation is performed.
void VMThread::wait_for_vm_thread_exit() {
- { MutexLocker mu(VMOperationQueue_lock);
+ assert(Thread::current()->is_Java_thread(), "Should be a JavaThread");
+ assert(((JavaThread*)Thread::current())->is_terminated(), "Should be terminated");
+ { MutexLockerEx mu(VMOperationQueue_lock, Mutex::_no_safepoint_check_flag);
_should_terminate = true;
VMOperationQueue_lock->notify();
}
--- a/src/java.base/share/classes/java/lang/Character.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/lang/Character.java Fri Nov 02 11:34:56 2018 -0400
@@ -55,6 +55,14 @@
* <ul>
* <li><a href="http://www.unicode.org">http://www.unicode.org</a>
* </ul>
+ * <p>
+ * The code point, U+32FF, is reserved by the Unicode Consortium
+ * to represent the Japanese square character for the new era that begins
+ * May 2019. Relevant methods in the Character class return the same
+ * properties as for the existing Japanese era characters (e.g., U+337E for
+ * "Meizi"). For the details of the code point, refer to
+ * <a href="http://blog.unicode.org/2018/09/new-japanese-era.html">
+ * http://blog.unicode.org/2018/09/new-japanese-era.html</a>.
*
* <h3><a id="unicode">Unicode Character Representations</a></h3>
*
--- a/src/java.base/share/classes/java/lang/Class.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/lang/Class.java Fri Nov 02 11:34:56 2018 -0400
@@ -59,6 +59,8 @@
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
+import java.util.stream.Stream;
+import java.util.stream.Collectors;
import jdk.internal.HotSpotIntrinsicCandidate;
import jdk.internal.loader.BootLoader;
@@ -200,7 +202,8 @@
* and {@code class}, {@code enum}, {@code interface}, or
* <code>@</code>{@code interface}, as appropriate), followed
* by the type's name, followed by an angle-bracketed
- * comma-separated list of the type's type parameters, if any.
+ * comma-separated list of the type's type parameters, if any,
+ * including informative bounds on the type parameters, if any.
*
* A space is used to separate modifiers from one another and to
* separate any modifiers from the kind of type. The modifiers
@@ -262,11 +265,8 @@
TypeVariable<?>[] typeparms = component.getTypeParameters();
if (typeparms.length > 0) {
- StringJoiner sj = new StringJoiner(",", "<", ">");
- for(TypeVariable<?> typeparm: typeparms) {
- sj.add(typeparm.getTypeName());
- }
- sb.append(sj.toString());
+ sb.append(Stream.of(typeparms).map(Class::typeVarBounds).
+ collect(Collectors.joining(",", "<", ">")));
}
for (int i = 0; i < arrayDepth; i++)
@@ -276,6 +276,17 @@
}
}
+ static String typeVarBounds(TypeVariable<?> typeVar) {
+ Type[] bounds = typeVar.getBounds();
+ if (bounds.length == 1 && bounds[0].equals(Object.class)) {
+ return typeVar.getName();
+ } else {
+ return typeVar.getName() + " extends " +
+ Stream.of(bounds).map(Type::getTypeName).
+ collect(Collectors.joining(" & "));
+ }
+ }
+
/**
* Returns the {@code Class} object associated with the class or
* interface with the given string name. Invoking this method is
@@ -3399,14 +3410,14 @@
* Helper method to get the method name from arguments.
*/
private String methodToString(String name, Class<?>[] argTypes) {
- StringJoiner sj = new StringJoiner(", ", getName() + "." + name + "(", ")");
+ StringBuilder sb = new StringBuilder();
+ sb.append(getName() + "." + name + "(");
if (argTypes != null) {
- for (int i = 0; i < argTypes.length; i++) {
- Class<?> c = argTypes[i];
- sj.add((c == null) ? "null" : c.getName());
- }
+ Stream.of(argTypes).map(c -> {return (c == null) ? "null" : c.getName();}).
+ collect(Collectors.joining(","));
}
- return sj.toString();
+ sb.append(")");
+ return sb.toString();
}
/** use serialVersionUID from JDK 1.1 for interoperability */
--- a/src/java.base/share/classes/java/lang/reflect/Constructor.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/lang/reflect/Constructor.java Fri Nov 02 11:34:56 2018 -0400
@@ -382,7 +382,8 @@
* including type parameters. The string is formatted as the
* constructor access modifiers, if any, followed by an
* angle-bracketed comma separated list of the constructor's type
- * parameters, if any, followed by the fully-qualified name of the
+ * parameters, if any, including informative bounds of the
+ * type parameters, if any, followed by the fully-qualified name of the
* declaring class, followed by a parenthesized, comma-separated
* list of the constructor's generic formal parameter types.
*
--- a/src/java.base/share/classes/java/lang/reflect/Executable.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/lang/reflect/Executable.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, 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
@@ -26,9 +26,12 @@
package java.lang.reflect;
import java.lang.annotation.*;
+import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
+import java.util.stream.Stream;
+import java.util.stream.Collectors;
import jdk.internal.misc.SharedSecrets;
import sun.reflect.annotation.AnnotationParser;
@@ -109,19 +112,15 @@
printModifiersIfNonzero(sb, modifierMask, isDefault);
specificToStringHeader(sb);
sb.append('(');
- StringJoiner sj = new StringJoiner(",");
- for (Class<?> parameterType : parameterTypes) {
- sj.add(parameterType.getTypeName());
- }
- sb.append(sj.toString());
+
+ sb.append(Stream.of(parameterTypes).map(Type::getTypeName).
+ collect(Collectors.joining(",")));
+
sb.append(')');
if (exceptionTypes.length > 0) {
- StringJoiner joiner = new StringJoiner(",", " throws ", "");
- for (Class<?> exceptionType : exceptionTypes) {
- joiner.add(exceptionType.getTypeName());
- }
- sb.append(joiner.toString());
+ sb.append(Stream.of(exceptionTypes).map(Type::getTypeName).
+ collect(Collectors.joining(",", " throws ", "")));
}
return sb.toString();
} catch (Exception e) {
@@ -135,6 +134,17 @@
*/
abstract void specificToStringHeader(StringBuilder sb);
+ static String typeVarBounds(TypeVariable<?> typeVar) {
+ Type[] bounds = typeVar.getBounds();
+ if (bounds.length == 1 && bounds[0].equals(Object.class)) {
+ return typeVar.getName();
+ } else {
+ return typeVar.getName() + " extends " +
+ Stream.of(bounds).map(Type::getTypeName).
+ collect(Collectors.joining(" & "));
+ }
+ }
+
String sharedToGenericString(int modifierMask, boolean isDefault) {
try {
StringBuilder sb = new StringBuilder();
@@ -143,11 +153,8 @@
TypeVariable<?>[] typeparms = getTypeParameters();
if (typeparms.length > 0) {
- StringJoiner sj = new StringJoiner(",", "<", "> ");
- for(TypeVariable<?> typeparm: typeparms) {
- sj.add(typeparm.getTypeName());
- }
- sb.append(sj.toString());
+ sb.append(Stream.of(typeparms).map(Executable::typeVarBounds).
+ collect(Collectors.joining(",", "<", "> ")));
}
specificToGenericStringHeader(sb);
@@ -166,11 +173,8 @@
Type[] exceptionTypes = getGenericExceptionTypes();
if (exceptionTypes.length > 0) {
- StringJoiner joiner = new StringJoiner(",", " throws ", "");
- for (Type exceptionType : exceptionTypes) {
- joiner.add(exceptionType.getTypeName());
- }
- sb.append(joiner.toString());
+ sb.append(Stream.of(exceptionTypes).map(Type::getTypeName).
+ collect(Collectors.joining(",", " throws ", "")));
}
return sb.toString();
} catch (Exception e) {
--- a/src/java.base/share/classes/java/lang/reflect/Method.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/lang/reflect/Method.java Fri Nov 02 11:34:56 2018 -0400
@@ -436,10 +436,11 @@
}
/**
- * Returns a string describing this {@code Method}, including
- * type parameters. The string is formatted as the method access
+ * Returns a string describing this {@code Method}, including type
+ * parameters. The string is formatted as the method access
* modifiers, if any, followed by an angle-bracketed
* comma-separated list of the method's type parameters, if any,
+ * including informative bounds of the type parameters, if any,
* followed by the method's generic return type, followed by a
* space, followed by the class declaring the method, followed by
* a period, followed by the method name, followed by a
--- a/src/java.base/share/classes/java/net/ServerSocket.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/java/net/ServerSocket.java Fri Nov 02 11:34:56 2018 -0400
@@ -76,10 +76,15 @@
private boolean oldImpl = false;
/**
- * Package-private constructor to create a ServerSocket associated with
- * the given SocketImpl.
+ * Creates a server socket with a user-specified {@code SocketImpl}.
+ *
+ * @param impl an instance of a SocketImpl to use on the ServerSocket.
+ *
+ * @throws NullPointerException if impl is {@code null}.
+ *
+ * @since 12
*/
- ServerSocket(SocketImpl impl) {
+ protected ServerSocket(SocketImpl impl) {
this.impl = impl;
impl.setServerSocket(this);
}
--- a/src/java.base/share/classes/javax/crypto/Cipher.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/javax/crypto/Cipher.java Fri Nov 02 11:34:56 2018 -0400
@@ -492,6 +492,12 @@
* <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method.
*
+ * @apiNote
+ * It is recommended to use a transformation that fully specifies the
+ * algorithm, mode, and padding. By not doing so, the provider will
+ * use a default for the mode and padding which may not meet the security
+ * requirements of your application.
+ *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred}
@@ -499,6 +505,9 @@
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
+ * See also the Cipher Transformations section of the {@extLink
+ * security_guide_jdk_providers JDK Providers} document for information
+ * on the transformation defaults used by JDK providers.
*
* @param transformation the name of the transformation, e.g.,
* <i>AES/CBC/PKCS5Padding</i>.
@@ -578,6 +587,17 @@
* <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method.
*
+ * @apiNote
+ * It is recommended to use a transformation that fully specifies the
+ * algorithm, mode, and padding. By not doing so, the provider will
+ * use a default for the mode and padding which may not meet the security
+ * requirements of your application.
+ *
+ * @implNote
+ * See the Cipher Transformations section of the {@extLink
+ * security_guide_jdk_providers JDK Providers} document for information
+ * on the transformation defaults used by JDK providers.
+ *
* @param transformation the name of the transformation,
* e.g., <i>AES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href=
@@ -638,6 +658,17 @@
* object is returned. Note that the specified Provider object
* does not have to be registered in the provider list.
*
+ * @apiNote
+ * It is recommended to use a transformation that fully specifies the
+ * algorithm, mode, and padding. By not doing so, the provider will
+ * use a default for the mode and padding which may not meet the security
+ * requirements of your application.
+ *
+ * @implNote
+ * See the Cipher Transformations section of the {@extLink
+ * security_guide_jdk_providers JDK Providers} document for information
+ * on the transformation defaults used by JDK providers.
+ *
* @param transformation the name of the transformation,
* e.g., <i>AES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href=
--- a/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Fri Nov 02 11:34:56 2018 -0400
@@ -674,9 +674,9 @@
"Magadan Summer Time", "MAGST",
"Magadan Time", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Philippines Time", "PHT",
- "Philippines Summer Time", "PHST",
- "Philippines Time", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/NativeGSSContext.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/java.security.jgss/share/classes/sun/security/jgss/wrapper/NativeGSSContext.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, 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
@@ -63,12 +63,14 @@
private GSSNameElement srcName;
private GSSNameElement targetName;
private GSSCredElement cred;
+ private GSSCredElement disposeCred;
private boolean isInitiator;
private boolean isEstablished;
private Oid actualMech; // Assigned during context establishment
private ChannelBinding cb;
private GSSCredElement delegatedCred;
+ private GSSCredElement disposeDelegatedCred;
private int flags;
private int lifetime = GSSCredential.DEFAULT_LIFETIME;
private final GSSLibStub cStub;
@@ -192,6 +194,7 @@
}
cStub = stub;
cred = myCred;
+ disposeCred = null;
targetName = peer;
isInitiator = true;
lifetime = time;
@@ -199,8 +202,9 @@
if (GSSUtil.isKerberosMech(cStub.getMech())) {
doServicePermCheck();
if (cred == null) {
- cred = new GSSCredElement(null, lifetime,
- GSSCredential.INITIATE_ONLY, cStub);
+ disposeCred = cred =
+ new GSSCredElement(null, lifetime,
+ GSSCredential.INITIATE_ONLY, cStub);
}
srcName = cred.getName();
}
@@ -211,6 +215,7 @@
throws GSSException {
cStub = stub;
cred = myCred;
+ disposeCred = null;
if (cred != null) targetName = cred.getName();
@@ -297,9 +302,9 @@
(cStub.getContextName(pContext, true), cStub);
}
if (cred == null) {
- cred = new GSSCredElement(srcName, lifetime,
- GSSCredential.INITIATE_ONLY,
- cStub);
+ disposeCred = cred =
+ new GSSCredElement(srcName, lifetime,
+ GSSCredential.INITIATE_ONLY, cStub);
}
}
}
@@ -315,6 +320,7 @@
inToken.length);
long pCred = (cred == null? 0 : cred.pCred);
outToken = cStub.acceptContext(pCred, cb, inToken, this);
+ disposeDelegatedCred = delegatedCred;
SunNativeProvider.debug("acceptSecContext=> outToken len=" +
(outToken == null? 0 : outToken.length));
@@ -323,9 +329,12 @@
(cStub.getContextName(pContext, false), cStub);
// Replace the current default acceptor cred now that
// the context acceptor name is available
- if (cred != null) cred.dispose();
- cred = new GSSCredElement(targetName, lifetime,
- GSSCredential.ACCEPT_ONLY, cStub);
+ if (disposeCred != null) {
+ disposeCred.dispose();
+ }
+ disposeCred = cred =
+ new GSSCredElement(targetName, lifetime,
+ GSSCredential.ACCEPT_ONLY, cStub);
}
// Only inspect token when the permission check has not
@@ -346,9 +355,15 @@
}
public void dispose() throws GSSException {
+ if (disposeCred != null) {
+ disposeCred.dispose();
+ }
+ if (disposeDelegatedCred != null) {
+ disposeDelegatedCred.dispose();
+ }
+ disposeDelegatedCred = disposeCred = cred = null;
srcName = null;
targetName = null;
- cred = null;
delegatedCred = null;
if (pContext != 0) {
pContext = cStub.deleteContext(pContext);
@@ -612,6 +627,7 @@
}
}
public GSSCredentialSpi getDelegCred() throws GSSException {
+ disposeDelegatedCred = null;
return delegatedCred;
}
public boolean isInitiator() {
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/GB18030.java.template Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/GB18030.java.template Fri Nov 02 11:34:56 2018 -0400
@@ -12519,7 +12519,7 @@
dst.put(getChar(offset));
else if (offset >= 0x830D && offset <= 0x93A8)
dst.put((char)(offset + 0x6557));
- else if (offset >= 0x93A9 && offset <= 0x99F9)
+ else if (offset >= 0x93A9 && offset <= 0x99FB)
dst.put(getChar(offset));
// Supplemental UCS planes handled via surrogates
else if (offset >= 0x2E248 && offset < 0x12E248) {
--- a/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_JP.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_JP.java Fri Nov 02 11:34:56 2018 -0400
@@ -312,7 +312,7 @@
break;
case JISX0201_1976_KANA:
case SHIFTOUT:
- if (b1 > 0x60) {
+ if (b1 > 0x5f) {
return CoderResult.malformedForLength(inputSize);
}
da[dp++] = (char)(b1 + 0xff40);
@@ -433,7 +433,7 @@
break;
case JISX0201_1976_KANA:
case SHIFTOUT:
- if (b1 > 0x60) {
+ if (b1 > 0x5f) {
return CoderResult.malformedForLength(inputSize);
}
dst.put((char)(b1 + 0xff40));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.aarch64/src/jdk/vm/ci/aarch64/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The AArch64 platform independent portions of the JVMCI API.
+ */
+package jdk.vm.ci.aarch64;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.amd64/src/jdk/vm/ci/amd64/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The AMD64 platform independent portions of the JVMCI API.
+ */
+package jdk.vm.ci.amd64;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/BytecodePosition.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/BytecodePosition.java Fri Nov 02 11:34:56 2018 -0400
@@ -43,13 +43,19 @@
*
* @param caller the parent position
* @param method the method
- * @param bci a BCI within the method
+ * @param bci a BCI such that {@code method.codeSize() == 0 || bci < method.getCodeSize()}. That
+ * is, if code size is 0 then allow any value, otherwise the bci must be less than
+ * the code size.
*/
public BytecodePosition(BytecodePosition caller, ResolvedJavaMethod method, int bci) {
assert method != null;
this.caller = caller;
this.method = method;
this.bci = bci;
+ int codeSize = method.getCodeSize();
+ if (codeSize != 0 && bci >= codeSize) {
+ throw new IllegalArgumentException(String.format("bci %d is out of range for %s %d bytes", bci, method.format("%H.%n(%p)"), codeSize));
+ }
}
/**
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/site/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/**
+ * Package that defines the information associated with various {@link jdk.vm.ci.code.site.Site
+ * sites} in generated code.
+ */
+package jdk.vm.ci.code.site;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.code/src/jdk/vm/ci/code/stack/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/**
+ * Package that defines the interface for runtime stack introspection.
+ */
+package jdk.vm.ci.code.stack;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.common/src/jdk/vm/ci/common/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Common utility classes used by the JVMCI API.
+ */
+package jdk.vm.ci.common;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotJVMCIBackendFactory.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotJVMCIBackendFactory.java Fri Nov 02 11:34:56 2018 -0400
@@ -43,7 +43,7 @@
public class AArch64HotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
- protected EnumSet<AArch64.CPUFeature> computeFeatures(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
+ private static EnumSet<AArch64.CPUFeature> computeFeatures(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
// Configure the feature set using the HotSpot flag settings.
EnumSet<AArch64.CPUFeature> features = EnumSet.noneOf(AArch64.CPUFeature.class);
@@ -87,7 +87,7 @@
return features;
}
- protected EnumSet<AArch64.Flag> computeFlags(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
+ private static EnumSet<AArch64.Flag> computeFlags(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
EnumSet<AArch64.Flag> flags = EnumSet.noneOf(AArch64.Flag.class);
if (config.useBarriersForVolatile) {
@@ -115,7 +115,7 @@
return flags;
}
- protected TargetDescription createTarget(AArch64HotSpotVMConfig config) {
+ private static TargetDescription createTarget(AArch64HotSpotVMConfig config) {
final int stackFrameAlignment = 16;
final int implicitNullCheckLimit = 4096;
final boolean inlineObjects = true;
@@ -127,12 +127,12 @@
return new HotSpotConstantReflectionProvider(runtime);
}
- protected RegisterConfig createRegisterConfig(AArch64HotSpotVMConfig config, TargetDescription target) {
+ private static RegisterConfig createRegisterConfig(AArch64HotSpotVMConfig config, TargetDescription target) {
return new AArch64HotSpotRegisterConfig(target, config.useCompressedOops);
}
protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) {
- return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig);
+ return new HotSpotCodeCacheProvider(runtime, target, regConfig);
}
protected HotSpotMetaAccessProvider createMetaAccess(HotSpotJVMCIRuntime runtime) {
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java Fri Nov 02 11:34:56 2018 -0400
@@ -126,8 +126,7 @@
public static final Register threadRegister = r28;
public static final Register fp = r29;
- private static final RegisterArray reservedRegisters
- = new RegisterArray(rscratch1, rscratch2, threadRegister, fp, lr, r31, zr, sp);
+ private static final RegisterArray reservedRegisters = new RegisterArray(rscratch1, rscratch2, threadRegister, fp, lr, r31, zr, sp);
private static RegisterArray initAllocatable(Architecture arch, boolean reserveForHeapBase) {
RegisterArray allRegisters = arch.getAvailableValueRegisters();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The AArch64 HotSpot specific portions of the JVMCI API.
+ */
+package jdk.vm.ci.hotspot.aarch64;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotJVMCIBackendFactory.java Fri Nov 02 11:34:56 2018 -0400
@@ -43,7 +43,7 @@
public class AMD64HotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
- protected EnumSet<AMD64.CPUFeature> computeFeatures(AMD64HotSpotVMConfig config) {
+ private static EnumSet<AMD64.CPUFeature> computeFeatures(AMD64HotSpotVMConfig config) {
// Configure the feature set using the HotSpot flag settings.
EnumSet<AMD64.CPUFeature> features = EnumSet.noneOf(AMD64.CPUFeature.class);
if ((config.vmVersionFeatures & config.amd643DNOWPREFETCH) != 0) {
@@ -130,7 +130,7 @@
return features;
}
- protected EnumSet<AMD64.Flag> computeFlags(AMD64HotSpotVMConfig config) {
+ private static EnumSet<AMD64.Flag> computeFlags(AMD64HotSpotVMConfig config) {
EnumSet<AMD64.Flag> flags = EnumSet.noneOf(AMD64.Flag.class);
if (config.useCountLeadingZerosInstruction) {
flags.add(AMD64.Flag.UseCountLeadingZerosInstruction);
@@ -141,7 +141,7 @@
return flags;
}
- protected TargetDescription createTarget(AMD64HotSpotVMConfig config) {
+ private static TargetDescription createTarget(AMD64HotSpotVMConfig config) {
final int stackFrameAlignment = 16;
final int implicitNullCheckLimit = 4096;
final boolean inlineObjects = true;
@@ -153,12 +153,12 @@
return new HotSpotConstantReflectionProvider(runtime);
}
- protected RegisterConfig createRegisterConfig(AMD64HotSpotVMConfig config, TargetDescription target) {
+ private static RegisterConfig createRegisterConfig(AMD64HotSpotVMConfig config, TargetDescription target) {
return new AMD64HotSpotRegisterConfig(target, config.useCompressedOops, config.windowsOs);
}
protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) {
- return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig);
+ return new HotSpotCodeCacheProvider(runtime, target, regConfig);
}
protected HotSpotMetaAccessProvider createMetaAccess(HotSpotJVMCIRuntime runtime) {
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotVMConfig.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/AMD64HotSpotVMConfig.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, 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
@@ -25,6 +25,9 @@
import jdk.vm.ci.hotspot.HotSpotVMConfigAccess;
import jdk.vm.ci.hotspot.HotSpotVMConfigStore;
+/**
+ * Used to access AMD64 specific native configuration details.
+ */
class AMD64HotSpotVMConfig extends HotSpotVMConfigAccess {
AMD64HotSpotVMConfig(HotSpotVMConfigStore config) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.amd64/src/jdk/vm/ci/hotspot/amd64/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The AMD64 HotSpot specific portions of the JVMCI API.
+ */
+package jdk.vm.ci.hotspot.amd64;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotJVMCIBackendFactory.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotJVMCIBackendFactory.java Fri Nov 02 11:34:56 2018 -0400
@@ -43,7 +43,7 @@
public class SPARCHotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
- protected TargetDescription createTarget(SPARCHotSpotVMConfig config) {
+ private static TargetDescription createTarget(SPARCHotSpotVMConfig config) {
final int stackFrameAlignment = 16;
final int implicitNullCheckLimit = 4096;
final boolean inlineObjects = false;
@@ -52,10 +52,10 @@
}
protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) {
- return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig);
+ return new HotSpotCodeCacheProvider(runtime, target, regConfig);
}
- protected EnumSet<CPUFeature> computeFeatures(SPARCHotSpotVMConfig config) {
+ private static EnumSet<CPUFeature> computeFeatures(SPARCHotSpotVMConfig config) {
EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class);
if ((config.vmVersionFeatures & 1L << config.sparc_ADI) != 0) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The SPARC HotSpot specific portions of the JVMCI API.
+ */
+package jdk.vm.ci.hotspot.sparc;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Fri Nov 02 11:34:56 2018 -0400
@@ -261,9 +261,9 @@
/**
* If {@code cpi} denotes an entry representing a resolved dynamic adapter (see
- * {@code resolveInvokeDynamicInPool} and {@code resolveInvokeHandleInPool}), return the opcode
- * of the instruction for which the resolution was performed ({@code invokedynamic} or
- * {@code invokevirtual}}, or {@code -1} otherwise.
+ * {@link #resolveInvokeDynamicInPool} and {@link #resolveInvokeHandleInPool}), return the
+ * opcode of the instruction for which the resolution was performed ({@code invokedynamic} or
+ * {@code invokevirtual}), or {@code -1} otherwise.
*/
native int isResolvedInvokeHandleInPool(HotSpotConstantPool constantPool, int cpi);
@@ -543,12 +543,11 @@
native boolean shouldDebugNonSafepoints();
/**
- * Writes {@code length} bytes from {@code bytes} starting at offset {@code offset} to the
- * HotSpot's log stream.
+ * Writes {@code length} bytes from {@code bytes} starting at offset {@code offset} to HotSpot's
+ * log stream.
*
- * @exception NullPointerException if {@code bytes == null}
- * @exception IndexOutOfBoundsException if copying would cause access of data outside array
- * bounds
+ * @throws NullPointerException if {@code bytes == null}
+ * @throws IndexOutOfBoundsException if copying would cause access of data outside array bounds
*/
native void writeDebugOutput(byte[] bytes, int offset, int length);
@@ -620,7 +619,7 @@
native int methodDataProfileDataSize(long metaspaceMethodData, int position);
/**
- * Gets the fingerprint for a given Klass*
+ * Gets the fingerprint for a given Klass*.
*
* @param metaspaceKlass
* @return the value of the fingerprint (zero for arrays and synthetic classes).
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/EventProvider.java Fri Nov 02 11:34:56 2018 -0400
@@ -91,7 +91,7 @@
*
* @return a compilation event
*/
- public abstract CompilationEvent newCompilationEvent();
+ CompilationEvent newCompilationEvent();
/**
* A compilation event.
@@ -117,7 +117,7 @@
*
* @return a compiler failure event
*/
- public abstract CompilerFailureEvent newCompilerFailureEvent();
+ CompilerFailureEvent newCompilerFailureEvent();
/**
* A compiler failure event.
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java Fri Nov 02 11:34:56 2018 -0400
@@ -42,13 +42,13 @@
public class HotSpotCodeCacheProvider implements CodeCacheProvider {
protected final HotSpotJVMCIRuntime runtime;
- protected final HotSpotVMConfig config;
+ private final HotSpotVMConfig config;
protected final TargetDescription target;
protected final RegisterConfig regConfig;
- public HotSpotCodeCacheProvider(HotSpotJVMCIRuntime runtime, HotSpotVMConfig config, TargetDescription target, RegisterConfig regConfig) {
+ public HotSpotCodeCacheProvider(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) {
this.runtime = runtime;
- this.config = config;
+ this.config = runtime.getConfig();
this.target = target;
this.regConfig = regConfig;
}
@@ -91,7 +91,7 @@
@Override
public int getMinimumOutgoingSize() {
- return runtime.getConfig().runtimeCallStackSize;
+ return config.runtimeCallStackSize;
}
private InstalledCode logOrDump(InstalledCode installedCode, CompiledCode compiledCode) {
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java Fri Nov 02 11:34:56 2018 -0400
@@ -646,7 +646,7 @@
}
}
- /*
+ /**
* Converts a raw index from the bytecodes to a constant pool index (not a cache index).
*
* @param rawIndex index from the bytecode
@@ -760,6 +760,8 @@
/**
* Determines if {@code type} contains signature polymorphic methods.
*/
+ @SuppressFBWarnings(value = "LI_LAZY_INIT_STATIC", justification = "signaturePolymorphicHolders is a cache, not a singleton that must be constructed exactly once" +
+ "and compiler re-ordering is not an issue due to the VM call")
static boolean isSignaturePolymorphicHolder(final ResolvedJavaType type) {
String name = type.getName();
if (signaturePolymorphicHolders == null) {
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPoolObject.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPoolObject.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -60,7 +60,7 @@
if (o instanceof HotSpotConstantPoolObject) {
if (super.equals(o)) {
HotSpotConstantPoolObject other = (HotSpotConstantPoolObject) o;
- return type == other.type && cpi == other.cpi;
+ return type.equals(other.type) && cpi == other.cpi;
}
}
return false;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantReflectionProvider.java Fri Nov 02 11:34:56 2018 -0400
@@ -42,7 +42,7 @@
protected final HotSpotJVMCIRuntime runtime;
protected final HotSpotMethodHandleAccessProvider methodHandleAccess;
- protected final HotSpotMemoryAccessProviderImpl memoryAccess;
+ private final HotSpotMemoryAccessProviderImpl memoryAccess;
public HotSpotConstantReflectionProvider(HotSpotJVMCIRuntime runtime) {
this.runtime = runtime;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java Fri Nov 02 11:34:56 2018 -0400
@@ -36,7 +36,6 @@
import java.util.Objects;
import java.util.ServiceLoader;
import java.util.Set;
-import java.util.TreeMap;
import java.util.function.Predicate;
import jdk.internal.misc.VM;
@@ -240,16 +239,16 @@
return runtime().getHostJVMCIBackend().getCodeCache().getTarget().wordJavaKind;
}
- protected final CompilerToVM compilerToVm;
+ final CompilerToVM compilerToVm;
protected final HotSpotVMConfigStore configStore;
- protected final HotSpotVMConfig config;
+ private final HotSpotVMConfig config;
private final JVMCIBackend hostBackend;
private final JVMCICompilerFactory compilerFactory;
private final HotSpotJVMCICompilerFactory hsCompilerFactory;
private volatile JVMCICompiler compiler;
- protected final HotSpotJVMCIMetaAccessContext metaAccessContext;
+ final HotSpotJVMCIMetaAccessContext metaAccessContext;
/**
* Stores the result of {@link HotSpotJVMCICompilerFactory#getCompilationLevelAdjustment} so
@@ -324,7 +323,7 @@
}
if (Option.PrintConfig.getBoolean()) {
- printConfig(configStore, compilerToVm);
+ configStore.printConfig();
}
}
@@ -343,11 +342,11 @@
return configStore;
}
- public HotSpotVMConfig getConfig() {
+ HotSpotVMConfig getConfig() {
return config;
}
- public CompilerToVM getCompilerToVM() {
+ CompilerToVM getCompilerToVM() {
return compilerToVm;
}
@@ -578,41 +577,6 @@
}
}
- @SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "no localization here please!")
- private static void printConfigLine(CompilerToVM vm, String format, Object... args) {
- String line = String.format(format, args);
- byte[] lineBytes = line.getBytes();
- vm.writeDebugOutput(lineBytes, 0, lineBytes.length);
- vm.flushDebugOutput();
- }
-
- private static void printConfig(HotSpotVMConfigStore store, CompilerToVM vm) {
- TreeMap<String, VMField> fields = new TreeMap<>(store.getFields());
- for (VMField field : fields.values()) {
- if (!field.isStatic()) {
- printConfigLine(vm, "[vmconfig:instance field] %s %s {offset=%d[0x%x]}%n", field.type, field.name, field.offset, field.offset);
- } else {
- String value = field.value == null ? "null" : field.value instanceof Boolean ? field.value.toString() : String.format("%d[0x%x]", field.value, field.value);
- printConfigLine(vm, "[vmconfig:static field] %s %s = %s {address=0x%x}%n", field.type, field.name, value, field.address);
- }
- }
- TreeMap<String, VMFlag> flags = new TreeMap<>(store.getFlags());
- for (VMFlag flag : flags.values()) {
- printConfigLine(vm, "[vmconfig:flag] %s %s = %s%n", flag.type, flag.name, flag.value);
- }
- TreeMap<String, Long> addresses = new TreeMap<>(store.getAddresses());
- for (Map.Entry<String, Long> e : addresses.entrySet()) {
- printConfigLine(vm, "[vmconfig:address] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue());
- }
- TreeMap<String, Long> constants = new TreeMap<>(store.getConstants());
- for (Map.Entry<String, Long> e : constants.entrySet()) {
- printConfigLine(vm, "[vmconfig:constant] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue());
- }
- for (VMIntrinsicMethod e : store.getIntrinsics()) {
- printConfigLine(vm, "[vmconfig:intrinsic] %d = %s.%s %s%n", e.id, e.declaringClass, e.name, e.descriptor);
- }
- }
-
/**
* Gets an output stream that writes to HotSpot's {@code tty} stream.
*/
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodData.java Fri Nov 02 11:34:56 2018 -0400
@@ -579,8 +579,9 @@
totalCount += getMethodsNotRecordedExecutionCount(data, position);
- // Fixup the case of C1's inability to optimize profiling of a statically bindable call site.
- // If it's a monomorphic call site, attribute all the counts to the first type (if any is recorded).
+ // Fixup the case of C1's inability to optimize profiling of a statically bindable call
+ // site. If it's a monomorphic call site, attribute all the counts to the first type (if
+ // any is recorded).
if (entries == 1) {
counts[0] = totalCount;
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodDataAccessor.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMethodDataAccessor.java Fri Nov 02 11:34:56 2018 -0400
@@ -82,8 +82,8 @@
}
TriState getExceptionSeen(HotSpotMethodData data, int position) {
- final int EXCEPTIONS_MASK = 1 << config.bitDataExceptionSeenFlag;
- return TriState.get((getFlags(data, position) & EXCEPTIONS_MASK) != 0);
+ final int exceptionsMask = 1 << config.bitDataExceptionSeenFlag;
+ return TriState.get((getFlags(data, position) & exceptionsMask) != 0);
}
/**
@@ -148,4 +148,4 @@
abstract StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos);
-}
\ No newline at end of file
+}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstant.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotObjectConstant.java Fri Nov 02 11:34:56 2018 -0400
@@ -91,4 +91,7 @@
* {@code null}
*/
Object asObject(ResolvedJavaType type);
+
+ @Override
+ String toValueString();
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotProfilingInfo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotProfilingInfo.java Fri Nov 02 11:34:56 2018 -0400
@@ -28,7 +28,7 @@
import jdk.vm.ci.meta.ProfilingInfo;
import jdk.vm.ci.meta.TriState;
-public final class HotSpotProfilingInfo implements ProfilingInfo {
+final class HotSpotProfilingInfo implements ProfilingInfo {
private final HotSpotMethodData methodData;
private final HotSpotResolvedJavaMethod method;
@@ -42,7 +42,7 @@
private boolean includeNormal;
private boolean includeOSR;
- public HotSpotProfilingInfo(HotSpotMethodData methodData, HotSpotResolvedJavaMethod method, boolean includeNormal, boolean includeOSR) {
+ HotSpotProfilingInfo(HotSpotMethodData methodData, HotSpotResolvedJavaMethod method, boolean includeNormal, boolean includeOSR) {
this.methodData = methodData;
this.method = method;
this.includeNormal = includeNormal;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaFieldImpl.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaFieldImpl.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -28,8 +28,6 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import jdk.internal.vm.annotation.Stable;
-
import jdk.vm.ci.meta.JavaConstant;
import jdk.vm.ci.meta.JavaType;
import jdk.vm.ci.meta.ResolvedJavaType;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethod.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethod.java Fri Nov 02 11:34:56 2018 -0400
@@ -58,7 +58,8 @@
boolean hasReservedStackAccess();
/**
- * Sets flags on {@code method} indicating that it should never be inlined or compiled by the VM.
+ * Sets flags on {@code method} indicating that it should never be inlined or compiled by the
+ * VM.
*/
void setNotInlinableOrCompilable();
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, 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
@@ -22,6 +22,24 @@
*/
package jdk.vm.ci.hotspot;
+import static jdk.vm.ci.hotspot.CompilerToVM.compilerToVM;
+import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.runtime;
+import static jdk.vm.ci.hotspot.HotSpotModifiers.BRIDGE;
+import static jdk.vm.ci.hotspot.HotSpotModifiers.SYNTHETIC;
+import static jdk.vm.ci.hotspot.HotSpotModifiers.VARARGS;
+import static jdk.vm.ci.hotspot.HotSpotModifiers.jvmMethodModifiers;
+import static jdk.vm.ci.hotspot.HotSpotVMConfig.config;
+import static jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Executable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
import jdk.vm.ci.common.JVMCIError;
import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.Option;
import jdk.vm.ci.meta.Constant;
@@ -40,24 +58,6 @@
import jdk.vm.ci.meta.SpeculationLog;
import jdk.vm.ci.meta.TriState;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Executable;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import static jdk.vm.ci.hotspot.CompilerToVM.compilerToVM;
-import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.runtime;
-import static jdk.vm.ci.hotspot.HotSpotModifiers.BRIDGE;
-import static jdk.vm.ci.hotspot.HotSpotModifiers.SYNTHETIC;
-import static jdk.vm.ci.hotspot.HotSpotModifiers.VARARGS;
-import static jdk.vm.ci.hotspot.HotSpotModifiers.jvmMethodModifiers;
-import static jdk.vm.ci.hotspot.HotSpotVMConfig.config;
-import static jdk.vm.ci.hotspot.UnsafeAccess.UNSAFE;
-
/**
* Implementation of {@link JavaMethod} for resolved HotSpot methods.
*/
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectType.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -102,8 +102,6 @@
int layoutHelper();
- long getFingerprint();
-
@Override
HotSpotResolvedObjectType getEnclosingType();
@@ -127,4 +125,11 @@
return isUnsafeAnonymous();
}
+ /**
+ * Gets the fingerprint for this type.
+ *
+ * @return the value of the fingerprint ({@code 0} for arrays and synthetic classes or if the VM
+ * does not support fingerprints)
+ */
+ long getFingerprint();
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedPrimitiveType.java Fri Nov 02 11:34:56 2018 -0400
@@ -66,7 +66,7 @@
}
@Override
- public HotSpotResolvedObjectTypeImpl getArrayClass() {
+ public HotSpotResolvedObjectType getArrayClass() {
if (kind == JavaKind.Void) {
return null;
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotSpeculationLog.java Fri Nov 02 11:34:56 2018 -0400
@@ -24,8 +24,8 @@
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
-import java.util.Map;
import jdk.vm.ci.meta.JavaConstant;
import jdk.vm.ci.meta.SpeculationLog;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigAccess.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigAccess.java Fri Nov 02 11:34:56 2018 -0400
@@ -50,7 +50,8 @@
if (notPresent != null) {
return notPresent;
}
- throw new JVMCIError("expected VM symbol not found: " + name);
+ store.printConfig();
+ throw new JVMCIError("expected VM symbol not found in " + store + ": " + name);
}
return entry;
}
@@ -81,7 +82,8 @@
if (notPresent != null) {
return notPresent;
}
- throw new JVMCIError("expected VM constant not found: " + name);
+ store.printConfig();
+ throw new JVMCIError("expected VM constant not found in " + store + ": " + name);
}
return type.cast(convertValue(name, type, c, null));
}
@@ -241,7 +243,8 @@
if (!required) {
return null;
}
- throw new JVMCIError("expected VM field not found: " + name);
+ store.printConfig();
+ throw new JVMCIError("expected VM field not found in " + store + ": " + name);
}
// Make sure the native type is still the type we expect.
@@ -285,7 +288,8 @@
if (notPresent != null) {
return notPresent;
}
- throw new JVMCIError("expected VM flag not found: " + name);
+ store.printConfig();
+ throw new JVMCIError("expected VM flag not found in " + store + ": " + name);
} else {
cppType = null;
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, 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
@@ -29,8 +29,10 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import jdk.vm.ci.common.InitTimer;
+import jdk.vm.ci.common.JVMCIError;
/**
* Access to VM configuration data.
@@ -108,7 +110,9 @@
try (InitTimer t = timer("CompilerToVm readConfiguration")) {
data = compilerToVm.readConfiguration();
}
- assert data.length == 5 : data.length;
+ if (data.length != 5) {
+ throw new JVMCIError("Expected data.length to be 5, not %d", data.length);
+ }
// @formatter:off
VMField[] vmFieldsInfo = (VMField[]) data[0];
@@ -145,4 +149,52 @@
}
}
}
+
+ @Override
+ public String toString() {
+ return String.format("%s[%d fields, %d constants, %d addresses, %d flags, %d intrinsics]",
+ getClass().getSimpleName(),
+ vmFields.size(),
+ vmConstants.size(),
+ vmAddresses.size(),
+ vmFlags.size(),
+ vmIntrinsics.size());
+ }
+
+ void printConfig() {
+ CompilerToVM vm = compilerToVm;
+ TreeMap<String, VMField> fields = new TreeMap<>(getFields());
+ for (VMField field : fields.values()) {
+ if (!field.isStatic()) {
+ printConfigLine(vm, "[vmconfig:instance field] %s %s {offset=%d[0x%x]}%n", field.type, field.name, field.offset, field.offset);
+ } else {
+ String value = field.value == null ? "null" : field.value instanceof Boolean ? field.value.toString() : String.format("%d[0x%x]", field.value, field.value);
+ printConfigLine(vm, "[vmconfig:static field] %s %s = %s {address=0x%x}%n", field.type, field.name, value, field.address);
+ }
+ }
+ TreeMap<String, VMFlag> flags = new TreeMap<>(getFlags());
+ for (VMFlag flag : flags.values()) {
+ printConfigLine(vm, "[vmconfig:flag] %s %s = %s%n", flag.type, flag.name, flag.value);
+ }
+ TreeMap<String, Long> addresses = new TreeMap<>(getAddresses());
+ for (Map.Entry<String, Long> e : addresses.entrySet()) {
+ printConfigLine(vm, "[vmconfig:address] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue());
+ }
+ TreeMap<String, Long> constants = new TreeMap<>(getConstants());
+ for (Map.Entry<String, Long> e : constants.entrySet()) {
+ printConfigLine(vm, "[vmconfig:constant] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue());
+ }
+ for (VMIntrinsicMethod e : getIntrinsics()) {
+ printConfigLine(vm, "[vmconfig:intrinsic] %d = %s.%s %s%n", e.id, e.declaringClass, e.name, e.descriptor);
+ }
+ }
+
+ @SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "no localization here please!")
+ private static void printConfigLine(CompilerToVM vm, String format, Object... args) {
+ String line = String.format(format, args);
+ byte[] lineBytes = line.getBytes();
+ vm.writeDebugOutput(lineBytes, 0, lineBytes.length);
+ vm.flushDebugOutput();
+ }
+
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * HotSpot specific portions of the JVMCI API.
+ */
+package jdk.vm.ci.hotspot;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/Assumptions.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/Assumptions.java Fri Nov 02 11:34:56 2018 -0400
@@ -98,7 +98,7 @@
}
/**
- * An assumption that a given class has no subclasses implementing {@code Object#finalize()}).
+ * An assumption that a given class has no subclasses implementing {@link Object#finalize()}).
*/
public static final class NoFinalizableSubclass extends Assumption {
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantPool.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ConstantPool.java Fri Nov 02 11:34:56 2018 -0400
@@ -49,8 +49,8 @@
/**
* Looks up a reference to a field. If {@code opcode} is non-negative, then resolution checks
* specific to the bytecode it denotes are performed if the field is already resolved. Checks
- * for some bytecodes require the method that contains the bytecode to be specified. Should
- * any of these checks fail, an unresolved field reference is returned.
+ * for some bytecodes require the method that contains the bytecode to be specified. Should any
+ * of these checks fail, an unresolved field reference is returned.
*
* @param cpi the constant pool index
* @param opcode the opcode of the instruction for which the lookup is being performed or
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/LocalVariableTable.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/LocalVariableTable.java Fri Nov 02 11:34:56 2018 -0400
@@ -47,7 +47,7 @@
/**
* Gets a description of a local variable that occupies the bytecode frame slot indexed by
- * {@code slot} and is live at the bytecode index {@code bci}
+ * {@code slot} and is live at the bytecode index {@code bci}.
*
* @return a description of the requested local variable or null if no such variable matches
* {@code slot} and {@code bci}
@@ -74,7 +74,7 @@
}
/**
- * Gets a description of all the local variables live at the bytecode index {@code bci}
+ * Gets a description of all the local variables live at the bytecode index {@code bci}.
*/
public Local[] getLocalsAt(int bci) {
List<Local> result = new ArrayList<>();
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ModifiersProvider.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ModifiersProvider.java Fri Nov 02 11:34:56 2018 -0400
@@ -22,12 +22,12 @@
*/
package jdk.vm.ci.meta;
+import java.lang.reflect.Modifier;
+
import static java.lang.reflect.Modifier.PRIVATE;
import static java.lang.reflect.Modifier.PROTECTED;
import static java.lang.reflect.Modifier.PUBLIC;
-import java.lang.reflect.Modifier;
-
/**
* A Java element (i.e., a class, interface, field or method) that is described by a set of Java
* language {@linkplain #getModifiers() modifiers}.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.runtime/src/jdk/vm/ci/runtime/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The core runtime interface of the JVMCI API.
+ */
+package jdk.vm.ci.runtime;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.services/src/jdk/vm/ci/services/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The service related portions of the JVMCI API.
+ */
+package jdk.vm.ci.services;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.sparc/src/jdk/vm/ci/sparc/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The SPARC platform independent portions of the JVMCI API.
+ */
+package jdk.vm.ci.sparc;
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_de.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_de.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Magadanische Sommerzeit", "MAGST",
"Magadanische Zeit", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Philippinische Zeit", "PHT",
- "Philippinische Sommerzeit", "PHST",
- "Philippinische Zeit", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_es.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_es.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Hora de verano de Magad\u00e1n", "MAGST",
"Hora de Magad\u00E1n", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Hora de Filipinas", "PHT",
- "Hora de verano de Filipinas", "PHST",
- "Hora de Filipinas", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_fr.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_fr.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Heure d'\u00e9t\u00e9 de Magadan", "MAGST",
"Heure de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Heure des Philippines", "PHT",
- "Heure d'\u00e9t\u00e9 des Philippines", "PHST",
- "Heure des Philippines", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_it.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_it.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Ora estiva di Magadan", "MAGST",
"Ora di Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Ora delle Filippine", "PHT",
- "Ora estiva delle Filippine", "PHST",
- "Ora delle Filippine", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ja.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ja.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"\u30de\u30ac\u30c0\u30f3\u590f\u6642\u9593", "MAGST",
"\u30DE\u30AC\u30C0\u30F3\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"\u30d5\u30a3\u30ea\u30d4\u30f3\u6642\u9593", "PHT",
- "\u30d5\u30a3\u30ea\u30d4\u30f3\u590f\u6642\u9593", "PHST",
- "\u30D5\u30A3\u30EA\u30D4\u30F3\u6642\u9593", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ko.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_ko.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"\ub9c8\uac00\ub2e8 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "MAGST",
"\uB9C8\uAC00\uB2E8 \uD45C\uC900\uC2DC", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"\ud544\ub9ac\ud540 \uc2dc\uac04", "PHT",
- "\ud544\ub9ac\ud540 \uc77c\uad11\uc808\uc57d\uc2dc\uac04", "PHST",
- "\uD544\uB9AC\uD540 \uD45C\uC900\uC2DC", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_pt_BR.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_pt_BR.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Fuso hor\u00e1rio de ver\u00e3o de Magadan", "MAGST",
"Hor\u00E1rio de Magadan", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Fuso hor\u00e1rio das Filipinas", "PHT",
- "Fuso hor\u00e1rio de ver\u00e3o das Filipinas", "PHST",
- "Hor\u00E1rio das Filipinas", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_sv.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_sv.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Magadan, sommartid", "MAGST",
"Magadan-tid", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"Filippinerna, normaltid", "PHT",
- "Filippinerna, sommartid", "PHST",
- "Filippinsk tid", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_CN.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_CN.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Magadan \u590f\u4ee4\u65f6", "MAGST",
"Magadan \u65F6\u95F4", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"\u83f2\u5f8b\u5bbe\u65f6\u95f4", "PHT",
- "\u83f2\u5f8b\u5bbe\u590f\u4ee4\u65f6", "PHST",
- "\u83F2\u5F8B\u5BBE\u65F6\u95F4", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_TW.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.localedata/share/classes/sun/util/resources/ext/TimeZoneNames_zh_TW.java Fri Nov 02 11:34:56 2018 -0400
@@ -667,9 +667,9 @@
"Magadan \u590f\u4ee4\u6642\u9593", "MAGST",
"\u99AC\u52A0\u4E39\u6642\u9593", "MAGT"}},
{"Asia/Makassar", CIT},
- {"Asia/Manila", new String[] {"\u83f2\u5f8b\u8cd3\u6642\u9593", "PHT",
- "\u83f2\u5f8b\u8cd3\u590f\u4ee4\u6642\u9593", "PHST",
- "\u83F2\u5F8B\u8CD3\u6642\u9593", "PHT"}},
+ {"Asia/Manila", new String[] {"Philippines Standard Time", "PST",
+ "Philippines Daylight Time", "PDT",
+ "Philippines Time", "PT"}},
{"Asia/Muscat", GST},
{"Asia/Nicosia", EET},
{"Asia/Novokuznetsk", KRAT},
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathEvaluator.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathEvaluator.java Fri Nov 02 11:34:56 2018 -0400
@@ -61,7 +61,7 @@
* from other sources that could provide specific support for specialized
* extension functions or variables as would be defined by other
* specifications.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ * <p>See also the <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>Document Object Model (DOM) Level 3 XPath Specification</a>.
*/
public interface XPathEvaluator {
/**
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathException.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathException.java Fri Nov 02 11:34:56 2018 -0400
@@ -44,7 +44,14 @@
/**
* A new exception has been created for exceptions specific to these XPath
* interfaces.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ *
+ * See also <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>
+ * Document Object Model (DOM) Level 3 XPath Specification, Version 1.0,
+ * W3C Working Group Note 26 February 2004</a>
+ * Note that this class came from Document Object Model (DOM) Level 3 XPath
+ * Specification, Working Draft 20 August 2002 where the values of
+ * {@link #INVALID_EXPRESSION_ERR} and {@link #TYPE_ERR}
+ * are 1 and 2 respectively (instead of 51 and 52 as in the 2004 version).
*/
public class XPathException extends RuntimeException {
private static final long serialVersionUID = 3471034171575979943L;
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathExpression.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathExpression.java Fri Nov 02 11:34:56 2018 -0400
@@ -48,7 +48,7 @@
/**
* The <code>XPathExpression</code> interface represents a parsed and resolved
* XPath expression.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ * <p>See also the <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>Document Object Model (DOM) Level 3 XPath Specification</a>.
*/
public interface XPathExpression {
/**
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathNSResolver.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathNSResolver.java Fri Nov 02 11:34:56 2018 -0400
@@ -48,7 +48,7 @@
* <code>namespaceURI</code> strings. <code>XPathEvaluator</code> can
* construct an implementation of <code>XPathNSResolver</code> from a node,
* or the interface may be implemented by any application.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ * <p>See also the <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>Document Object Model (DOM) Level 3 XPath Specification</a>.
*/
public interface XPathNSResolver {
/**
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathNamespace.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathNamespace.java Fri Nov 02 11:34:56 2018 -0400
@@ -74,7 +74,7 @@
* future versions of the XPath specification, the definition of a namespace
* node may be changed incomatibly, in which case incompatible changes to
* field values may be required to implement versions beyond XPath 1.0.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ * <p>See also the <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>Document Object Model (DOM) Level 3 XPath Specification</a>.
*/
public interface XPathNamespace extends Node {
// XPathNodeType
--- a/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathResult.java Thu Nov 01 14:36:18 2018 -0400
+++ b/src/jdk.xml.dom/share/classes/org/w3c/dom/xpath/XPathResult.java Fri Nov 02 11:34:56 2018 -0400
@@ -51,7 +51,7 @@
* node. Since evaluation of an XPath expression can result in various
* result types, this object makes it possible to discover and manipulate
* the type and value of the result.
- * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>.
+ * <p>See also the <a href='https://www.w3.org/TR/DOM-Level-3-XPath/'>Document Object Model (DOM) Level 3 XPath Specification</a>.
*/
public interface XPathResult {
// XPathResultType
--- a/test/jdk/java/lang/Class/GenericStringTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/java/lang/Class/GenericStringTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6298888 6992705 8161500
+ * @bug 6298888 6992705 8161500 6304578
* @summary Check Class.toGenericString()
* @author Joseph D. Darcy
*/
@@ -43,12 +43,20 @@
String[][] nested = {{""}};
int[][] intArray = {{1}};
- failures += checkToGenericString(int.class, "int");
- failures += checkToGenericString(void.class, "void");
- failures += checkToGenericString(args.getClass(), "java.lang.String[]");
- failures += checkToGenericString(nested.getClass(), "java.lang.String[][]");
- failures += checkToGenericString(intArray.getClass(), "int[][]");
- failures += checkToGenericString(java.util.Map.class, "public abstract interface java.util.Map<K,V>");
+ Map<Class<?>, String> testCases =
+ Map.of(int.class, "int",
+ void.class, "void",
+ args.getClass(), "java.lang.String[]",
+ nested.getClass(), "java.lang.String[][]",
+ intArray.getClass(), "int[][]",
+ java.lang.Enum.class, "public abstract class java.lang.Enum<E extends java.lang.Enum<E>>",
+ java.util.Map.class, "public abstract interface java.util.Map<K,V>",
+ java.util.EnumMap.class, "public class java.util.EnumMap<K extends java.lang.Enum<K>,V>",
+ java.util.EventListenerProxy.class, "public abstract class java.util.EventListenerProxy<T extends java.util.EventListener>");
+
+ for (Map.Entry<Class<?>, String> testCase : testCases.entrySet()) {
+ failures += checkToGenericString(testCase.getKey(), testCase.getValue());
+ }
Field f = GenericStringTest.class.getDeclaredField("mixed");
// The expected value includes "<K,V>" rather than
@@ -74,7 +82,7 @@
private static int checkToGenericString(Class<?> clazz, String expected) {
String genericString = clazz.toGenericString();
if (!genericString.equals(expected)) {
- System.err.printf("Unexpected Class.toGenericString output; expected '%s', got '%s'.%n",
+ System.err.printf("Unexpected Class.toGenericString output; expected %n\t'%s',%n got %n\t'%s'.%n",
expected,
genericString);
return 1;
--- a/test/jdk/java/lang/reflect/Constructor/GenericStringTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/java/lang/reflect/Constructor/GenericStringTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 5033583 6316717 6470106 8161500 8162539
+ * @bug 5033583 6316717 6470106 8161500 8162539 6304578
* @summary Check toGenericString() and toString() methods
* @author Joseph D. Darcy
*/
@@ -87,7 +87,13 @@
protected <S, T> TestClass1(S s, T t) throws Exception{}
@ExpectedGenericString(
- "<E> TestClass1() throws E")
+ "protected <V extends java.lang.Number & java.lang.Runnable> TestClass1(V)")
+ @ExpectedString(
+ "protected TestClass1(java.lang.Number)")
+ protected <V extends Number & Runnable> TestClass1(V v){}
+
+ @ExpectedGenericString(
+ "<E extends java.lang.Exception> TestClass1() throws E")
@ExpectedString(
"TestClass1() throws java.lang.Exception")
<E extends Exception> TestClass1() throws E {}
--- a/test/jdk/java/lang/reflect/Method/GenericStringTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/java/lang/reflect/Method/GenericStringTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2018, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 5033583 6316717 6470106 8004979 8161500 8162539
+ * @bug 5033583 6316717 6470106 8004979 8161500 8162539 6304578
* @summary Check toGenericString() and toString() methods
* @author Joseph D. Darcy
*/
@@ -103,6 +103,10 @@
@ExpectedGenericString(
"protected <S,T> S TestClass1.method4(S,T) throws java.lang.Exception")
protected <S, T> S method4(S s, T t) throws Exception {return null;}
+
+ @ExpectedGenericString(
+ "public static <T> T TestClass1.max(java.util.Collection<? extends T>,java.util.Comparator<? super T>)")
+ public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) {return null;}
}
class TestClass2<E, F extends Exception> {
@@ -139,6 +143,10 @@
@ExpectedGenericString(
"public <K,V> java.util.Map<K, V> TestClass2.method8()")
public <K, V> Map<K, V> method8() {return null;}
+
+ @ExpectedGenericString(
+ "public <V extends java.lang.Number & java.lang.Runnable> java.util.Set<V> TestClass2.method9(V)")
+ public <V extends Number & Runnable> Set<V> method9(V v) {return null;}
}
class Roebling implements Comparable<Roebling> {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/nio/cs/TestGB18030.java Fri Nov 02 11:34:56 2018 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2018, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8211382
+ * @summary Check GB18030
+ * @modules jdk.charsets
+ */
+
+import java.io.*;
+import java.nio.*;
+import java.nio.charset.*;
+
+public class TestGB18030 {
+ public static void gb18030_1(boolean useDirect) throws Exception {
+ for(char ch : new char[]{'\uFFFE', '\uFFFF'}) {
+ char[] ca = new char[]{ch};
+ Charset cs = Charset.forName("GB18030");
+ CharsetEncoder ce = cs.newEncoder();
+ CharsetDecoder cd = cs.newDecoder();
+ CharBuffer cb = CharBuffer.wrap(ca);
+ ByteBuffer bb;
+ if (useDirect) {
+ bb = ByteBuffer.allocateDirect(
+ (int)Math.ceil(ce.maxBytesPerChar()));
+ } else {
+ bb = ByteBuffer.allocate(
+ (int)Math.ceil(ce.maxBytesPerChar()));
+ }
+ CoderResult cr = ce.encode(cb, bb, true);
+ if (!cr.isUnderflow()) {
+ throw new RuntimeException(
+ String.format("Encoder Error: \\u%04X: direct=%b: %s",
+ (int)ch,
+ useDirect,
+ cr.toString()));
+ }
+ bb.position(0);
+ cb = CharBuffer.allocate((int)Math.ceil(
+ cd.maxCharsPerByte()*bb.limit()));
+ cr = cd.decode(bb, cb, true);
+ if (!cr.isUnderflow()) {
+ throw new RuntimeException(
+ String.format("Decoder Error: \\u%04X: direct=%b: %s",
+ (int)ch,
+ useDirect,
+ cr.toString()));
+ }
+ if (ca[0] != cb.get(0)) {
+ throw new RuntimeException(
+ String.format("direct=%b: \\u%04X <> \\u%04X",
+ useDirect,
+ (int)ca[0],
+ (int)cb.get(0)));
+ }
+ }
+ }
+ public static void main(String args[]) throws Exception {
+ gb18030_1(false);
+ gb18030_1(true);
+ }
+}
--- a/test/jdk/sun/nio/cs/TestISO2022JP.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/nio/cs/TestISO2022JP.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, 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
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4626545 4879522 4913711 4119445 8042125
+ * @bug 4626545 4879522 4913711 4119445 8042125 8211382
* @summary Check full coverage encode/decode for ISO-2022-JP
* @modules jdk.charsets
*/
@@ -647,5 +647,17 @@
if (!new String(encoded, "x-windows-iso2022jp").equals(expectedStr)) {
throw new Exception("MSISO2022JP Decoder error");
}
+ // Test for 11 iso2022jp decoder
+ encoded = new byte[] {
+ (byte)0x1B, (byte)0x28, (byte)0x49, (byte)0x60,
+ (byte)0x1B, (byte)0x28, (byte)0x42,
+ };
+ String unexpectedStr = "\uffa0";
+ expectedStr = "\ufffd";
+ if (new String(encoded, "ISO2022JP").equals(unexpectedStr)) {
+ throw new Exception("ISO2022JP Decoder error: \\uFFA0");
+ } else if (!new String(encoded, "ISO2022JP").equals(expectedStr)) {
+ throw new Exception("ISO2022JP Decoder error: \\uFFFD");
+ }
}
}
--- a/test/jdk/sun/util/calendar/zi/tzdata/VERSION Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/VERSION Fri Nov 02 11:34:56 2018 -0400
@@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-tzdata2018e
+tzdata2018g
--- a/test/jdk/sun/util/calendar/zi/tzdata/africa Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/africa Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Africa and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -29,7 +31,7 @@
# tz@iana.org for general use in the future). For more, please see
# the file CONTRIBUTING in the tz distribution.
-# From Paul Eggert (2017-04-09):
+# From Paul Eggert (2018-05-27):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -74,13 +76,15 @@
# I vaguely recall 'WAT' also being used for -01 in the past but
# cannot now come up with solid citations.
#
-# I invented the following abbreviations; corrections are welcome!
-# +02 WAST West Africa Summer Time (no longer used)
-# +03 CAST Central Africa Summer Time (no longer used)
-# +03 SAST South Africa Summer Time (no longer used)
+# I invented the following abbreviations in the 1990s:
+# +02 WAST West Africa Summer Time
+# +03 CAST Central Africa Summer Time
+# +03 SAST South Africa Summer Time
# +03 EAT East Africa Time
-# 'EAT' also seems to have caught on; the others are rare but are paired
-# with better-attested non-DST abbreviations.
+# 'EAT' seems to have caught on and is in current timestamps, and though
+# the other abbreviations are rarer and are only in past timestamps,
+# they are paired with better-attested non-DST abbreviations.
+# Corrections are welcome.
# Algeria
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
@@ -385,6 +389,13 @@
# Eritrea
# Ethiopia
# See Africa/Nairobi.
+#
+# Unfortunately tzdb records only Western clock time in use in Ethiopia,
+# as the tzdb format is not up to properly recording a common Ethiopian
+# timekeeping practice that is based on solar time. See:
+# Mortada D. If you have a meeting in Ethiopia, you'd better double
+# check the time. PRI's The World. 2015-01-30 15:15 -05.
+# https://www.pri.org/stories/2015-01-30/if-you-have-meeting-ethiopia-you-better-double-check-time
# Gabon
# See Africa/Lagos.
@@ -856,94 +867,61 @@
# <https://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
# with the patch.
-# From Paul Eggert (2015-06-08):
-# For now, guess that later spring and fall transitions will use 2015's rules,
-# and guess that Morocco will switch to standard time at 03:00 the last
-# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
-# Ramadan. To implement this, transition dates for 2016 through 2037 were
-# determined by running the following program under GNU Emacs 24.3, with the
-# results integrated by hand into the table below.
-# (let ((islamic-year 1437))
-# (require 'cal-islam)
-# (while (< islamic-year 1460)
-# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
-# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
-# (sunday 0))
-# (while (/= sunday (mod (setq a (1- a)) 7)))
-# (while (/= sunday (mod b 7))
-# (setq b (1+ b)))
-# (setq a (calendar-gregorian-from-absolute a))
-# (setq b (calendar-gregorian-from-absolute b))
-# (insert
-# (format
-# (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
-# "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
-# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
-# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
-# (setq islamic-year (+ 1 islamic-year))))
+# From Mohamed Essedik Najd (2018-10-26):
+# Today, a Moroccan government council approved the perpetual addition
+# of 60 minutes to the regular Moroccan timezone.
+# From Brian Inglis (2018-10-26):
+# http://www.maroc.ma/fr/actualites/le-conseil-de-gouvernement-adopte-un-projet-de-decret-relatif-lheure-legale-stipulant-le
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-
-Rule Morocco 1939 only - Sep 12 0:00 1:00 S
+Rule Morocco 1939 only - Sep 12 0:00 1:00 -
Rule Morocco 1939 only - Nov 19 0:00 0 -
-Rule Morocco 1940 only - Feb 25 0:00 1:00 S
+Rule Morocco 1940 only - Feb 25 0:00 1:00 -
Rule Morocco 1945 only - Nov 18 0:00 0 -
-Rule Morocco 1950 only - Jun 11 0:00 1:00 S
+Rule Morocco 1950 only - Jun 11 0:00 1:00 -
Rule Morocco 1950 only - Oct 29 0:00 0 -
-Rule Morocco 1967 only - Jun 3 12:00 1:00 S
+Rule Morocco 1967 only - Jun 3 12:00 1:00 -
Rule Morocco 1967 only - Oct 1 0:00 0 -
-Rule Morocco 1974 only - Jun 24 0:00 1:00 S
+Rule Morocco 1974 only - Jun 24 0:00 1:00 -
Rule Morocco 1974 only - Sep 1 0:00 0 -
-Rule Morocco 1976 1977 - May 1 0:00 1:00 S
+Rule Morocco 1976 1977 - May 1 0:00 1:00 -
Rule Morocco 1976 only - Aug 1 0:00 0 -
Rule Morocco 1977 only - Sep 28 0:00 0 -
-Rule Morocco 1978 only - Jun 1 0:00 1:00 S
+Rule Morocco 1978 only - Jun 1 0:00 1:00 -
Rule Morocco 1978 only - Aug 4 0:00 0 -
-Rule Morocco 2008 only - Jun 1 0:00 1:00 S
+Rule Morocco 2008 only - Jun 1 0:00 1:00 -
Rule Morocco 2008 only - Sep 1 0:00 0 -
-Rule Morocco 2009 only - Jun 1 0:00 1:00 S
+Rule Morocco 2009 only - Jun 1 0:00 1:00 -
Rule Morocco 2009 only - Aug 21 0:00 0 -
-Rule Morocco 2010 only - May 2 0:00 1:00 S
+Rule Morocco 2010 only - May 2 0:00 1:00 -
Rule Morocco 2010 only - Aug 8 0:00 0 -
-Rule Morocco 2011 only - Apr 3 0:00 1:00 S
+Rule Morocco 2011 only - Apr 3 0:00 1:00 -
Rule Morocco 2011 only - Jul 31 0:00 0 -
-Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 S
+Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
Rule Morocco 2012 only - Jul 20 3:00 0 -
-Rule Morocco 2012 only - Aug 20 2:00 1:00 S
+Rule Morocco 2012 only - Aug 20 2:00 1:00 -
Rule Morocco 2012 only - Sep 30 3:00 0 -
Rule Morocco 2013 only - Jul 7 3:00 0 -
-Rule Morocco 2013 only - Aug 10 2:00 1:00 S
-Rule Morocco 2013 max - Oct lastSun 3:00 0 -
-Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
+Rule Morocco 2013 only - Aug 10 2:00 1:00 -
+Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
+Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
Rule Morocco 2014 only - Jun 28 3:00 0 -
-Rule Morocco 2014 only - Aug 2 2:00 1:00 S
+Rule Morocco 2014 only - Aug 2 2:00 1:00 -
Rule Morocco 2015 only - Jun 14 3:00 0 -
-Rule Morocco 2015 only - Jul 19 2:00 1:00 S
+Rule Morocco 2015 only - Jul 19 2:00 1:00 -
Rule Morocco 2016 only - Jun 5 3:00 0 -
-Rule Morocco 2016 only - Jul 10 2:00 1:00 S
+Rule Morocco 2016 only - Jul 10 2:00 1:00 -
Rule Morocco 2017 only - May 21 3:00 0 -
-Rule Morocco 2017 only - Jul 2 2:00 1:00 S
+Rule Morocco 2017 only - Jul 2 2:00 1:00 -
Rule Morocco 2018 only - May 13 3:00 0 -
-Rule Morocco 2018 only - Jun 17 2:00 1:00 S
-Rule Morocco 2019 only - May 5 3:00 0 -
-Rule Morocco 2019 only - Jun 9 2:00 1:00 S
-Rule Morocco 2020 only - Apr 19 3:00 0 -
-Rule Morocco 2020 only - May 24 2:00 1:00 S
-Rule Morocco 2021 only - Apr 11 3:00 0 -
-Rule Morocco 2021 only - May 16 2:00 1:00 S
-Rule Morocco 2022 only - May 8 2:00 1:00 S
-Rule Morocco 2023 only - Apr 23 2:00 1:00 S
-Rule Morocco 2024 only - Apr 14 2:00 1:00 S
-Rule Morocco 2025 only - Apr 6 2:00 1:00 S
-Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
-Rule Morocco 2036 only - Oct 19 3:00 0 -
-Rule Morocco 2037 only - Oct 4 3:00 0 -
+Rule Morocco 2018 only - Jun 17 2:00 1:00 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
- 0:00 Morocco WE%sT 1984 Mar 16
- 1:00 - CET 1986
- 0:00 Morocco WE%sT
+ 0:00 Morocco +00/+01 1984 Mar 16
+ 1:00 - +01 1986
+ 0:00 Morocco +00/+01 2018 Oct 27
+ 1:00 - +01
# Western Sahara
#
@@ -958,7 +936,8 @@
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
-1:00 - -01 1976 Apr 14
- 0:00 Morocco WE%sT
+ 0:00 Morocco +00/+01 2018 Oct 27
+ 1:00 - +01
# Mozambique
#
--- a/test/jdk/sun/util/calendar/zi/tzdata/antarctica Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/antarctica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Antarctica and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/test/jdk/sun/util/calendar/zi/tzdata/asia Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/asia Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Asia and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -29,7 +31,7 @@
# tz@iana.org for general use in the future). For more, please see
# the file CONTRIBUTING in the tz distribution.
-# From Paul Eggert (2017-01-13):
+# From Paul Eggert (2018-06-19):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -58,7 +60,8 @@
# A reliable and entertaining source about time zones is
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
#
-# The following alphabetic abbreviations appear in these tables:
+# The following alphabetic abbreviations appear in these tables
+# (corrections are welcome):
# std dst
# LMT Local Mean Time
# 2:00 EET EEST Eastern European Time
@@ -67,11 +70,13 @@
# 7:00 WIB west Indonesia (Waktu Indonesia Barat)
# 8:00 WITA central Indonesia (Waktu Indonesia Tengah)
# 8:00 CST China
+# 8:00 PST PDT* Philippine Standard Time
# 8:30 KST KDT Korea when at +0830
# 9:00 WIT east Indonesia (Waktu Indonesia Timur)
# 9:00 JST JDT Japan
# 9:00 KST KDT Korea when at +09
# 9:30 ACST Australian Central Standard Time
+# *I invented the abbreviation PDT; see "Philippines" below.
# Otherwise, these tables typically use numeric abbreviations like +03
# and +0330 for integer hour and minute UT offsets. Although earlier
# editions invented alphabetic time zone abbreviations for every
@@ -304,6 +309,29 @@
# China
+# From Paul Eggert (2018-10-02):
+# The following comes from Table 1 of:
+# Li Yu. Research on the daylight saving movement in 1940s Shanghai.
+# Nanjing Journal of Social Sciences. 2014;(2):144-50.
+# http://oversea.cnki.net/kns55/detail.aspx?dbname=CJFD2014&filename=NJSH201402020
+# 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.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Shang 1940 only - Jun 1 0:00 1:00 D
+Rule Shang 1940 only - Oct 12 24:00 0 S
+Rule Shang 1941 only - Mar 15 0:00 1:00 D
+Rule Shang 1941 only - Nov 1 24:00 0 S
+Rule Shang 1942 only - Jan 31 0:00 1:00 D
+Rule Shang 1945 only - Sep 1 24:00 0 S
+Rule Shang 1946 only - May 15 0:00 1:00 D
+Rule Shang 1946 only - Sep 30 24:00 0 S
+Rule Shang 1947 only - Apr 15 0:00 1:00 D
+Rule Shang 1947 only - Oct 31 24:00 0 S
+Rule Shang 1948 1949 - May 1 0:00 1:00 D
+Rule Shang 1948 1949 - Sep 30 24:00 0 S #plan
+
# From Guy Harris:
# People's Republic of China. Yes, they really have only one time zone.
@@ -330,18 +358,33 @@
# time - sort of", Los Angeles Times, 1986-05-05 ... [says] that China began
# observing daylight saving time in 1986.
-# From Paul Eggert (2014-06-30):
-# Shanks & Pottenger have China switching to a single time zone in 1980, but
-# this doesn't seem to be correct. They also write that China observed summer
-# DST from 1986 through 1991, which seems to match the above commentary, so
-# go with them for DST rules as follows:
+# From P Chan (2018-05-07):
+# The start and end time of DST in China [from 1986 on] should be 2:00
+# (i.e. 2:00 to 3:00 at the start and 2:00 to 1:00 at the end)....
+# Government notices about summer time:
+#
+# 1986-04-12 http://www.zj.gov.cn/attach/zfgb/198608.pdf p.21-22
+# (To establish summer time from 1986. On 4 May, set the clocks ahead one hour
+# at 2 am. On 14 September, set the clocks backward one hour at 2 am.)
+#
+# 1987-02-15 http://www.gov.cn/gongbao/shuju/1987/gwyb198703.pdf p.114
+# (Summer time in 1987 to start from 12 April until 13 September)
+#
+# 1987-09-09 http://www.gov.cn/gongbao/shuju/1987/gwyb198721.pdf p.709
+# (From 1988, summer time to start from 2 am of the first Sunday of mid-April
+# until 2 am of the first Sunday of mid-September)
+#
+# 1992-03-03 http://www.gov.cn/gongbao/shuju/1992/gwyb199205.pdf p.152
+# (To suspend summer time from 1992)
+#
+# The first page of People's Daily on 12 April 1988 stating that summer time
+# to begin on 17 April.
+# http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Shang 1940 only - Jun 3 0:00 1:00 D
-Rule Shang 1940 1941 - Oct 1 0:00 0 S
-Rule Shang 1941 only - Mar 16 0:00 1:00 D
-Rule PRC 1986 only - May 4 0:00 1:00 D
-Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S
-Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D
+Rule PRC 1986 only - May 4 2:00 1:00 D
+Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
+Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
# From Anthony Fok (2001-12-20):
# BTW, I did some research on-line and found some info regarding these five
@@ -363,10 +406,11 @@
# Alois Treindl kindly sent me translations of the following two sources:
#
# (1)
-# Guo Qingsheng (National Time-Service Center, CAS, Xi'an 710600, China)
+# Guo Qing-sheng (National Time-Service Center, CAS, Xi'an 710600, China)
# Beijing Time at the Beginning of the PRC
# China Historical Materials of Science and Technology
-# (Zhongguo ke ji shi liao, 中国科技史料), Vol. 24, No. 1 (2003)
+# (Zhongguo ke ji shi liao, 中国科技史料). 2003;24(1):5-9.
+# http://oversea.cnki.net/kcms/detail/detail.aspx?filename=ZGKS200301000&dbname=CJFD2003
# It gives evidence that at the beginning of the PRC, Beijing time was
# officially apparent solar time! However, Guo also says that the
# evidence is dubious, as the relevant institute of astronomy had not
@@ -543,7 +587,7 @@
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
# Beijing time, used throughout China; represented by Shanghai.
Zone Asia/Shanghai 8:05:43 - LMT 1901
- 8:00 Shang C%sT 1949
+ 8:00 Shang C%sT 1949 May 28
8:00 PRC C%sT
# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
# / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.)
@@ -772,24 +816,140 @@
8:00 Taiwan C%sT
# Macau (Macao, Aomen)
+#
+# From P Chan (2018-05-10):
+# * LegisMac
+# http://legismac.safp.gov.mo/legismac/descqry/Descqry.jsf?lang=pt
+# A database for searching titles of legal documents of Macau in
+# Chinese and Portuguese. The term "HORÁRIO DE VERÃO" can be used for
+# searching decrees about summer time.
+# * Archives of Macao
+# http://www.archives.gov.mo/en/bo/
+# It contains images of old official gazettes.
+# * The Macao Meteorological and Geophysical Bureau have a page listing the
+# summer time history. But it is not complete and has some mistakes.
+# http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm
+# Macau adopted GMT+8 on 30 Oct 1904 to follow Hong Kong. Clocks were
+# advanced by 25 minutes and 50 seconds. Which means the LMT used was
+# +7:34:10. As stated in the "Portaria No. 204" dated 21 October 1904
+# and published in the Official Gazette on 29 October 1904.
+# http://igallery.icm.gov.mo/Images/Archives/BO/MO_AH_PUB_BO_1904_10/MO_AH_PUB_BO_1904_10_00025_Grey.JPG
+#
+# Therefore the 1911 decree of Portugal did not change time in Macau.
+#
+# From LegisMac, here is a list of decrees that changed the time ...
+# [Decree Gazette-no. date; titles omitted in this quotation]
+# DIL 732 BOCM 51 1941.12.20
+# DIL 764 BOCM 9S 1942.04.30
+# DIL 781 BOCM 21 1942.10.10
+# PT 3434 BOCM 8S 1943.04.17
+# PT 3504 BOCM 20 1943.09.25
+# PT 3843 BOCM 39 1945.09.29
+# PT 3961 BOCM 17 1946.04.27
+# PT 4026 BOCM 39 1946.09.28
+# PT 4153 BOCM 16 1947.04.10
+# PT 4271 BOCM 48 1947.11.29
+# PT 4374 BOCM 18 1948.05.01
+# PT 4465 BOCM 44 1948.10.30
+# PT 4590 BOCM 14 1949.04.02
+# PT 4666 BOCM 44 1949.10.29
+# PT 4771 BOCM 12 1950.03.25
+# PT 4838 BOCM 43 1950.10.28
+# PT 4946 BOCM 12 1951.03.24
+# PT 5025 BO 43 1951.10.27
+# PT 5149 BO 14 1952.04.05
+# PT 5251 BO 43 1952.10.25
+# PT 5366 BO 13 1953.03.28
+# PT 5444 BO 44 1953.10.31
+# PT 5540 BO 12 1954.03.20
+# PT 5589 BO 44 1954.10.30
+# PT 5676 BO 12 1955.03.19
+# PT 5739 BO 45 1955.11.05
+# PT 5823 BO 11 1956.03.17
+# PT 5891 BO 44 1956.11.03
+# PT 5981 BO 12 1957.03.23
+# PT 6064 BO 43 1957.10.26
+# PT 6172 BO 12 1958.03.22
+# PT 6243 BO 43 1958.10.25
+# PT 6341 BO 12 1959.03.21
+# PT 6411 BO 43 1959.10.24
+# PT 6514 BO 11 1960.03.12
+# PT 6584 BO 44 1960.10.29
+# PT 6721 BO 10 1961.03.11
+# PT 6815 BO 43 1961.10.28
+# PT 6947 BO 10 1962.03.10
+# PT 7080 BO 43 1962.10.27
+# PT 7218 BO 12 1963.03.23
+# PT 7340 BO 43 1963.10.26
+# PT 7491 BO 11 1964.03.14
+# PT 7664 BO 43 1964.10.24
+# PT 7846 BO 15 1965.04.10
+# PT 7979 BO 42 1965.10.16
+# PT 8146 BO 15 1966.04.09
+# PT 8252 BO 41 1966.10.08
+# PT 8429 BO 15 1967.04.15
+# PT 8540 BO 41 1967.10.14
+# PT 8735 BO 15 1968.04.13
+# PT 8860 BO 41 1968.10.12
+# PT 9035 BO 16 1969.04.19
+# PT 9156 BO 42 1969.10.18
+# PT 9328 BO 15 1970.04.11
+# PT 9418 BO 41 1970.10.10
+# PT 9587 BO 14 1971.04.03
+# PT 9702 BO 41 1971.10.09
+# PT 38-A/72 BO 14 1972.04.01
+# PT 126-A/72 BO 41 1972.10.07
+# PT 61/73 BO 14 1973.04.07
+# PT 182/73 BO 40 1973.10.06
+# PT 282/73 BO 51 1973.12.22
+# PT 177/74 BO 41 1974.10.12
+# PT 51/75 BO 15 1975.04.12
+# PT 173/75 BO 41 1975.10.11
+# PT 67/76/M BO 14 1976.04.03
+# PT 169/76/M BO 41 1976.10.09
+# PT 78/79/M BO 19 1979.05.12
+# PT 166/79/M BO 42 1979.10.20
+# Note that DIL 732 does not belong to "HORÁRIO DE VERÃO" according to
+# LegisMac.... Note that between 1942 and 1945, the time switched
+# between GMT+9 and GMT+10. Also in 1965 and 1965 the DST ended at 2:30am.
+
+# From Paul Eggert (2018-05-10):
+# The 1904 decree says that Macau changed from the meridian of
+# Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 D
-Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 S
-Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 D
-Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 D
-Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 D
-Rule Macau 1965 only - Oct 31 0:00 0 S
-Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 D
-Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 S
-Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 D
-Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 S
-Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 S
-Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 D
-Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 D
-Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 S
-# See Europe/Lisbon for info about the 1912 transition.
+Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
+Rule Macau 1942 only - Nov 17 23:00 0 -
+Rule Macau 1943 only - Sep 30 23:00 0 S
+Rule Macau 1946 only - Apr 30 23:00s 1:00 D
+Rule Macau 1946 only - Sep 30 23:00s 0 S
+Rule Macau 1947 only - Apr 19 23:00s 1:00 D
+Rule Macau 1947 only - Nov 30 23:00s 0 S
+Rule Macau 1948 only - May 2 23:00s 1:00 D
+Rule Macau 1948 only - Oct 31 23:00s 0 S
+Rule Macau 1949 1950 - Apr Sat>=1 23:00s 1:00 D
+Rule Macau 1949 1950 - Oct lastSat 23:00s 0 S
+Rule Macau 1951 only - Mar 31 23:00s 1:00 D
+Rule Macau 1951 only - Oct 28 23:00s 0 S
+Rule Macau 1952 1953 - Apr Sat>=1 23:00s 1:00 D
+Rule Macau 1952 only - Nov 1 23:00s 0 S
+Rule Macau 1953 1954 - Oct lastSat 23:00s 0 S
+Rule Macau 1954 1956 - Mar Sat>=17 23:00s 1:00 D
+Rule Macau 1955 only - Nov 5 23:00s 0 S
+Rule Macau 1956 1964 - Nov Sun>=1 03:30 0 S
+Rule Macau 1957 1964 - Mar Sun>=18 03:30 1:00 D
+Rule Macau 1965 1973 - Apr Sun>=16 03:30 1:00 D
+Rule Macau 1965 1966 - Oct Sun>=16 02:30 0 S
+Rule Macau 1967 1976 - Oct Sun>=16 03:30 0 S
+Rule Macau 1973 only - Dec 30 03:30 1:00 D
+Rule Macau 1975 1976 - Apr Sun>=16 03:30 1:00 D
+Rule Macau 1979 only - May 13 03:30 1:00 D
+Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-Zone Asia/Macau 7:34:20 - LMT 1911 Dec 31 16:00u
+Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
+ 8:00 - CST 1941 Dec 21 23:00
+ 9:00 Macau +09/+10 1945 Sep 30 24:00
8:00 Macau C%sT
@@ -1494,9 +1654,29 @@
# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00719500331039.htm
# ... In summary, it is written as follows. From 24:00 on the first Saturday
# in May, until 0:00 on the day after the second Saturday in September.
+
+# From Phake Nick (2018-09-27):
+# [T]he webpage authored by National Astronomical Observatory of Japan
+# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EF.html
+# ... mentioned that using Showa 23 (year 1948) as example, 13pm of September
+# 11 in summer time will equal to 0am of September 12 in standard time.
+# It cited a document issued by the Liaison Office which briefly existed
+# during the postwar period of Japan, where the detail on implementation
+# of the summer time is described in the document.
+# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EFB2C6BBFEB9EFA4CEBCC2BBDCA4CBA4C4A4A4A4C6.pdf
+# The text in the document do instruct a fall back to occur at
+# September 11, 13pm in summer time, while ordinary citizens can
+# change the clock before they sleep.
+#
+# From Paul Eggert (2018-09-27):
+# This instruction is equivalent to "Sat>=8 25:00", so use that. zic treats
+# it like "Sun>=9 01:00", which is not quite the same but is the best we can
+# do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
+# which should be safe now.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
-Rule Japan 1948 1951 - Sep Sun>=9 0:00 0 S
+Rule Japan 1948 1951 - Sep Sun>=9 1: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
@@ -1878,7 +2058,7 @@
5:00 - +05
# Mangghystaū (KZ-MAN)
# Aqtau was not founded until 1963, but it represents an inhabited region,
-# so include time stamps before 1963.
+# so include timestamps before 1963.
Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
4:00 - +04 1930 Jun 21
5:00 - +05 1981 Oct 1
@@ -2018,6 +2198,10 @@
# Assembly, as published in Rodong Sinmun.
# From Tim Parenti (2018-04-29):
# It appears to be the front page story at the top in the right-most column.
+#
+# From Paul Eggert (2018-05-04):
+# The BBC reported that the transition was from 23:30 to 24:00 today.
+# https://www.bbc.com/news/world-asia-44010705
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1
@@ -2030,7 +2214,7 @@
8:30 - KST 1912 Jan 1
9:00 - JST 1945 Aug 24
9:00 - KST 2015 Aug 15 00:00
- 8:30 - KST 2018 May 5
+ 8:30 - KST 2018 May 4 23:30
9:00 - KST
###############################################################################
@@ -2780,19 +2964,35 @@
# Philippine Star 2014-08-05
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
+# From Paul Goyette (2018-06-15):
+# In the Philippines, there is a national law, Republic Act No. 10535
+# which declares the official time here as "Philippine Standard Time".
+# The act [1] even specifies use of PST as the abbreviation, although
+# the FAQ provided by PAGASA [2] uses the "acronym PhST to distinguish
+# it from the Pacific Standard Time (PST)."
+# [1] http://www.officialgazette.gov.ph/2013/05/15/republic-act-no-10535/
+# [2] https://www1.pagasa.dost.gov.ph/index.php/astronomy/philippine-standard-time#republic-act-10535
+#
+# From Paul Eggert (2018-06-19):
+# I surveyed recent news reports, and my impression is that "PST" is
+# more popular among reliable English-language news sources. This is
+# not just a measure of Google hit counts: it's also the sizes and
+# influence of the sources. There is no current abbreviation for DST,
+# so use "PDT", the usual American style.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
-Rule Phil 1936 only - Nov 1 0:00 1:00 -
-Rule Phil 1937 only - Feb 1 0:00 0 -
-Rule Phil 1954 only - Apr 12 0:00 1:00 -
-Rule Phil 1954 only - Jul 1 0:00 0 -
-Rule Phil 1978 only - Mar 22 0:00 1:00 -
-Rule Phil 1978 only - Sep 21 0:00 0 -
+Rule Phil 1936 only - Nov 1 0:00 1:00 D
+Rule Phil 1937 only - Feb 1 0:00 0 S
+Rule Phil 1954 only - Apr 12 0:00 1:00 D
+Rule Phil 1954 only - Jul 1 0:00 0 S
+Rule Phil 1978 only - Mar 22 0:00 1:00 D
+Rule Phil 1978 only - Sep 21 0:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
8:04:00 - LMT 1899 May 11
- 8:00 Phil +08/+09 1942 May
- 9:00 - +09 1944 Nov
- 8:00 Phil +08/+09
+ 8:00 Phil P%sT 1942 May
+ 9:00 - JST 1944 Nov
+ 8:00 Phil P%sT
# Qatar
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -2803,15 +3003,34 @@
# Saudi Arabia
#
-# From Paul Eggert (2014-07-15):
+# From Paul Eggert (2018-08-29):
# Time in Saudi Arabia and other countries in the Arabian peninsula was not
-# standardized until relatively recently; we don't know when, and possibly it
+# standardized until 1968 or so; we don't know exactly when, and possibly it
# has never been made official. Richard P Hunt, in "Islam city yielding to
# modern times", New York Times (1961-04-09), p 20, wrote that only airlines
# observed standard time, and that people in Jeddah mostly observed quasi-solar
# time, doing so by setting their watches at sunrise to 6 o'clock (or to 12
# o'clock for "Arab" time).
#
+# Timekeeping differed depending on who you were and which part of Saudi
+# Arabia you were in. In 1969, Elias Antar wrote that although a common
+# practice had been to set one's watch to 12:00 (i.e., midnight) at sunset -
+# which meant that the time on one side of a mountain could differ greatly from
+# the time on the other side - many foreigners set their watches to 6pm
+# instead, while airlines instead used UTC +03 (except in Dhahran, where they
+# used UTC +04), Aramco used UTC +03 with DST, and the Trans-Arabian Pipe Line
+# Company used Aramco time in eastern Saudi Arabia and airline time in western.
+# (The American Military Aid Advisory Group used plain UTC.) Antar writes,
+# "A man named Higgins, so the story goes, used to run a local power
+# station. One day, the whole thing became too much for Higgins and he
+# assembled his staff and laid down the law. 'I've had enough of this,' he
+# shrieked. 'It is now 12 o'clock Higgins Time, and from now on this station is
+# going to run on Higgins Time.' And so, until last year, it did." See:
+# Antar E. Dinner at When? Saudi Aramco World, 1969 March/April. 2-3.
+# http://archive.aramcoworld.com/issue/196902/dinner.at.when.htm
+# newspapers.com says a similar story about Higgins was published in the Port
+# Angeles (WA) Evening News, 1965-03-10, page 5, but I lack access to the text.
+#
# The TZ database cannot represent quasi-solar time; airline time is the best
# we can do. The 1946 foreign air news digest of the U.S. Civil Aeronautics
# Board (OCLC 42299995) reported that the "... Arabian Government, inaugurated
@@ -2821,7 +3040,8 @@
#
# Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two
# time zones; the other zone, at UT +04, was in the far eastern part of
-# the country. Ignore this, as it's before our 1970 cutoff.
+# the country. Presumably this is documenting airline time. Ignore this,
+# as it's before our 1970 cutoff.
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Riyadh 3:06:52 - LMT 1947 Mar 14
--- a/test/jdk/sun/util/calendar/zi/tzdata/australasia Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/australasia Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Australasia and environs, and for much of the Pacific
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -384,8 +386,15 @@
# Dominic Fok writes (2017-08-20) that DST ends 2018-01-14, citing
# Extraordinary Government of Fiji Gazette Supplement No. 21 (2017-08-27),
# [Legal Notice No. 41] of an order of the previous day by J Usamate.
+
+# From Raymond Kumar (2018-07-13):
+# http://www.fijitimes.com/government-approves-2018-daylight-saving/
+# ... The daylight saving period will end at 3am on Sunday January 13, 2019.
+#
+# From Paul Eggert (2018-07-15):
# For now, guess DST from 02:00 the first Sunday in November to 03:00
-# the first Sunday on or after January 14. Although ad hoc, it matches
+# the first Sunday on or after January 13. January transitions reportedly
+# depend on when school terms start. Although the guess is ad hoc, it matches
# transitions since late 2014 and seems more likely to match future
# practice than guessing no DST.
@@ -399,7 +408,7 @@
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
-Rule Fiji 2015 max - Jan Sun>=14 3:00 0 -
+Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
12:00 Fiji +12/+13
--- a/test/jdk/sun/util/calendar/zi/tzdata/backward Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/backward Fri Nov 02 11:34:56 2018 -0400
@@ -21,10 +21,12 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb links for backward compatibility
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
-# This file provides links between current names for time zones
+# This file provides links between current names for timezones
# and their old names. Many names changed in late 1993.
# Link TARGET LINK-NAME
--- a/test/jdk/sun/util/calendar/zi/tzdata/etcetera Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/etcetera Fri Nov 02 11:34:56 2018 -0400
@@ -21,12 +21,14 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for ships at sea and other miscellany
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
# These entries are mostly present for historical reasons, so that
# people in areas not otherwise covered by the tz files could "zic -l"
-# to a time zone that was right for their area. These days, the
+# to a timezone that was right for their area. These days, the
# tz files cover almost all the inhabited world, and the only practical
# need now for the entries that are not on UTC are for ships at sea
# that cannot use POSIX TZ settings.
--- a/test/jdk/sun/util/calendar/zi/tzdata/europe Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/europe Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for Europe and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -540,7 +542,7 @@
#
# To work around this problem, the build procedure can translate the
# following data into two forms, one with negative SAVE values and the
-# other form with a traditional approximation for Irish time stamps
+# other form with a traditional approximation for Irish timestamps
# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst
# flags that are reversed, its UTC offsets are correct and this often
# suffices. This source file currently uses only nonnegative SAVE
@@ -2450,6 +2452,33 @@
# administratively part of Sakhalin oblast', they appear to have
# remained on UTC+11 along with Magadan.
+# From Marat Nigametzianov (2018-07-16):
+# this is link to order from 1956 about timezone in USSR
+# http://astro.uni-altai.ru/~orion/blog/2011/11/novyie-granitsyi-chasovyih-poyasov-v-sssr/
+#
+# From Paul Eggert (2018-07-16):
+# Perhaps someone could translate the above-mentioned link and use it
+# to correct our data for the ex-Soviet Union. It cites the following:
+# «Поясное время и новые границы часовых поясов» / сост. П.Н. Долгов,
+# отв. ред. Г.Д. Бурдун - М: Комитет стандартов, мер и измерительных
+# приборов при Совете Министров СССР, Междуведомственная комиссия
+# единой службы времени, 1956 г.
+# This book looks like it would be a helpful resource for the Soviet
+# Union through 1956. Although a copy was in the Scientific Library
+# of Tomsk State University, I have not been able to track down a copy nearby.
+#
+# From Stepan Golosunov (2018-07-21):
+# http://astro.uni-altai.ru/~orion/blog/2015/05/center-reforma-ischisleniya-vremeni-br-na-territorii-sssr-v-1957-godu-center/
+# says that the 1956 decision to change time belts' borders was not
+# implemented as planned in 1956 and the change happened in 1957.
+# There is also the problem that actual time zones were different from
+# the official time belts (and from many time belts' maps) as there were
+# numerous exceptions to application of time belt rules. For example,
+# https://ru.wikipedia.org/wiki/Московское_время#Перемещение_границы_применения_московского_времени_на_восток
+# says that by 1962 there were many regions in the 3rd time belt that
+# were on Moscow time, referring to a 1962 map. By 1989 number of such
+# exceptions grew considerably.
+
# From Tim Parenti (2014-07-06):
# The comments detailing the coverage of each Russian zone are meant to assist
# with maintenance only and represent our best guesses as to which regions
@@ -2460,9 +2489,6 @@
# future stability. ISO 3166-2:RU codes are also listed for first-level
# divisions where available.
-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-
-
# From Tim Parenti (2014-07-03):
# Europe/Kaliningrad covers...
# 39 RU-KGD Kaliningrad Oblast
@@ -2730,6 +2756,15 @@
# 34 RU-VGG Volgograd Oblast
# The 1988 transition is from USSR act No. 5 (1988-01-04).
+# From Alexander Fetisov (2018-09-20):
+# Volgograd region in southern Russia (Europe/Volgograd) change
+# timezone from UTC+3 to UTC+4 from 28oct2018.
+# http://sozd.parliament.gov.ru/bill/452878-7
+#
+# From Stepan Golosunov (2018-10-11):
+# The law has been published today on
+# http://publication.pravo.gov.ru/Document/View/0001201810110037
+
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
3:00 - +03 1930 Jun 21
4:00 - +04 1961 Nov 11
@@ -2738,7 +2773,8 @@
4:00 - +04 1992 Mar 29 2:00s
3:00 Russia +03/+04 2011 Mar 27 2:00s
4:00 - +04 2014 Oct 26 2:00s
- 3:00 - +03
+ 3:00 - +03 2018 Oct 28 2:00s
+ 4:00 - +04
# From Paul Eggert (2016-11-11):
# Europe/Saratov covers:
@@ -3427,7 +3463,8 @@
#Rule NatSpain 1937 only - May 22 23:00 1:00 S
#Rule NatSpain 1937 1938 - Oct Sat>=1 24:00s 0 -
#Rule NatSpain 1938 only - Mar 26 23:00 1:00 S
-# The following rules are copied from Morocco from 1967 through 1978.
+# The following rules are copied from Morocco from 1967 through 1978,
+# except with "S" letters.
Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
@@ -3447,6 +3484,7 @@
0:00 1:00 WEST 1918 Oct 7 23:00
0:00 - WET 1924
0:00 Spain WE%sT 1929
+ 0:00 - WET 1967 # Help zishrink.awk.
0:00 SpainAfrica WE%sT 1984 Mar 16
1:00 - CET 1986
1:00 EU CE%sT
@@ -3632,7 +3670,7 @@
# http://www.resmigazete.gov.tr/eskiler/2001/03/20010324.htm#2 - for 2001
# http://www.resmigazete.gov.tr/eskiler/2002/03/20020316.htm#2 - for 2002-2006
# From Paul Eggert (2016-09-25):
-# Prefer the above sources to Shanks & Pottenger for time stamps after 1985.
+# Prefer the above sources to Shanks & Pottenger for timestamps after 1985.
# From Steffen Thorsen (2007-03-09):
# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
@@ -3842,10 +3880,29 @@
# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
+# From Paul Eggert (2018-10-03):
+# As is usual in tzdb, Ukrainian zones use the most common English spellings.
+# For example, tzdb uses Europe/Kiev, as "Kiev" is the most common spelling in
+# English for Ukraine's capital, even though it is certainly wrong as a
+# transliteration of the Ukrainian "Київ". This is similar to tzdb's use of
+# Europe/Prague, which is certainly wrong as a transliteration of the Czech
+# "Praha". ("Kiev" came from old Slavic via Russian to English, and "Prague"
+# came from old Slavic via French to English, so the two cases have something
+# in common.) Admittedly English-language spelling of Ukrainian names is
+# controversial, and some day "Kyiv" may become substantially more popular in
+# English; in the meantime, stick with the traditional English "Kiev" as that
+# means less disruption for our users.
+#
+# Anyway, none of the common English-language spellings (Kiev, Kyiv, Kieff,
+# Kijeff, Kijev, Kiyef, Kiyeff) do justice to the common pronunciation in
+# Ukrainian, namely [ˈkɪjiu̯] (IPA). This pronunciation has nothing like an
+# English "v" or "f", and instead trails off with what an English-speaker
+# would call a demure "oo" sound, and it would would be better anglicized as
+# "Kuiyu". Here's a sound file, if you would like to do as the Kuiyuvians do:
+# https://commons.wikimedia.org/wiki/File:Uk-Київ.ogg
+
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
-# Most of Ukraine since 1970 has been like Kiev.
-# "Kyiv" is the transliteration of the Ukrainian name, but
-# "Kiev" is more common in English.
+# This represents most of Ukraine. See above for the spelling of "Kiev".
Zone Europe/Kiev 2:02:04 - LMT 1880
2:02:04 - KMT 1924 May 2 # Kiev Mean Time
2:00 - EET 1930 Jun 21
--- a/test/jdk/sun/util/calendar/zi/tzdata/factory Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/factory Fri Nov 02 11:34:56 2018 -0400
@@ -21,11 +21,13 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for noncommittal factory settings
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
-# For distributors who don't want to put time zone specification in
-# their installation procedures. Users that run 'date' will get the
+# For distributors who don't want to specify a timezone in their
+# installation procedures. Users who run 'date' will get the
# time zone abbreviation "-00", indicating that the actual time zone
# is unknown.
--- a/test/jdk/sun/util/calendar/zi/tzdata/leapseconds Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/leapseconds Fri Nov 02 11:34:56 2018 -0400
@@ -26,21 +26,25 @@
# This file is in the public domain.
# This file is generated automatically from the data in the public-domain
-# leap-seconds.list file, which is copied from:
-# ftp://ftp.nist.gov/pub/time/leap-seconds.list
+# leap-seconds.list file, which can be copied from
+# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
+# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>
+# or <ftp://tycho.usno.navy.mil/pub/ntp/leap-seconds.list>.
# For more about leap-seconds.list, please see
# The NTP Timescale and Leap Seconds
-# https://www.eecis.udel.edu/~mills/leap.html
+# <https://www.eecis.udel.edu/~mills/leap.html>.
# The International Earth Rotation and Reference Systems Service
# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
-# (which measures the true angular orientation of the earth in space); see
-# Levine J. Coordinated Universal Time and the leap second.
+# (which measures the true angular orientation of the earth in space)
+# and publishes leap second data in a copyrighted file
+# <https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat>.
+# See: Levine J. Coordinated Universal Time and the leap second.
# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995
-# http://ieeexplore.ieee.org/document/7909995/
+# <https://ieeexplore.ieee.org/document/7909995>.
# There were no leap seconds before 1972, because the official mechanism
# accounting for the discrepancy between atomic time and the earth's rotation
-# did not exist until the early 1970s.
+# did not exist.
# The correction (+ or -) is made at the given time, so lines
# will typically look like:
@@ -48,10 +52,7 @@
# or
# Leap YEAR MON DAY 23:59:59 - R/S
-# If the leapsecond is Rolling (R) the given time is local time.
-# If the leapsecond is Stationary (S) the given time is UTC.
-
-# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
+# If the leap second is Rolling (R) the given time is local time (unused here).
Leap 1972 Jun 30 23:59:60 + S
Leap 1972 Dec 31 23:59:60 + S
Leap 1973 Dec 31 23:59:60 + S
@@ -80,5 +81,9 @@
Leap 2015 Jun 30 23:59:60 + S
Leap 2016 Dec 31 23:59:60 + S
-# Updated through IERS Bulletin C55
-# File expires on: 28 December 2018
+# POSIX timestamps for the data in this file:
+#updated 1467936000
+#expires 1561680000
+
+# Updated through IERS Bulletin C56
+# File expires on: 28 June 2019
--- a/test/jdk/sun/util/calendar/zi/tzdata/northamerica Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/northamerica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for North and Central America and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -71,7 +73,7 @@
#
# Most of the US soon followed suit. See:
# Bartky IR. The adoption of standard time. Technol Cult 1989 Jan;30(1):25-56.
-# http://dx.doi.org/10.2307/3105430
+# https://dx.doi.org/10.2307/3105430
# From Paul Eggert (2005-04-16):
# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
@@ -460,6 +462,19 @@
# western South Dakota, far western Texas (El Paso County, Hudspeth County,
# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
#
+# From Paul Eggert (2018-10-25):
+# On 1921-03-04 federal law placed all of Texas into the central time zone.
+# However, El Paso ignored the law for decades and continued to observe
+# mountain time, on the grounds that that's what they had always done
+# and they weren't about to let the federal government tell them what to do.
+# Eventually the federal government gave in and changed the law on
+# 1970-04-10 to match what El Paso was actually doing. Although
+# that's slightly after our 1970 cutoff, there is no need to create a
+# separate zone for El Paso since they were ignoring the law anyway. See:
+# Long T. El Pasoans were time rebels, fought to stay in Mountain zone.
+# El Paso Times. 2018-10-24 06:40 -06.
+# https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
+#
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
Rule Denver 1920 only - Oct lastSun 2:00 0 S
@@ -729,9 +744,7 @@
Zone Pacific/Honolulu -10:31:26 - LMT 1896 Jan 13 12:00
-10:30 - HST 1933 Apr 30 2:00
-10:30 1:00 HDT 1933 May 21 12:00
- -10:30 - HST 1942 Feb 9 2:00
- -10:30 1:00 HDT 1945 Sep 30 2:00
- -10:30 - HST 1947 Jun 8 2:00
+ -10:30 US H%sT 1947 Jun 8 2:00
-10:00 - HST
# Now we turn to US areas that have diverged from the consensus since 1970.
--- a/test/jdk/sun/util/calendar/zi/tzdata/pacificnew Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/pacificnew Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for proposed US election time (this file is obsolete)
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/test/jdk/sun/util/calendar/zi/tzdata/southamerica Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/southamerica Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for South America and environs
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -415,7 +417,7 @@
# standard time, so let's do that here too. This does not change UTC
# offsets, only tm_isdst and the time zone abbreviations. One minor
# plus is that this silences a zic complaint that there's no POSIX TZ
-# setting for time stamps past 2038.
+# setting for timestamps past 2038.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
@@ -948,6 +950,14 @@
# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
# From Steffen Thorsen (2017-12-20):
# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
+#
+# From Fábio Gomes (2018-10-04):
+# The Brazilian president just announced a new change on this year DST.
+# It was scheduled to start on November 4th and it was changed to November 18th.
+# From Rodrigo Brüning Wessler (2018-10-15):
+# The Brazilian government just announced that the change in DST was
+# canceled.... Maybe the president Michel Temer also woke up one hour
+# earlier today. :)
Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
@@ -1254,6 +1264,24 @@
# they will switch from -03 to -04 one hour after Santiago does that day.
# For now, assume that they will not revert.
+# From Juan Correa (2018-08-13):
+# As of moments ago, the Ministry of Energy in Chile has announced the new
+# schema for DST. ... Announcement in video (in Spanish):
+# https://twitter.com/MinEnergia/status/1029000399129374720
+# From Yonathan Dossow (2018-08-13):
+# The video says "first Saturday of September", we all know it means Sunday at
+# midnight.
+# From Tim Parenti (2018-08-13):
+# Translating the captions on the video at 0:44-0:55, "We want to announce as
+# Government that from 2019, Winter Time will be increased to 5 months, between
+# the first Saturday of April and the first Saturday of September."
+# At 2:08-2:20, "The Magallanes region will maintain its current time, as
+# decided by the citizens during 2017, but our Government will promote a
+# regional dialogue table to gather their opinion on this matter."
+# https://twitter.com/MinEnergia/status/1029009354001973248
+# "We will keep the new time policy unchanged for at least the next 4 years."
+# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
+
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
Rule Chile 1928 1932 - Apr 1 0:00 0 -
@@ -1287,8 +1315,10 @@
Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
-Rule Chile 2016 max - May Sun>=9 3:00u 0 -
-Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 -
+Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
+Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
+Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
+Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08. Ignore these.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
--- a/test/jdk/sun/util/calendar/zi/tzdata/systemv Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/systemv Fri Nov 02 11:34:56 2018 -0400
@@ -21,6 +21,8 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
+# tzdb data for System V rules (this file is obsolete)
+
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
--- a/test/jdk/sun/util/calendar/zi/tzdata/zone.tab Thu Nov 01 14:36:18 2018 -0400
+++ b/test/jdk/sun/util/calendar/zi/tzdata/zone.tab Fri Nov 02 11:34:56 2018 -0400
@@ -21,12 +21,12 @@
# or visit www.oracle.com if you need additional information or have any
# questions.
#
-# tz zone descriptions (deprecated version)
+# tzdb timezone descriptions (deprecated version)
#
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
-# From Paul Eggert (2014-07-31):
+# From Paul Eggert (2018-06-27):
# This file is intended as a backward-compatibility aid for older programs.
# New programs should use zone1970.tab. This file is like zone1970.tab (see
# zone1970.tab's comments), but with the following additional restrictions:
@@ -35,13 +35,13 @@
# 2. The first data column contains exactly one country code.
#
# Because of (2), each row stands for an area that is the intersection
-# of a region identified by a country code and of a zone where civil
+# of a region identified by a country code and of a timezone where civil
# clocks have agreed since 1970; this is a narrower definition than
# that of zone1970.tab.
#
-# This table is intended as an aid for users, to help them select time
-# zone data entries appropriate for their practical needs. It is not
-# intended to take or endorse any position on legal or territorial claims.
+# This table is intended as an aid for users, to help them select timezones
+# appropriate for their practical needs. It is not intended to take or
+# endorse any position on legal or territorial claims.
#
#country-
#code coordinates TZ comments
@@ -291,7 +291,7 @@
MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas)
MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
-MO +2214+11335 Asia/Macau
+MO +221150+1133230 Asia/Macau
MP +1512+14545 Pacific/Saipan
MQ +1436-06105 America/Martinique
MR +1806-01557 Africa/Nouakchott
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/Foo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/Foo.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/inpackage.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/inpackage.html Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation. Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
+published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/sub-dir/SubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/sub-dir/SubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/sub-dir/sub-dir-1/SubSubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/doc-files/sub-dir/sub-dir-1/SubSubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme.mdle/p/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/Foo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/Foo.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/inpackage.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/inpackage.html Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation. Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
+published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/sub-dir/SubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/sub-dir/SubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/sub-dir/sub-dir-1/SubSubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/doc-files/sub-dir/sub-dir-1/SubSubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/acme2.mdle/p2/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/overview.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/modules/overview.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/Foo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/Foo.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/doc-files/inpackage.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/doc-files/inpackage.html Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation. Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
+published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/doc-files/sub-dir/SubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p1/doc-files/sub-dir/SubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/Foo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/Foo.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case1.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case1.html Fri Nov 02 11:34:56 2018 -0400
@@ -7,9 +7,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case2.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case2.html Fri Nov 02 11:34:56 2018 -0400
@@ -7,9 +7,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case3.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case3.html Fri Nov 02 11:34:56 2018 -0400
@@ -7,9 +7,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case4.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/packages/p2/doc-files/case4.html Fri Nov 02 11:34:56 2018 -0400
@@ -7,9 +7,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/Foo.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/Foo.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/doc-files/doc-file/SubReadme.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/doc-files/doc-file/SubReadme.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,9 +5,7 @@
~
~ This code is free software; you can redistribute it and/or modify it
~ under the terms of the GNU General Public License version 2 only, as
- ~ published by the Free Software Foundation. Oracle designates this
- ~ particular file as subject to the "Classpath" exception as provided
- ~ by Oracle in the LICENSE file that accompanied this code.
+ ~ published by the Free Software Foundation.
~
~ This code is distributed in the hope that it will be useful, but WITHOUT
~ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/doc-files/inpackage.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testCopyFiles/unnamed/doc-files/inpackage.html Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation. Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
+published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testGrandParentTypes/TestGrandParentTypes.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testGrandParentTypes/TestGrandParentTypes.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testHeadTag/TestHeadTag.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testHeadTag/TestHeadTag.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testHtmlLandmarkRegions/TestHtmlLankmarkRegions.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlLandmarkRegions/TestHtmlLankmarkRegions.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testHtmlTag/pkg3/A.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlTag/pkg3/A.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testHtmlTag/pkg3/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlTag/pkg3/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -8,9 +8,7 @@
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation. Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
+published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleA/concealedpkgmdlA/ConcealedClassInModuleA.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleA/concealedpkgmdlA/ConcealedClassInModuleA.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleA/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleA/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleA/testpkgmdlA/TestClassInModuleA.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleA/testpkgmdlA/TestClassInModuleA.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg2mdlB/TestInterface2InModuleB.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg2mdlB/TestInterface2InModuleB.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg2mdlB/TestInterfaceInModuleB.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg2mdlB/TestInterfaceInModuleB.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg3mdlB/TestClassLinkOption.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkg3mdlB/TestClassLinkOption.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkgmdlB/TestClass2InModuleB.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkgmdlB/TestClass2InModuleB.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkgmdlB/TestClassInModuleB.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleB/testpkgmdlB/TestClassInModuleB.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleC/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleC/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleC/testpkgmdlC/TestClassInModuleC.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleC/testpkgmdlC/TestClassInModuleC.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleNoExport/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleNoExport/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleNoExport/testpkgmdlNoExport/TestClassInModuleNoExport.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleNoExport/testpkgmdlNoExport/TestClassInModuleNoExport.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduleT/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduleT/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduletags/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduletags/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/moduletags/testpkgmdltags/TestClassInModuleTags.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/moduletags/testpkgmdltags/TestClassInModuleTags.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/test.moduleFullName/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/test.moduleFullName/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/test.moduleFullName/testpkgmdlfullname/TestClassInTestModuleFullName.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/test.moduleFullName/testpkgmdlfullname/TestClassInTestModuleFullName.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/testpkgnomodule/TestClassNoModule.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/testpkgnomodule/TestClassNoModule.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testModules/testpkgnomodule1/TestClassNoModulePkg1.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testModules/testpkgnomodule1/TestClassNoModulePkg1.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg5/TestEnum.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testOverriddenMethods/pkg5/TestEnum.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testOverview/msrc/module-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testOverview/msrc/module-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testPackageDescription/pkg/package-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testPackageDescription/pkg/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testSummaryTag/TestSummaryTag.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testSummaryTag/TestSummaryTag.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/doclet/testSummaryTag/p2/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testSummaryTag/p2/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -2,4 +2,4 @@
<BODY>
foo {@summary bar} baz.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/jdk/javadoc/doclet/testValueTag/pkg3/RT.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/doclet/testValueTag/pkg3/RT.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/jdk/javadoc/tool/TestScriptInComment.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/jdk/javadoc/tool/TestScriptInComment.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8133247/T8133247.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8133247/T8133247.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8133247/p/A.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8133247/p/A.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8133247/p/B.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8133247/p/B.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8133247/p/I.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8133247/p/I.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8169345/T8169345b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8169345/T8169345b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/8169345/T8169345c.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/8169345/T8169345c.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/DefiniteAssignment/T8204610.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/DefiniteAssignment/T8204610.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/annotations/8145489/foo/Anno.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/annotations/8145489/foo/Anno.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/annotations/8145489/foo/Status.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/annotations/8145489/foo/Status.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/annotations/8145489/foo/package-info.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/annotations/8145489/foo/package-info.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/classreader/8171132/BadConstantValue.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/classreader/8171132/BadConstantValue.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/FutureVarNotAllowed.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/FutureVarNotAllowed.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/IllegalRefToVarType.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/IllegalRefToVarType.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/IllegalSignature.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/IllegalSignature.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalCantInferNull.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalCantInferNull.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalCantInferVoid.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalCantInferVoid.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalLambdaMissingTarget.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalLambdaMissingTarget.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalMissingInit.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalMissingInit.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalMrefMissingTarget.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalMrefMissingTarget.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalRedundantType.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalRedundantType.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/LocalSelfRef.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/LocalSelfRef.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewFeatureDisabled.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewFeatureDisabled.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewFeatureDisabledPlural.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewFeatureDisabledPlural.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewFeatureUse.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewFeatureUse.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewFilename.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewFilename.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewFilenameAdditional.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewFilenameAdditional.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPlural.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPlural.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPluralBar.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/PreviewPlural/PreviewPluralBar.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/StatExprExpected.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/StatExprExpected.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/VarNotAllowed.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/VarNotAllowed.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/VarNotAllowedArray.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/VarNotAllowedArray.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/VarNotAllowedCompound.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/VarNotAllowedCompound.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/VarNotAllowedExplicitLambda.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/VarNotAllowedExplicitLambda.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/VarNotAllowedHere.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/VarNotAllowedHere.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/diags/examples/WrongNumberTypeArgsFragment.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/diags/examples/WrongNumberTypeArgsFragment.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/doctree/SummaryTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/SummaryTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/doctree/dcapi/overview0.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/overview0.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,4 +5,4 @@
<BODY>
A simple well formed html document <pre>overview0.html</pre>.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/doctree/dcapi/overview1.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/overview1.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,4 +5,4 @@
Html document <pre>overview1.html</pre>.
Missing HTML.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/doctree/dcapi/overview2.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/overview2.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,4 +5,4 @@
Html document <pre>overview2.html</pre>.
Missing HEAD.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/doctree/dcapi/overview3.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/overview3.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,4 +5,4 @@
Html document <pre>overview3.html</pre>.
Missing enclosing HEAD.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/doctree/dcapi/overview5.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/overview5.html Fri Nov 02 11:34:56 2018 -0400
@@ -5,4 +5,4 @@
<BODY>
Html document <pre>overview5.html</pre>.
Missing enclosing HTML
-</BODY>
\ No newline at end of file
+</BODY>
--- a/test/langtools/tools/javac/doctree/dcapi/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -8,4 +8,4 @@
<BODY>
A simple well formed html document <pre>package.html<pre>.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/doctree/dcapi/pkg/package.html Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/doctree/dcapi/pkg/package.html Fri Nov 02 11:34:56 2018 -0400
@@ -6,4 +6,4 @@
A simple well formed html document <pre>package.html</pre>.
In package pkg.
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
--- a/test/langtools/tools/javac/generics/diamond/7002837/T7002837.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/diamond/7002837/T7002837.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/diamond/neg/T8078473.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/diamond/neg/T8078473.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/diamond/neg/T8078473_2.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/diamond/neg/T8078473_2.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8067767/T8067767.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8067767/T8067767.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8077306/T8077306.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8077306/T8077306.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8141613/T8141613.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8141613/T8141613.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8147493/T8147493a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8147493/T8147493a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8147493/T8147493b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8147493/T8147493b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8152832/T8152832.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8152832/T8152832.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8156954/T8156954.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8156954/T8156954.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8157149/T8157149b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8157149/T8157149b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8157149/T8157149c.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8157149/T8157149c.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8158355/T8158355.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8158355/T8158355.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8159680/T8159680.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8159680/T8159680.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8164399/T8164399.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8164399/T8164399.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8168134/T8168134.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8168134/T8168134.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8174249/T8174249a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8174249/T8174249a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8174249/T8174249b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8174249/T8174249b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8176534/TestUncheckedCalls.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8176534/TestUncheckedCalls.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8177097/T8177097a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8177097/T8177097a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8177097/T8177097b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8177097/T8177097b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8178150/T8178150.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8178150/T8178150.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/generics/inference/8178427/T8178427.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/generics/inference/8178427/T8178427.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8063054/T8063054a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8063054/T8063054a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8063054/T8063054b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8063054/T8063054b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8134329/T8134329.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8134329/T8134329.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8142876/T8142876.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8142876/T8142876.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8148128/T8148128.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8148128/T8148128.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8188144/T8188144.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8188144/T8188144.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/8210495/T8210495.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/8210495/T8210495.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/T8195598.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/T8195598.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/8147546/T8147546a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/8147546/T8147546a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/8147546/T8147546b.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/8147546/T8147546b.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/8154180/T8154180a.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/8154180/T8154180a.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/InferStrict.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/InferStrict.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/InferWeak.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/InferWeak.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/NestedLambdaGenerics.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/NestedLambdaGenerics.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/NestedLambdaNoGenerics.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/NestedLambdaNoGenerics.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/T8046685.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/T8046685.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/T8055984.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/T8055984.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/T8077247.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/T8077247.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lambda/speculative/T8078093.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lambda/speculative/T8078093.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/T8191893.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/T8191893.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/T8191959.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/T8191959.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/T8200199.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/T8200199.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,28 +1,3 @@
-/*
- * Copyright (c) 2018, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
/*
* @test /nodynamiccopyright/
* @bug 8200199
--- a/test/langtools/tools/javac/lvti/T8200199.out Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/T8200199.out Fri Nov 02 11:34:56 2018 -0400
@@ -1,6 +1,6 @@
-T8200199.java:46:13: compiler.warn.local.redundant.type
-T8200199.java:47:18: compiler.warn.local.redundant.type
-T8200199.java:48:23: compiler.warn.local.redundant.type
+T8200199.java:21:13: compiler.warn.local.redundant.type
+T8200199.java:22:18: compiler.warn.local.redundant.type
+T8200199.java:23:23: compiler.warn.local.redundant.type
- compiler.err.warnings.and.werror
1 error
3 warnings
--- a/test/langtools/tools/javac/lvti/TestBadArray.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/TestBadArray.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/badTypeReference/BadTypeReference.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/badTypeReference/BadTypeReference.java Fri Nov 02 11:34:56 2018 -0400
@@ -1,28 +1,3 @@
-/*
- * Copyright (c) 2017, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
/*
* @test /nodynamiccopyright/
* @bug 8177466
--- a/test/langtools/tools/javac/lvti/badTypeReference/BadTypeReference.out Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/badTypeReference/BadTypeReference.out Fri Nov 02 11:34:56 2018 -0400
@@ -1,3 +1,3 @@
-BadTypeReference.java:39:9: compiler.err.illegal.ref.to.var.type
-BadTypeReference.java:40:21: compiler.err.illegal.ref.to.var.type
+BadTypeReference.java:14:9: compiler.err.illegal.ref.to.var.type
+BadTypeReference.java:15:21: compiler.err.illegal.ref.to.var.type
2 errors
--- a/test/langtools/tools/javac/lvti/badTypeReference/pkg/nested/var/A.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/badTypeReference/pkg/nested/var/A.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/badTypeReference/pkg/var.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/badTypeReference/pkg/var.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/InferredType.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/InferredType.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/LocalVariableInferenceTester.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/LocalVariableInferenceTester.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/NonDenotableTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/NonDenotableTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/PrimitiveTypeTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/PrimitiveTypeTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/ReferenceTypeTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/ReferenceTypeTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/lvti/harness/UpperBounds.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/lvti/harness/UpperBounds.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/modules/T8168854/pack1/Outer.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/modules/T8168854/pack1/Outer.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/modules/T8168854/pack1/Outer1.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/modules/T8168854/pack1/Outer1.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/overload/T8176265.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/overload/T8176265.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/preview/PreviewOptionTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/preview/PreviewOptionTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/preview/classReaderTest/Bar.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/preview/classReaderTest/Bar.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javac/switchexpr/ExpressionSwitchInExpressionSwitch.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javac/switchexpr/ExpressionSwitchInExpressionSwitch.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javadoc/lib/ToyDoclet.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javadoc/lib/ToyDoclet.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/javap/typeAnnotations/InvisibleParameterAnnotationsTest.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/javap/typeAnnotations/InvisibleParameterAnnotationsTest.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/lib/builder/AbstractBuilder.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/lib/builder/AbstractBuilder.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/lib/builder/ClassBuilder.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/lib/builder/ClassBuilder.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/lib/toolbox/Assert.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/lib/toolbox/Assert.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/sjavac/HiddenFiles.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/sjavac/HiddenFiles.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/test/langtools/tools/sjavac/OverlappingSrcDst.java Thu Nov 01 14:36:18 2018 -0400
+++ b/test/langtools/tools/sjavac/OverlappingSrcDst.java Fri Nov 02 11:34:56 2018 -0400
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or