Merge
This commit is contained in:
commit
4727c5442c
jdk
make/data/tzdata
src
java.base/share/classes
java/lang/invoke
DelegatingMethodHandle.javaInvokerBytecodeGenerator.javaLambdaForm.javaMethodHandle.javaMethodHandleImpl.javaMethodHandleStatics.javaMethodTypeForm.java
sun/util/resources
jdk.localedata/share/classes/sun/util/resources
@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2014g
|
||||
tzdata2014i
|
||||
|
@ -133,23 +133,13 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Botswana
|
||||
# From Paul Eggert (2013-02-21):
|
||||
# Milne says they were regulated by the Cape Town Signal in 1899;
|
||||
# assume they switched to 2:00 when Cape Town did.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Gaborone 1:43:40 - LMT 1885
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 - CAT 1943 Sep 19 2:00
|
||||
2:00 1:00 CAST 1944 Mar 19 2:00
|
||||
2:00 - CAT
|
||||
# See Africa/Maputo.
|
||||
|
||||
# Burkina Faso
|
||||
# See Africa/Abidjan.
|
||||
|
||||
# Burundi
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Bujumbura 1:57:28 - LMT 1890
|
||||
2:00 - CAT
|
||||
# See Africa/Maputo.
|
||||
|
||||
# Cameroon
|
||||
# See Africa/Lagos.
|
||||
@ -184,10 +174,7 @@ Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
|
||||
3:00 - EAT
|
||||
|
||||
# Democratic Republic of the Congo
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
|
||||
2:00 - CAT
|
||||
# The above is for the eastern part; see Africa/Lagos for the western part.
|
||||
# See Africa/Lagos for the western part and Africa/Maputo for the eastern.
|
||||
|
||||
# Republic of the Congo
|
||||
# See Africa/Lagos.
|
||||
@ -339,7 +326,7 @@ Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
|
||||
# Egypt is to change back to Daylight system on May 15
|
||||
# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
|
||||
|
||||
# From Gunther Vermier (2015-05-13):
|
||||
# From Gunther Vermier (2014-05-13):
|
||||
# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
|
||||
|
||||
# From Imed Chihi (2014-06-04):
|
||||
@ -489,11 +476,7 @@ Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
|
||||
3:00 - EAT
|
||||
|
||||
# Lesotho
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Maseru 1:50:00 - LMT 1903 Mar
|
||||
2:00 - SAST 1943 Sep 19 2:00
|
||||
2:00 1:00 SAST 1944 Mar 19 2:00
|
||||
2:00 - SAST
|
||||
# See Africa/Johannesburg.
|
||||
|
||||
# Liberia
|
||||
# From Paul Eggert (2006-03-22):
|
||||
@ -575,9 +558,7 @@ Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul
|
||||
3:00 - EAT
|
||||
|
||||
# Malawi
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
# See Africa/Maputo.
|
||||
|
||||
# Mali
|
||||
# Mauritania
|
||||
@ -987,6 +968,13 @@ Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
Link Africa/Maputo Africa/Blantyre # Malawi
|
||||
Link Africa/Maputo Africa/Bujumbura # Burundi
|
||||
Link Africa/Maputo Africa/Gaborone # Botswana
|
||||
Link Africa/Maputo Africa/Harare # Zimbabwe
|
||||
Link Africa/Maputo Africa/Kigali # Rwanda
|
||||
Link Africa/Maputo Africa/Lubumbashi # E Dem. Rep. of Congo
|
||||
Link Africa/Maputo Africa/Lusaka # Zambia
|
||||
|
||||
# Namibia
|
||||
# The 1994-04-03 transition is from Shanks & Pottenger.
|
||||
@ -1054,9 +1042,7 @@ Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
|
||||
# Tromelin - inhabited until at least 1958
|
||||
|
||||
# Rwanda
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Kigali 2:00:16 - LMT 1935 Jun
|
||||
2:00 - CAT
|
||||
# See Africa/Maputo.
|
||||
|
||||
# St Helena
|
||||
# See Africa/Abidjan.
|
||||
@ -1100,6 +1086,9 @@ Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 SA SAST
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Swaziland
|
||||
#
|
||||
# Marion and Prince Edward Is
|
||||
# scientific station since 1947
|
||||
# no information
|
||||
@ -1127,9 +1116,7 @@ Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
Link Africa/Khartoum Africa/Juba
|
||||
|
||||
# Swaziland
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
|
||||
2:00 - SAST
|
||||
# See Africa/Johannesburg.
|
||||
|
||||
# Tanzania
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@ -1250,11 +1237,5 @@ Zone Africa/Kampala 2:09:40 - LMT 1928 Jul
|
||||
3:00 - EAT
|
||||
|
||||
# Zambia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
|
||||
# Zimbabwe
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Harare 2:04:12 - LMT 1903 Mar
|
||||
2:00 - CAT
|
||||
# See Africa/Maputo.
|
||||
|
@ -70,10 +70,11 @@
|
||||
# 3:30 IRST IRDT Iran
|
||||
# 4:00 GST Gulf*
|
||||
# 5:30 IST India
|
||||
# 7:00 ICT Indochina*
|
||||
# 7:00 ICT Indochina, most times and locations*
|
||||
# 7:00 WIB west Indonesia (Waktu Indonesia Barat)
|
||||
# 8:00 WITA central Indonesia (Waktu Indonesia Tengah)
|
||||
# 8:00 CST China
|
||||
# 8:00 IDT Indochina, 1943-45, 1947-55, 1960-75 (some locations)*
|
||||
# 8:00 JWST Western Standard Time (Japan, 1896/1937)*
|
||||
# 9:00 JCST Central Standard Time (Japan, 1896/1937)
|
||||
# 9:00 WIT east Indonesia (Waktu Indonesia Timur)
|
||||
@ -294,12 +295,8 @@ Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon
|
||||
6:30 - MMT # Myanmar Time
|
||||
|
||||
# Cambodia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9
|
||||
7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
|
||||
7:00 - ICT 1912 May
|
||||
8:00 - ICT 1931 May
|
||||
7:00 - ICT
|
||||
# See Asia/Bangkok.
|
||||
|
||||
|
||||
# China
|
||||
|
||||
@ -916,6 +913,10 @@ Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata
|
||||
|
||||
# Indonesia
|
||||
#
|
||||
# From Paul Eggert (2014-09-06):
|
||||
# The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
|
||||
# civil time was 7:07:12.5; round to even for Jakarta.
|
||||
#
|
||||
# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
|
||||
# http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime
|
||||
# says that Indonesia's time zones changed on 1988-01-01. Looking at some
|
||||
@ -1733,12 +1734,8 @@ Zone Asia/Kuwait 3:11:56 - LMT 1950
|
||||
3:00 - AST
|
||||
|
||||
# Laos
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # or Viangchan
|
||||
7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
|
||||
7:00 - ICT 1912 May
|
||||
8:00 - ICT 1931 May
|
||||
7:00 - ICT
|
||||
# See Asia/Bangkok.
|
||||
|
||||
|
||||
# Lebanon
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
@ -2751,6 +2748,8 @@ Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
|
||||
Zone Asia/Bangkok 6:42:04 - LMT 1880
|
||||
6:42:04 - BMT 1920 Apr # Bangkok Mean Time
|
||||
7:00 - ICT
|
||||
Link Asia/Bangkok Asia/Phnom_Penh # Cambodia
|
||||
Link Asia/Bangkok Asia/Vientiane # Laos
|
||||
|
||||
# Turkmenistan
|
||||
# From Shanks & Pottenger.
|
||||
@ -2788,22 +2787,65 @@ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
|
||||
|
||||
# Vietnam
|
||||
|
||||
# From Paul Eggert (2013-02-21):
|
||||
# From Paul Eggert (2014-10-04):
|
||||
# Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
|
||||
# used in Lower Laos, Cambodia, and Annam. But this is quite a ways
|
||||
# from Saigon's location. For now, ignore this and stick with Shanks
|
||||
# and Pottenger.
|
||||
# and Pottenger for LMT before 1906.
|
||||
|
||||
# From Arthur David Olson (2008-03-18):
|
||||
# The English-language name of Vietnam's most populous city is "Ho Chi Minh
|
||||
# City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân:
|
||||
# Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
|
||||
# (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
|
||||
# is quoted verbatim in:
|
||||
# http://www.thoigian.com.vn/?mPage=P80D01
|
||||
# is translated by Brian Inglis in:
|
||||
# http://mm.icann.org/pipermail/tz/2014-October/021654.html
|
||||
# and is the basis for the information below.
|
||||
#
|
||||
# The 1906 transition was effective July 1 and standardized Indochina to
|
||||
# Phù Liễn Observatory, legally 104 deg. 17'17" east of Paris.
|
||||
# It's unclear whether this meant legal Paris Mean Time (00:09:21) or
|
||||
# the Paris Meridian (2 deg. 20'14.03" E); the former yields 07:06:30.1333...
|
||||
# and the latter 07:06:29.333... so either way it rounds to 07:06:30,
|
||||
# which is used below even though the modern-day Phù Liễn Observatory
|
||||
# is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT.
|
||||
#
|
||||
# The following transitions occurred in Indochina in general (before 1954)
|
||||
# and in South Vietnam in particular (after 1954):
|
||||
# To 07:00 on 1911-05-01.
|
||||
# To 08:00 on 1942-12-31 at 23:00.
|
||||
# To 09:00 in 1945-03-14 at 23:00.
|
||||
# To 07:00 on 1945-09-02 in Vietnam.
|
||||
# To 08:00 on 1947-04-01 in French-controlled Indochina.
|
||||
# To 07:00 on 1955-07-01 in South Vietnam.
|
||||
# To 08:00 on 1959-12-31 at 23:00 in South Vietnam.
|
||||
# To 07:00 on 1975-06-13 in South Vietnam.
|
||||
#
|
||||
# Trần cites the following sources; it's unclear which supplied the info above.
|
||||
#
|
||||
# Hoàng Xuân Hãn: "Lịch và lịch Việt Nam". Tập san Khoa học Xã hội,
|
||||
# No. 9, Paris, February 1982.
|
||||
#
|
||||
# Lê Thành Lân: "Lịch và niên biểu lịch sử hai mươi thế kỷ (0001-2010)",
|
||||
# NXB Thống kê, Hanoi, 2000.
|
||||
#
|
||||
# Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
|
||||
# NXB Thuận Hoá, Huế, 1995.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jun 9
|
||||
7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
|
||||
7:00 - ICT 1912 May
|
||||
8:00 - ICT 1931 May
|
||||
Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1
|
||||
7:06:30 - PLMT 1911 May 1
|
||||
7:00 - ICT 1942 Dec 31 23:00
|
||||
8:00 - IDT 1945 Mar 14 23:00
|
||||
9:00 - JST 1945 Sep 2
|
||||
7:00 - ICT 1947 Apr 1
|
||||
8:00 - IDT 1955 Jul 1
|
||||
7:00 - ICT 1959 Dec 31 23:00
|
||||
8:00 - IDT 1975 Jun 13
|
||||
7:00 - ICT
|
||||
|
||||
# Yemen
|
||||
|
@ -354,20 +354,27 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# Fiji will end DST on 2014-01-19 02:00:
|
||||
# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
|
||||
|
||||
# From Paul Eggert (2014-01-10):
|
||||
# For now, guess that Fiji springs forward the Sunday before the fourth
|
||||
# Monday in October, and springs back the penultimate Sunday in January.
|
||||
# This is ad hoc, but matches recent practice.
|
||||
# From Ken Rylander (2014-10-20):
|
||||
# DST will start Nov. 2 this year.
|
||||
# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx
|
||||
|
||||
# From Paul Eggert (2014-10-20):
|
||||
# For now, guess DST from 02:00 the first Sunday in November to
|
||||
# 03:00 the first Sunday on or after January 18. Although ad hoc, it
|
||||
# matches this year's plan and seems more likely to match future
|
||||
# practice than guessing no DST.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
|
||||
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
|
||||
Rule Fiji 2009 only - Nov 29 2:00 1:00 S
|
||||
Rule Fiji 2010 only - Mar lastSun 3:00 0 -
|
||||
Rule Fiji 2010 max - Oct Sun>=21 2:00 1:00 S
|
||||
Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 S
|
||||
Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
||||
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 max - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S
|
||||
Rule Fiji 2015 max - Jan Sun>=18 3:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji FJ%sT # Fiji Time
|
||||
@ -542,6 +549,30 @@ Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror
|
||||
Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
|
||||
9:48:32 - PMMT 1895 # Port Moresby Mean Time
|
||||
10:00 - PGT # Papua New Guinea Time
|
||||
#
|
||||
# From Paul Eggert (2014-10-13):
|
||||
# Base the Bougainville entry on the Arawa-Kieta region, which appears to have
|
||||
# the most people even though it was devastated in the Bougainville Civil War.
|
||||
#
|
||||
# Although Shanks gives 1942-03-15 / 1943-11-01 for JST, these dates
|
||||
# are apparently rough guesswork from the starts of military campaigns.
|
||||
# The World War II entries below are instead based on Arawa-Kieta.
|
||||
# The Japanese occupied Kieta in July 1942,
|
||||
# according to the Pacific War Online Encyclopedia
|
||||
# http://pwencycl.kgbudge.com/B/o/Bougainville.htm
|
||||
# and seem to have controlled it until their 1945-08-21 surrender.
|
||||
#
|
||||
# The Autonomous Region of Bougainville plans to switch from UTC+10 to UTC+11
|
||||
# on 2014-12-28 at 02:00. They call UTC+11 "Bougainville Standard Time";
|
||||
# abbreviate this as BST. See:
|
||||
# http://www.bougainville24.com/bougainville-issues/bougainville-gets-own-timezone/
|
||||
#
|
||||
Zone Pacific/Bougainville 10:22:16 - LMT 1880
|
||||
9:48:32 - PMMT 1895
|
||||
10:00 - PGT 1942 Jul
|
||||
9:00 - JST 1945 Aug 21
|
||||
10:00 - PGT 2014 Dec 28 2:00
|
||||
11:00 - BST
|
||||
|
||||
# Pitcairn
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@ -826,6 +857,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# 10:00 AEST AEDT Eastern Australia
|
||||
# 10:00 ChST Chamorro
|
||||
# 10:30 LHST LHDT Lord Howe*
|
||||
# 11:00 BST Bougainville*
|
||||
# 11:30 NZMT NZST New Zealand through 1945
|
||||
# 12:00 NZST NZDT New Zealand 1946-present
|
||||
# 12:15 CHAST Chatham through 1945*
|
||||
|
@ -91,10 +91,11 @@
|
||||
# 0:00 WET WEST WEMT Western Europe
|
||||
# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
|
||||
# 0:20 NET NEST Netherlands (1937-1940)*
|
||||
# 1:00 BST British Standard (1968-1971)
|
||||
# 1:00 CET CEST CEMT Central Europe
|
||||
# 1:00:14 SET Swedish (1879-1899)*
|
||||
# 2:00 EET EEST Eastern Europe
|
||||
# 3:00 FET Further-eastern Europe*
|
||||
# 3:00 FET Further-eastern Europe (2011-2014)*
|
||||
# 3:00 MSK MSD MSM* Moscow
|
||||
|
||||
# From Peter Ilieve (1994-12-04),
|
||||
@ -746,6 +747,13 @@ Zone Europe/Vienna 1:05:21 - LMT 1893 Apr
|
||||
# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
|
||||
# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
|
||||
# http://news.tut.by/society/250578.html
|
||||
#
|
||||
# From Alexander Bokovoy (2014-10-09):
|
||||
# Belarussian government decided against changing to winter time....
|
||||
# http://eng.belta.by/all_news/society/Belarus-decides-against-adjusting-time-in-Russias-wake_i_76335.html
|
||||
# From Paul Eggert (2014-10-08):
|
||||
# Hence Belarus can share time zone abbreviations with Moscow again.
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Minsk 1:50:16 - LMT 1880
|
||||
1:50 - MMT 1924 May 2 # Minsk Mean Time
|
||||
@ -758,7 +766,8 @@ Zone Europe/Minsk 1:50:16 - LMT 1880
|
||||
2:00 - EET 1992 Mar 29 0:00s
|
||||
2:00 1:00 EEST 1992 Sep 27 0:00s
|
||||
2:00 Russia EE%sT 2011 Mar 27 2:00s
|
||||
3:00 - FET
|
||||
3:00 - FET 2014 Oct 26 1:00s
|
||||
3:00 - MSK
|
||||
|
||||
# Belgium
|
||||
#
|
||||
@ -2524,7 +2533,7 @@ Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
|
||||
# The Kemerovo region will remain at UTC+7 through the 2014-10-26 change, thus
|
||||
# realigning itself with KRAT.
|
||||
|
||||
Zone Asia/Novokuznetsk 5:48:48 - NMT 1920 Jan 6
|
||||
Zone Asia/Novokuznetsk 5:48:48 - LMT 1924 May 1
|
||||
6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time
|
||||
7:00 Russia KRA%sT 1991 Mar 31 2:00s
|
||||
6:00 Russia KRA%sT 1992 Jan 19 2:00s
|
||||
|
@ -300,6 +300,12 @@ Zone PST8PDT -8:00 US P%sT
|
||||
# time zone, but we do go by the Eastern time zone because so many people work
|
||||
# in Columbus."
|
||||
|
||||
# From Paul Eggert (2014-09-06):
|
||||
# Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208
|
||||
# says that New York City Hall time was 3 minutes 58.4 seconds fast of
|
||||
# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
|
||||
# nearest second.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
|
||||
Rule NYC 1920 only - Oct lastSun 2:00 0 S
|
||||
@ -1118,17 +1124,16 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
|
||||
# An amendment to the Interpretation Act was registered on February 19/2007....
|
||||
# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
|
||||
|
||||
# From Paul Eggert (2006-04-25):
|
||||
# From Paul Eggert (2014-10-18):
|
||||
# H. David Matthews and Mary Vincent's map
|
||||
# "It's about TIME", _Canadian Geographic_ (September-October 1998)
|
||||
# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
|
||||
# http://www.canadiangeographic.ca/Magazine/SO98/alacarte.asp
|
||||
# contains detailed boundaries for regions observing nonstandard
|
||||
# time and daylight saving time arrangements in Canada circa 1998.
|
||||
#
|
||||
# INMS, the Institute for National Measurement Standards in Ottawa, has
|
||||
# information about standard and daylight saving time zones in Canada.
|
||||
# http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php
|
||||
# (updated periodically).
|
||||
# National Research Council Canada maintains info about time zones and DST.
|
||||
# http://www.nrc-cnrc.gc.ca/eng/services/time/time_zones.html
|
||||
# http://www.nrc-cnrc.gc.ca/eng/services/time/faq/index.html#Q5
|
||||
# Its unofficial information is often taken from Matthews and Vincent.
|
||||
|
||||
# From Paul Eggert (2006-06-27):
|
||||
@ -1993,10 +1998,7 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# [Also see <http://www.nunatsiaq.com/nunavut/nvt10309_06.html> (2001-03-09).]
|
||||
|
||||
# From Gwillim Law (2005-05-21):
|
||||
# According to maps at
|
||||
# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
|
||||
# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
|
||||
# (both dated 2003), and
|
||||
# According to ...
|
||||
# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
|
||||
# (from a 1998 Canadian Geographic article), the de facto and de jure time
|
||||
# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
|
||||
@ -2005,9 +2007,11 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# predates the creation of Nunavut, it probably goes back many years....
|
||||
# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
|
||||
#
|
||||
# From Paul Eggert (2005-07-26):
|
||||
# From Paul Eggert (2014-10-17):
|
||||
# For lack of better information, assume that Southampton Island observed
|
||||
# daylight saving only during wartime.
|
||||
# daylight saving only during wartime. Gwillim Law's email also
|
||||
# mentioned maps now maintained by National Research Council Canada;
|
||||
# see above for an up-to-date link.
|
||||
|
||||
# From Chris Walton (2007-03-01):
|
||||
# ... the community of Resolute (located on Cornwallis Island in
|
||||
@ -3008,10 +3012,21 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr
|
||||
# Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
|
||||
# unspecified official document, and says "This time is used throughout the
|
||||
# island". Go with Milne. Round to the nearest second as required by zic.
|
||||
#
|
||||
# Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but
|
||||
# Lance Neita writes that Prime Minister Michael Manley decreed it January 5.
|
||||
# Assume Neita meant Jan 6 02:00, the same as the US. Neita also writes that
|
||||
# Manley's supporters associated this act with Manley's nickname "Joshua"
|
||||
# (recall that in the Bible the sun stood still at Joshua's request),
|
||||
# and with the Rod of Correction which Manley said he had received from
|
||||
# Haile Selassie, Emperor of Ethiopia. See:
|
||||
# Neita L. The politician in all of us. Jamaica Observer 2014-09-20
|
||||
# http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
|
||||
#
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Jamaica -5:07:11 - LMT 1890 # Kingston
|
||||
-5:07:11 - KMT 1912 Feb # Kingston Mean Time
|
||||
-5:00 - EST 1974 Apr 28 2:00
|
||||
-5:00 - EST 1974
|
||||
-5:00 US E%sT 1984
|
||||
-5:00 - EST
|
||||
|
||||
|
@ -330,7 +330,8 @@ PE -1203-07703 America/Lima
|
||||
PF -1732-14934 Pacific/Tahiti Society Islands
|
||||
PF -0900-13930 Pacific/Marquesas Marquesas Islands
|
||||
PF -2308-13457 Pacific/Gambier Gambier Islands
|
||||
PG -0930+14710 Pacific/Port_Moresby
|
||||
PG -0930+14710 Pacific/Port_Moresby most locations
|
||||
PG -0613+15534 Pacific/Bougainville Bougainville
|
||||
PH +1435+12100 Asia/Manila
|
||||
PK +2452+06703 Asia/Karachi
|
||||
PL +5215+02100 Europe/Warsaw
|
||||
|
@ -44,6 +44,10 @@ abstract class DelegatingMethodHandle extends MethodHandle {
|
||||
super(type, chooseDelegatingForm(target));
|
||||
}
|
||||
|
||||
protected DelegatingMethodHandle(MethodType type, LambdaForm form) {
|
||||
super(type, form);
|
||||
}
|
||||
|
||||
/** Define this to extract the delegated target which supplies the invocation behavior. */
|
||||
abstract protected MethodHandle getTarget();
|
||||
|
||||
@ -88,14 +92,31 @@ abstract class DelegatingMethodHandle extends MethodHandle {
|
||||
return makeReinvokerForm(target, MethodTypeForm.LF_DELEGATE, DelegatingMethodHandle.class, NF_getTarget);
|
||||
}
|
||||
|
||||
/** Create a LF which simply reinvokes a target of the given basic type. */
|
||||
static LambdaForm makeReinvokerForm(MethodHandle target,
|
||||
int whichCache,
|
||||
Object constraint,
|
||||
NamedFunction getTargetFn) {
|
||||
String debugString;
|
||||
switch(whichCache) {
|
||||
case MethodTypeForm.LF_REBIND: debugString = "BMH.reinvoke"; break;
|
||||
case MethodTypeForm.LF_DELEGATE: debugString = "MH.delegate"; break;
|
||||
default: debugString = "MH.reinvoke"; break;
|
||||
}
|
||||
// No pre-action needed.
|
||||
return makeReinvokerForm(target, whichCache, constraint, debugString, true, getTargetFn, null);
|
||||
}
|
||||
/** Create a LF which simply reinvokes a target of the given basic type. */
|
||||
static LambdaForm makeReinvokerForm(MethodHandle target,
|
||||
int whichCache,
|
||||
Object constraint,
|
||||
String debugString,
|
||||
boolean forceInline,
|
||||
NamedFunction getTargetFn,
|
||||
NamedFunction preActionFn) {
|
||||
MethodType mtype = target.type().basicType();
|
||||
boolean customized = (whichCache < 0 ||
|
||||
mtype.parameterSlotCount() > MethodType.MAX_MH_INVOKER_ARITY);
|
||||
boolean hasPreAction = (preActionFn != null);
|
||||
LambdaForm form;
|
||||
if (!customized) {
|
||||
form = mtype.form().cachedLambdaForm(whichCache);
|
||||
@ -105,12 +126,16 @@ abstract class DelegatingMethodHandle extends MethodHandle {
|
||||
final int ARG_BASE = 1;
|
||||
final int ARG_LIMIT = ARG_BASE + mtype.parameterCount();
|
||||
int nameCursor = ARG_LIMIT;
|
||||
final int PRE_ACTION = hasPreAction ? nameCursor++ : -1;
|
||||
final int NEXT_MH = customized ? -1 : nameCursor++;
|
||||
final int REINVOKE = nameCursor++;
|
||||
LambdaForm.Name[] names = LambdaForm.arguments(nameCursor - ARG_LIMIT, mtype.invokerType());
|
||||
assert(names.length == nameCursor);
|
||||
names[THIS_DMH] = names[THIS_DMH].withConstraint(constraint);
|
||||
Object[] targetArgs;
|
||||
if (hasPreAction) {
|
||||
names[PRE_ACTION] = new LambdaForm.Name(preActionFn, names[THIS_DMH]);
|
||||
}
|
||||
if (customized) {
|
||||
targetArgs = Arrays.copyOfRange(names, ARG_BASE, ARG_LIMIT, Object[].class);
|
||||
names[REINVOKE] = new LambdaForm.Name(target, targetArgs); // the invoker is the target itself
|
||||
@ -120,20 +145,14 @@ abstract class DelegatingMethodHandle extends MethodHandle {
|
||||
targetArgs[0] = names[NEXT_MH]; // overwrite this MH with next MH
|
||||
names[REINVOKE] = new LambdaForm.Name(mtype, targetArgs);
|
||||
}
|
||||
String debugString;
|
||||
switch(whichCache) {
|
||||
case MethodTypeForm.LF_REBIND: debugString = "BMH.reinvoke"; break;
|
||||
case MethodTypeForm.LF_DELEGATE: debugString = "MH.delegate"; break;
|
||||
default: debugString = "MH.reinvoke"; break;
|
||||
}
|
||||
form = new LambdaForm(debugString, ARG_LIMIT, names);
|
||||
form = new LambdaForm(debugString, ARG_LIMIT, names, forceInline);
|
||||
if (!customized) {
|
||||
form = mtype.form().setCachedLambdaForm(whichCache, form);
|
||||
}
|
||||
return form;
|
||||
}
|
||||
|
||||
private static final NamedFunction NF_getTarget;
|
||||
static final NamedFunction NF_getTarget;
|
||||
static {
|
||||
try {
|
||||
NF_getTarget = new NamedFunction(DelegatingMethodHandle.class
|
||||
|
@ -628,8 +628,13 @@ class InvokerBytecodeGenerator {
|
||||
// Mark this method as a compiled LambdaForm
|
||||
mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Compiled;", true);
|
||||
|
||||
// Force inlining of this invoker method.
|
||||
mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true);
|
||||
if (lambdaForm.forceInline) {
|
||||
// Force inlining of this invoker method.
|
||||
mv.visitAnnotation("Ljava/lang/invoke/ForceInline;", true);
|
||||
} else {
|
||||
mv.visitAnnotation("Ljava/lang/invoke/DontInline;", true);
|
||||
}
|
||||
|
||||
|
||||
// iterate over the form's names, generating bytecode instructions for each
|
||||
// start iterating at the first name following the arguments
|
||||
|
@ -119,6 +119,7 @@ import static java.lang.invoke.MethodHandleNatives.Constants.*;
|
||||
class LambdaForm {
|
||||
final int arity;
|
||||
final int result;
|
||||
final boolean forceInline;
|
||||
@Stable final Name[] names;
|
||||
final String debugName;
|
||||
MemberName vmentry; // low-level behavior, or null if not yet prepared
|
||||
@ -243,11 +244,16 @@ class LambdaForm {
|
||||
|
||||
LambdaForm(String debugName,
|
||||
int arity, Name[] names, int result) {
|
||||
this(debugName, arity, names, result, true);
|
||||
}
|
||||
LambdaForm(String debugName,
|
||||
int arity, Name[] names, int result, boolean forceInline) {
|
||||
assert(namesOK(arity, names));
|
||||
this.arity = arity;
|
||||
this.result = fixResult(result, names);
|
||||
this.names = names.clone();
|
||||
this.debugName = fixDebugName(debugName);
|
||||
this.forceInline = forceInline;
|
||||
int maxOutArity = normalize();
|
||||
if (maxOutArity > MethodType.MAX_MH_INVOKER_ARITY) {
|
||||
// Cannot use LF interpreter on very high arity expressions.
|
||||
@ -255,17 +261,23 @@ class LambdaForm {
|
||||
compileToBytecode();
|
||||
}
|
||||
}
|
||||
|
||||
LambdaForm(String debugName,
|
||||
int arity, Name[] names) {
|
||||
this(debugName,
|
||||
arity, names, LAST_RESULT);
|
||||
this(debugName, arity, names, LAST_RESULT, true);
|
||||
}
|
||||
LambdaForm(String debugName,
|
||||
int arity, Name[] names, boolean forceInline) {
|
||||
this(debugName, arity, names, LAST_RESULT, forceInline);
|
||||
}
|
||||
|
||||
LambdaForm(String debugName,
|
||||
Name[] formals, Name[] temps, Name result) {
|
||||
this(debugName,
|
||||
formals.length, buildNames(formals, temps, result), LAST_RESULT);
|
||||
formals.length, buildNames(formals, temps, result), LAST_RESULT, true);
|
||||
}
|
||||
LambdaForm(String debugName,
|
||||
Name[] formals, Name[] temps, Name result, boolean forceInline) {
|
||||
this(debugName,
|
||||
formals.length, buildNames(formals, temps, result), LAST_RESULT, forceInline);
|
||||
}
|
||||
|
||||
private static Name[] buildNames(Name[] formals, Name[] temps, Name result) {
|
||||
@ -279,6 +291,10 @@ class LambdaForm {
|
||||
}
|
||||
|
||||
private LambdaForm(String sig) {
|
||||
this(sig, true);
|
||||
}
|
||||
|
||||
private LambdaForm(String sig, boolean forceInline) {
|
||||
// Make a blank lambda form, which returns a constant zero or null.
|
||||
// It is used as a template for managing the invocation of similar forms that are non-empty.
|
||||
// Called only from getPreparedForm.
|
||||
@ -287,6 +303,7 @@ class LambdaForm {
|
||||
this.result = (signatureReturn(sig) == V_TYPE ? -1 : arity);
|
||||
this.names = buildEmptyNames(arity, sig);
|
||||
this.debugName = "LF.zero";
|
||||
this.forceInline = forceInline;
|
||||
assert(nameRefsAreLegal());
|
||||
assert(isEmpty());
|
||||
assert(sig.equals(basicTypeSignature())) : sig + " != " + basicTypeSignature();
|
||||
|
@ -1438,10 +1438,9 @@ assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString());
|
||||
/*non-public*/
|
||||
void updateForm(LambdaForm newForm) {
|
||||
if (form == newForm) return;
|
||||
assert(this instanceof DirectMethodHandle && this.internalMemberName().isStatic());
|
||||
// ISSUE: Should we have a memory fence here?
|
||||
newForm.prepare(); // as in MethodHandle.<init>
|
||||
UNSAFE.putObject(this, FORM_OFFSET, newForm);
|
||||
this.form.prepare(); // as in MethodHandle.<init>
|
||||
UNSAFE.fullFence();
|
||||
}
|
||||
|
||||
private static final long FORM_OFFSET;
|
||||
|
@ -30,6 +30,7 @@ import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.function.Function;
|
||||
|
||||
import sun.invoke.empty.Empty;
|
||||
import sun.invoke.util.ValueConversions;
|
||||
@ -713,10 +714,11 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
||||
LambdaForm form = makeGuardWithTestForm(basicType);
|
||||
BoundMethodHandle.SpeciesData data = BoundMethodHandle.speciesData_LLL();
|
||||
BoundMethodHandle mh;
|
||||
|
||||
try {
|
||||
mh = (BoundMethodHandle)
|
||||
data.constructor().invokeBasic(type, form,
|
||||
(Object) test, (Object) target, (Object) fallback);
|
||||
(Object) test, (Object) profile(target), (Object) profile(fallback));
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -724,6 +726,129 @@ import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP;
|
||||
return mh;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
MethodHandle profile(MethodHandle target) {
|
||||
if (DONT_INLINE_THRESHOLD >= 0) {
|
||||
return makeBlockInlningWrapper(target);
|
||||
} else {
|
||||
return target;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Block inlining during JIT-compilation of a target method handle if it hasn't been invoked enough times.
|
||||
* Corresponding LambdaForm has @DontInline when compiled into bytecode.
|
||||
*/
|
||||
static
|
||||
MethodHandle makeBlockInlningWrapper(MethodHandle target) {
|
||||
LambdaForm lform = PRODUCE_BLOCK_INLINING_FORM.apply(target);
|
||||
return new CountingWrapper(target, lform,
|
||||
PRODUCE_BLOCK_INLINING_FORM, PRODUCE_REINVOKER_FORM,
|
||||
DONT_INLINE_THRESHOLD);
|
||||
}
|
||||
|
||||
/** Constructs reinvoker lambda form which block inlining during JIT-compilation for a particular method handle */
|
||||
private static final Function<MethodHandle, LambdaForm> PRODUCE_BLOCK_INLINING_FORM = new Function<MethodHandle, LambdaForm>() {
|
||||
@Override
|
||||
public LambdaForm apply(MethodHandle target) {
|
||||
return DelegatingMethodHandle.makeReinvokerForm(target,
|
||||
MethodTypeForm.LF_DELEGATE_BLOCK_INLINING, CountingWrapper.class, "reinvoker.dontInline", false,
|
||||
DelegatingMethodHandle.NF_getTarget, CountingWrapper.NF_maybeStopCounting);
|
||||
}
|
||||
};
|
||||
|
||||
/** Constructs simple reinvoker lambda form for a particular method handle */
|
||||
private static final Function<MethodHandle, LambdaForm> PRODUCE_REINVOKER_FORM = new Function<MethodHandle, LambdaForm>() {
|
||||
@Override
|
||||
public LambdaForm apply(MethodHandle target) {
|
||||
return DelegatingMethodHandle.makeReinvokerForm(target,
|
||||
MethodTypeForm.LF_DELEGATE, DelegatingMethodHandle.class, DelegatingMethodHandle.NF_getTarget);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Counting method handle. It has 2 states: counting and non-counting.
|
||||
* It is in counting state for the first n invocations and then transitions to non-counting state.
|
||||
* Behavior in counting and non-counting states is determined by lambda forms produced by
|
||||
* countingFormProducer & nonCountingFormProducer respectively.
|
||||
*/
|
||||
static class CountingWrapper extends DelegatingMethodHandle {
|
||||
private final MethodHandle target;
|
||||
private int count;
|
||||
private Function<MethodHandle, LambdaForm> countingFormProducer;
|
||||
private Function<MethodHandle, LambdaForm> nonCountingFormProducer;
|
||||
private volatile boolean isCounting;
|
||||
|
||||
private CountingWrapper(MethodHandle target, LambdaForm lform,
|
||||
Function<MethodHandle, LambdaForm> countingFromProducer,
|
||||
Function<MethodHandle, LambdaForm> nonCountingFormProducer,
|
||||
int count) {
|
||||
super(target.type(), lform);
|
||||
this.target = target;
|
||||
this.count = count;
|
||||
this.countingFormProducer = countingFromProducer;
|
||||
this.nonCountingFormProducer = nonCountingFormProducer;
|
||||
this.isCounting = (count > 0);
|
||||
}
|
||||
|
||||
@Hidden
|
||||
@Override
|
||||
protected MethodHandle getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodHandle asTypeUncached(MethodType newType) {
|
||||
MethodHandle newTarget = target.asType(newType);
|
||||
MethodHandle wrapper;
|
||||
if (isCounting) {
|
||||
LambdaForm lform;
|
||||
lform = countingFormProducer.apply(target);
|
||||
wrapper = new CountingWrapper(newTarget, lform, countingFormProducer, nonCountingFormProducer, DONT_INLINE_THRESHOLD);
|
||||
} else {
|
||||
wrapper = newTarget; // no need for a counting wrapper anymore
|
||||
}
|
||||
return (asTypeCache = wrapper);
|
||||
}
|
||||
|
||||
boolean countDown() {
|
||||
if (count <= 0) {
|
||||
// Try to limit number of updates. MethodHandle.updateForm() doesn't guarantee LF update visibility.
|
||||
if (isCounting) {
|
||||
isCounting = false;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
--count;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Hidden
|
||||
static void maybeStopCounting(Object o1) {
|
||||
CountingWrapper wrapper = (CountingWrapper) o1;
|
||||
if (wrapper.countDown()) {
|
||||
// Reached invocation threshold. Replace counting behavior with a non-counting one.
|
||||
LambdaForm lform = wrapper.nonCountingFormProducer.apply(wrapper.target);
|
||||
lform.compileToBytecode(); // speed up warmup by avoiding LF interpretation again after transition
|
||||
wrapper.updateForm(lform);
|
||||
}
|
||||
}
|
||||
|
||||
static final NamedFunction NF_maybeStopCounting;
|
||||
static {
|
||||
Class<?> THIS_CLASS = CountingWrapper.class;
|
||||
try {
|
||||
NF_maybeStopCounting = new NamedFunction(THIS_CLASS.getDeclaredMethod("maybeStopCounting", Object.class));
|
||||
} catch (ReflectiveOperationException ex) {
|
||||
throw newInternalError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
LambdaForm makeGuardWithTestForm(MethodType basicType) {
|
||||
LambdaForm lform = basicType.form().cachedLambdaForm(MethodTypeForm.LF_GWT);
|
||||
|
@ -47,10 +47,11 @@ import sun.misc.Unsafe;
|
||||
static final boolean TRACE_METHOD_LINKAGE;
|
||||
static final boolean USE_LAMBDA_FORM_EDITOR;
|
||||
static final int COMPILE_THRESHOLD;
|
||||
static final int DONT_INLINE_THRESHOLD;
|
||||
static final int PROFILE_LEVEL;
|
||||
|
||||
static {
|
||||
final Object[] values = { false, false, false, false, false, null, null };
|
||||
final Object[] values = new Object[8];
|
||||
AccessController.doPrivileged(new PrivilegedAction<Void>() {
|
||||
public Void run() {
|
||||
values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES");
|
||||
@ -59,7 +60,8 @@ import sun.misc.Unsafe;
|
||||
values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE");
|
||||
values[4] = Boolean.getBoolean("java.lang.invoke.MethodHandle.USE_LF_EDITOR");
|
||||
values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 30);
|
||||
values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
|
||||
values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30);
|
||||
values[7] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
@ -69,7 +71,8 @@ import sun.misc.Unsafe;
|
||||
TRACE_METHOD_LINKAGE = (Boolean) values[3];
|
||||
USE_LAMBDA_FORM_EDITOR = (Boolean) values[4];
|
||||
COMPILE_THRESHOLD = (Integer) values[5];
|
||||
PROFILE_LEVEL = (Integer) values[6];
|
||||
DONT_INLINE_THRESHOLD = (Integer) values[6];
|
||||
PROFILE_LEVEL = (Integer) values[7];
|
||||
}
|
||||
|
||||
/** Tell if any of the debugging switches are turned on.
|
||||
|
@ -63,24 +63,25 @@ final class MethodTypeForm {
|
||||
final @Stable LambdaForm[] lambdaForms;
|
||||
// Indexes into lambdaForms:
|
||||
static final int
|
||||
LF_INVVIRTUAL = 0, // DMH invokeVirtual
|
||||
LF_INVSTATIC = 1,
|
||||
LF_INVSPECIAL = 2,
|
||||
LF_NEWINVSPECIAL = 3,
|
||||
LF_INVINTERFACE = 4,
|
||||
LF_INVSTATIC_INIT = 5, // DMH invokeStatic with <clinit> barrier
|
||||
LF_INTERPRET = 6, // LF interpreter
|
||||
LF_REBIND = 7, // BoundMethodHandle
|
||||
LF_DELEGATE = 8, // DelegatingMethodHandle
|
||||
LF_EX_LINKER = 9, // invokeExact_MT (for invokehandle)
|
||||
LF_EX_INVOKER = 10, // MHs.invokeExact
|
||||
LF_GEN_LINKER = 11, // generic invoke_MT (for invokehandle)
|
||||
LF_GEN_INVOKER = 12, // generic MHs.invoke
|
||||
LF_CS_LINKER = 13, // linkToCallSite_CS
|
||||
LF_MH_LINKER = 14, // linkToCallSite_MH
|
||||
LF_GWC = 15, // guardWithCatch (catchException)
|
||||
LF_GWT = 16, // guardWithTest
|
||||
LF_LIMIT = 17;
|
||||
LF_INVVIRTUAL = 0, // DMH invokeVirtual
|
||||
LF_INVSTATIC = 1,
|
||||
LF_INVSPECIAL = 2,
|
||||
LF_NEWINVSPECIAL = 3,
|
||||
LF_INVINTERFACE = 4,
|
||||
LF_INVSTATIC_INIT = 5, // DMH invokeStatic with <clinit> barrier
|
||||
LF_INTERPRET = 6, // LF interpreter
|
||||
LF_REBIND = 7, // BoundMethodHandle
|
||||
LF_DELEGATE = 8, // DelegatingMethodHandle
|
||||
LF_DELEGATE_BLOCK_INLINING = 9, // Counting DelegatingMethodHandle w/ @DontInline
|
||||
LF_EX_LINKER = 10, // invokeExact_MT (for invokehandle)
|
||||
LF_EX_INVOKER = 11, // MHs.invokeExact
|
||||
LF_GEN_LINKER = 12, // generic invoke_MT (for invokehandle)
|
||||
LF_GEN_INVOKER = 13, // generic MHs.invoke
|
||||
LF_CS_LINKER = 14, // linkToCallSite_CS
|
||||
LF_MH_LINKER = 15, // linkToCallSite_MH
|
||||
LF_GWC = 16, // guardWithCatch (catchException)
|
||||
LF_GWT = 17, // guardWithTest
|
||||
LF_LIMIT = 18;
|
||||
|
||||
/** Return the type corresponding uniquely (1-1) to this MT-form.
|
||||
* It might have any primitive returns or arguments, but will have no references except Object.
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_de extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_es extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_fr extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_it extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_ja extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_ko extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_pt_BR extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", TRUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_sv extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -829,7 +829,7 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -917,6 +917,9 @@ public final class TimeZoneNames_zh_CN extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
@ -831,7 +831,7 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
|
||||
{"Europe/Madrid", CET},
|
||||
{"Europe/Malta", CET},
|
||||
{"Europe/Mariehamn", EET},
|
||||
{"Europe/Minsk", FET},
|
||||
{"Europe/Minsk", MSK},
|
||||
{"Europe/Monaco", CET},
|
||||
{"Europe/Moscow", MSK},
|
||||
{"Europe/Nicosia", EET},
|
||||
@ -919,6 +919,9 @@ public final class TimeZoneNames_zh_TW extends TimeZoneNamesBundle {
|
||||
{"PRT", AST},
|
||||
{"Pacific/Apia", WST_SAMOA},
|
||||
{"Pacific/Auckland", NZST},
|
||||
{"Pacific/Bougainville", new String[] {"Bougainville Standard Time", "BST",
|
||||
"Bougainville Daylight Time", "BST",
|
||||
"Bougainville Time", "BT"}},
|
||||
{"Pacific/Chatham", CHAST},
|
||||
{"Pacific/Chuuk", CHUT},
|
||||
{"Pacific/Easter", EASTER},
|
||||
|
Loading…
x
Reference in New Issue
Block a user