mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2026-01-05 16:11:39 +01:00
Compare commits
807 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da6e4e6d3d | ||
|
|
9d097b7a1f | ||
|
|
ceb31d76f8 | ||
|
|
074e0ae460 | ||
|
|
aa27dadbc7 | ||
|
|
7f0f91d490 | ||
|
|
c4e86bf5c3 | ||
|
|
160c97be2f | ||
|
|
4658c5819b | ||
|
|
bc8cb37e0f | ||
|
|
c7a014385d | ||
|
|
33df62f461 | ||
|
|
7d7f5c0024 | ||
|
|
5c5330b6cb | ||
|
|
7f1900dcf6 | ||
|
|
d7fc95ab92 | ||
|
|
006332a167 | ||
|
|
22ab396c68 | ||
|
|
68ce108cda | ||
|
|
e0e9b2eda1 | ||
|
|
528988fc10 | ||
|
|
d3fe8abf81 | ||
|
|
9641b47c6e | ||
|
|
02f18da5ea | ||
|
|
bcbb4c70cd | ||
|
|
567d260a2c | ||
|
|
15cbe53845 | ||
|
|
64feeab70a | ||
|
|
518ff518e1 | ||
|
|
4c4b8f4de2 | ||
|
|
f61ce32770 | ||
|
|
fe7672bac6 | ||
|
|
cacce843aa | ||
|
|
7597cba92b | ||
|
|
80380d51d2 | ||
|
|
9d5c9cc78b | ||
|
|
36c150b199 | ||
|
|
0f48603394 | ||
|
|
98a69edec7 | ||
|
|
4158567f84 | ||
|
|
d086757834 | ||
|
|
8600d0d982 | ||
|
|
9b1eebc73d | ||
|
|
3fd821606d | ||
|
|
a7563207f6 | ||
|
|
f77a658557 | ||
|
|
8a065ef2e2 | ||
|
|
e48016b163 | ||
|
|
2c7fc85be9 | ||
|
|
d12819158a | ||
|
|
379ba80eb7 | ||
|
|
1a89d68e87 | ||
|
|
56eb5f54f4 | ||
|
|
5782a2a309 | ||
|
|
d5138d1fce | ||
|
|
2a2fa134c3 | ||
|
|
2a50c3f810 | ||
|
|
5c520c3fdd | ||
|
|
9e5bbff51d | ||
|
|
5b185585e8 | ||
|
|
faf23de54d | ||
|
|
579e50bb40 | ||
|
|
4b20e460dc | ||
|
|
72ff8e2118 | ||
|
|
ea26ff1142 | ||
|
|
38574d5169 | ||
|
|
4031cb4190 | ||
|
|
caec8d2208 | ||
|
|
a5b42ec8b2 | ||
|
|
7e305ad1d4 | ||
|
|
d82a6dcfb9 | ||
|
|
1a5e6c98c2 | ||
|
|
a7595b2a61 | ||
|
|
edd19888df | ||
|
|
790d6e2d25 | ||
|
|
3f20612e03 | ||
|
|
42fc158991 | ||
|
|
01eb69035e | ||
|
|
1215b1a8f5 | ||
|
|
af33e16225 | ||
|
|
8ad7f383c1 | ||
|
|
6bb7e45e8e | ||
|
|
8bde2f4e3d | ||
|
|
0425889885 | ||
|
|
aaf4f690f0 | ||
|
|
bbf0a31e9e | ||
|
|
3bd5b80761 | ||
|
|
1f00c3b9ba | ||
|
|
3c4fc79326 | ||
|
|
6b2d11ba24 | ||
|
|
591e7e2c19 | ||
|
|
2c9dfc73f9 | ||
|
|
b7d483c7d5 | ||
|
|
5e0a8cdf89 | ||
|
|
3f8bd92308 | ||
|
|
4acf634d05 | ||
|
|
a804c6a6ef | ||
|
|
acd0e2560c | ||
|
|
dc85a3fe81 | ||
|
|
1d245c6ec8 | ||
|
|
7a7ce021de | ||
|
|
a023b93712 | ||
|
|
84e985da4b | ||
|
|
7d41a54188 | ||
|
|
504cb00568 | ||
|
|
552192ff71 | ||
|
|
66a3917d4d | ||
|
|
cf56c7e04c | ||
|
|
18d9905c40 | ||
|
|
767965046e | ||
|
|
f7c59c661c | ||
|
|
dccfd2b3e0 | ||
|
|
d735f91919 | ||
|
|
bcdeeaa04c | ||
|
|
dee31d0e95 | ||
|
|
abdbbe3a79 | ||
|
|
8ca59c9e2e | ||
|
|
ca8bba64dc | ||
|
|
a7fa1b70f2 | ||
|
|
b498433631 | ||
|
|
de05b0065a | ||
|
|
49c4978d0a | ||
|
|
2b47a58dd7 | ||
|
|
83a91bfaed | ||
|
|
6666dcbe72 | ||
|
|
fa64477c82 | ||
|
|
9b5a2a6b24 | ||
|
|
e8b75b13dc | ||
|
|
7cafe35424 | ||
|
|
888086f109 | ||
|
|
69188188f4 | ||
|
|
c28b011121 | ||
|
|
b71b5b4375 | ||
|
|
ee34fa585a | ||
|
|
93dadbe0dc | ||
|
|
57d903bdd9 | ||
|
|
60d014242b | ||
|
|
1a94ebc7d7 | ||
|
|
69b017248b | ||
|
|
6545e19fcc | ||
|
|
3f6abd220f | ||
|
|
cf821b0bd3 | ||
|
|
185c8bcf8a | ||
|
|
cc861134f4 | ||
|
|
5ec1b80c4a | ||
|
|
12daf2b692 | ||
|
|
9007bc20b0 | ||
|
|
df792573e8 | ||
|
|
55a0cad827 | ||
|
|
ac1748e786 | ||
|
|
0e9205315e | ||
|
|
63ce304ea4 | ||
|
|
e52156d730 | ||
|
|
c520469639 | ||
|
|
107fb9ccf8 | ||
|
|
c1524c59ad | ||
|
|
8e5dff08fa | ||
|
|
fe74f3cd10 | ||
|
|
64dc4b1888 | ||
|
|
a824781b8c | ||
|
|
2ca7a08091 | ||
|
|
d8d9197712 | ||
|
|
ff5f2265d2 | ||
|
|
8afdcaee1c | ||
|
|
0aa3c92577 | ||
|
|
a0b687bfb2 | ||
|
|
f279ddfa06 | ||
|
|
4634dbef6d | ||
|
|
cc50c8d4f1 | ||
|
|
ae72b5283b | ||
|
|
211bb62a90 | ||
|
|
299e1154af | ||
|
|
a5b7bc50d4 | ||
|
|
b25d894015 | ||
|
|
7d3d4daefd | ||
|
|
5d262290c4 | ||
|
|
b9186bebc3 | ||
|
|
1191a633fe | ||
|
|
60d3fa2ed8 | ||
|
|
9ade94b727 | ||
|
|
34450311d9 | ||
|
|
85a8949caa | ||
|
|
56ea490f1e | ||
|
|
615b759edd | ||
|
|
6020991530 | ||
|
|
8d9e6d01fb | ||
|
|
0efdde188b | ||
|
|
365f19c8e1 | ||
|
|
f813a28b95 | ||
|
|
c9269bf59e | ||
|
|
839f01ddf5 | ||
|
|
e559bd2c8b | ||
|
|
da97ab5c8a | ||
|
|
7e2640432b | ||
|
|
27230fae24 | ||
|
|
c107178bcc | ||
|
|
bd45191f00 | ||
|
|
2a0633507c | ||
|
|
1b7ddebe46 | ||
|
|
2e510e04bd | ||
|
|
6bd05b12a0 | ||
|
|
9e9f5e6974 | ||
|
|
2ee2b4ae19 | ||
|
|
42a6eadb85 | ||
|
|
e5870cf002 | ||
|
|
afc967fcd0 | ||
|
|
3ccf4877a8 | ||
|
|
cfb02d4854 | ||
|
|
0d35235723 | ||
|
|
d6cef99050 | ||
|
|
24f7f84594 | ||
|
|
00a5af44af | ||
|
|
036da9950b | ||
|
|
29c68087c9 | ||
|
|
7eda1196c6 | ||
|
|
d149dcdbd5 | ||
|
|
fc5fca9ade | ||
|
|
a6723c8552 | ||
|
|
27f1ebc0af | ||
|
|
5f1918db26 | ||
|
|
798bfb3b9c | ||
|
|
7c05f32bc9 | ||
|
|
62a03bd387 | ||
|
|
9291e60892 | ||
|
|
ff3e558679 | ||
|
|
a5cb23e29f | ||
|
|
fa25d083be | ||
|
|
afd852ccb8 | ||
|
|
acacae5e0c | ||
|
|
856037c417 | ||
|
|
ee6eb9860e | ||
|
|
e577c8c852 | ||
|
|
89e5444554 | ||
|
|
3267b09d5a | ||
|
|
cb6167b226 | ||
|
|
40f847e2fb | ||
|
|
f167a71f1d | ||
|
|
44f9271dc2 | ||
|
|
76fdd7fccf | ||
|
|
cdc8c401b5 | ||
|
|
294e0705fa | ||
|
|
3ee0380e99 | ||
|
|
3f9c8a3920 | ||
|
|
21e67e5460 | ||
|
|
017d151e11 | ||
|
|
5d1397fa9a | ||
|
|
7ba6a6bf00 | ||
|
|
5fedfa707e | ||
|
|
98ec4a6792 | ||
|
|
355f44dd11 | ||
|
|
0a75b37f7a | ||
|
|
b65dcfa3a0 | ||
|
|
5b51085c98 | ||
|
|
c87cdf70e4 | ||
|
|
7a580ca8c0 | ||
|
|
6e8835c6bc | ||
|
|
bf19581ab0 | ||
|
|
0f4fb367d5 | ||
|
|
cb5cdd7705 | ||
|
|
0001435044 | ||
|
|
14e1e1741f | ||
|
|
f42c03226f | ||
|
|
74ac77e2b1 | ||
|
|
e2e11d3449 | ||
|
|
0b5101658d | ||
|
|
52cb3292ae | ||
|
|
60f63ec811 | ||
|
|
953e472ded | ||
|
|
1da28de82f | ||
|
|
a0382cd17c | ||
|
|
cb7701b725 | ||
|
|
4ffed326fa | ||
|
|
cd66e0f25f | ||
|
|
e76de18956 | ||
|
|
e9be2db7ac | ||
|
|
e10b53853a | ||
|
|
a1a3e9def7 | ||
|
|
8edc2f05b5 | ||
|
|
672f56695e | ||
|
|
98a395a39e | ||
|
|
011dd0d8fa | ||
|
|
736e077335 | ||
|
|
51a865d66a | ||
|
|
dd032b7fa6 | ||
|
|
272bb5d580 | ||
|
|
c17d58516f | ||
|
|
0b3e6c51ba | ||
|
|
ce1aac1e13 | ||
|
|
83ea863122 | ||
|
|
e66c6bb9d5 | ||
|
|
402d01aa11 | ||
|
|
07ec35e2e5 | ||
|
|
0570cc10b5 | ||
|
|
1742c44ac9 | ||
|
|
34583ebdfc | ||
|
|
3d23bd8e5b | ||
|
|
7c0d417027 | ||
|
|
5145bed028 | ||
|
|
bdda2058c2 | ||
|
|
96bb6e76bf | ||
|
|
546620bb9e | ||
|
|
f3ce45f2a1 | ||
|
|
cda22e3624 | ||
|
|
8ef88e5905 | ||
|
|
3c2f5e08f7 | ||
|
|
abe5137737 | ||
|
|
60159cff40 | ||
|
|
9359ff03ae | ||
|
|
f44fc6defc | ||
|
|
7f73474f74 | ||
|
|
167c192456 | ||
|
|
81a8ff1d92 | ||
|
|
7e5eb493e1 | ||
|
|
038f58d4f0 | ||
|
|
5194f11bc7 | ||
|
|
55d760d416 | ||
|
|
03fa733e8b | ||
|
|
8fb294a2bf | ||
|
|
da2f5ab5b2 | ||
|
|
0c99b19258 | ||
|
|
386e7e8b73 | ||
|
|
cd33abb136 | ||
|
|
b7daf8427b | ||
|
|
fde02e231b | ||
|
|
96a1f08e80 | ||
|
|
a6a381353a | ||
|
|
738effade4 | ||
|
|
f71e8a6198 | ||
|
|
95e68c6346 | ||
|
|
ba140b0f11 | ||
|
|
db9dcdf1ae | ||
|
|
dc262dfcbf | ||
|
|
9eeeb8a20f | ||
|
|
b509e31e5f | ||
|
|
9fe9b24b88 | ||
|
|
31d9b7fe45 | ||
|
|
a098037375 | ||
|
|
d50e0de8fb | ||
|
|
ba5dc67a74 | ||
|
|
715e24afb2 | ||
|
|
ba24f9633e | ||
|
|
6ed4c89dc8 | ||
|
|
3fb2e822be | ||
|
|
02d9c29185 | ||
|
|
65393a093c | ||
|
|
6fe209b564 | ||
|
|
9c9349098a | ||
|
|
5d6a625543 | ||
|
|
508c8a9585 | ||
|
|
63009f90ec | ||
|
|
9d230ea87d | ||
|
|
90de2894e9 | ||
|
|
c9ca1bb025 | ||
|
|
e49232a0d2 | ||
|
|
b464213942 | ||
|
|
2a4328ba7d | ||
|
|
bff586f07a | ||
|
|
d7128e7dac | ||
|
|
df1f132b67 | ||
|
|
c7f0064062 | ||
|
|
aad3cf4df7 | ||
|
|
4184959d85 | ||
|
|
05459df0c7 | ||
|
|
6620b617a7 | ||
|
|
a6c23b7753 | ||
|
|
dfe8ba6099 | ||
|
|
295a44af6f | ||
|
|
0fab73ed58 | ||
|
|
638f910951 | ||
|
|
0ec1d6385a | ||
|
|
54bbe76ed0 | ||
|
|
13fe054cb9 | ||
|
|
59378a19b2 | ||
|
|
bf46acf933 | ||
|
|
a2bb4c6014 | ||
|
|
c73a0fffaa | ||
|
|
45b09a3f25 | ||
|
|
77c776275e | ||
|
|
d3069ac9ec | ||
|
|
25001c50d6 | ||
|
|
d43f14161e | ||
|
|
cc52358c42 | ||
|
|
4b5ac3abac | ||
|
|
ec41046c5c | ||
|
|
e4469d2c8c | ||
|
|
7ec9c8eac7 | ||
|
|
536b35b53a | ||
|
|
be26972432 | ||
|
|
52e45a3677 | ||
|
|
6d2c1a66bb | ||
|
|
2bbf8a2a96 | ||
|
|
aaa0a2a047 | ||
|
|
7e80c9897d | ||
|
|
d4b5dfd1a2 | ||
|
|
e9c1905bd0 | ||
|
|
b1448da109 | ||
|
|
2bc8bc5722 | ||
|
|
4f9a1ffcdd | ||
|
|
9cecc16747 | ||
|
|
a95590d00e | ||
|
|
0230781107 | ||
|
|
b9873e1833 | ||
|
|
a2f651904d | ||
|
|
70be8c7a46 | ||
|
|
ced46b19f7 | ||
|
|
5351ba6cfa | ||
|
|
8c0d3d754b | ||
|
|
c2a5de636f | ||
|
|
d036dca085 | ||
|
|
7e82ba1ff0 | ||
|
|
6d13c766bf | ||
|
|
a191c586dc | ||
|
|
6bc493188b | ||
|
|
782d45bdec | ||
|
|
f86037207c | ||
|
|
66f27b5fca | ||
|
|
76a5852776 | ||
|
|
8f9e4792a1 | ||
|
|
7952c06b36 | ||
|
|
894ec76c11 | ||
|
|
bc236903a2 | ||
|
|
e1187c401e | ||
|
|
9cdfd0fafe | ||
|
|
d1e94eebdd | ||
|
|
7733a0e76b | ||
|
|
4e5ef30303 | ||
|
|
fd0cb98ed0 | ||
|
|
abe2593772 | ||
|
|
5a9bd41e79 | ||
|
|
38159d52d4 | ||
|
|
db3053dcd1 | ||
|
|
739347f093 | ||
|
|
4fe07ccc53 | ||
|
|
1e8e543b26 | ||
|
|
04ca660e81 | ||
|
|
49128a1ee5 | ||
|
|
9543d7607b | ||
|
|
4dfa411247 | ||
|
|
97ff38caff | ||
|
|
cd4faff0ec | ||
|
|
bdd5782a67 | ||
|
|
703b345eee | ||
|
|
397307311e | ||
|
|
2a0389a892 | ||
|
|
ac772cd916 | ||
|
|
6712f8caff | ||
|
|
82fe023b06 | ||
|
|
bd50ccd037 | ||
|
|
54b340b44f | ||
|
|
51fdb4c039 | ||
|
|
77921b9736 | ||
|
|
57493c1991 | ||
|
|
d2b1dc6d78 | ||
|
|
a34f48bcf5 | ||
|
|
f397b60ae1 | ||
|
|
c9d1dcc63d | ||
|
|
919978380c | ||
|
|
1728547270 | ||
|
|
6e61861740 | ||
|
|
5d84e95ed5 | ||
|
|
4fe68f55a4 | ||
|
|
c9d0407e94 | ||
|
|
f2f77f7b14 | ||
|
|
b29e1086ac | ||
|
|
88d75c9ad5 | ||
|
|
ea27a54bf0 | ||
|
|
4d29116d6d | ||
|
|
81dae70f67 | ||
|
|
65cab55c1b | ||
|
|
19219a964b | ||
|
|
5d4a1350d0 | ||
|
|
289ae798f4 | ||
|
|
9604ee8269 | ||
|
|
1c2754bfe3 | ||
|
|
d296708ca6 | ||
|
|
58102386eb | ||
|
|
123e786db2 | ||
|
|
22f091608d | ||
|
|
777804759f | ||
|
|
87d77eb2a0 | ||
|
|
dffe9db25c | ||
|
|
406db1c270 | ||
|
|
ea5a2b15a0 | ||
|
|
fff8c8deaa | ||
|
|
7dcdc1fbdd | ||
|
|
0fd41c3b6a | ||
|
|
f686a380f3 | ||
|
|
b8966e1f7b | ||
|
|
4185ed3290 | ||
|
|
6f40a41466 | ||
|
|
b9505df3b4 | ||
|
|
3c4e824aa5 | ||
|
|
9230c2aaae | ||
|
|
cfd41c0c1d | ||
|
|
8fda5b82f0 | ||
|
|
60ec2a53c2 | ||
|
|
90c131f29f | ||
|
|
96704253b6 | ||
|
|
84402796b2 | ||
|
|
44e6820c37 | ||
|
|
ed62b0104f | ||
|
|
87276bce47 | ||
|
|
dd36d8c64d | ||
|
|
2d9fa9da02 | ||
|
|
928da494a8 | ||
|
|
3e96721cd9 | ||
|
|
7779ce9fb4 | ||
|
|
a8242892c2 | ||
|
|
1d88172c06 | ||
|
|
5dd9353b83 | ||
|
|
05a764f4ff | ||
|
|
55c282bb34 | ||
|
|
776acfd80a | ||
|
|
79d70f6b51 | ||
|
|
ca0e014e60 | ||
|
|
092c227721 | ||
|
|
06d8cf6fef | ||
|
|
424d7d6485 | ||
|
|
2a406f3ce5 | ||
|
|
4b16f8ab94 | ||
|
|
4fb8c77696 | ||
|
|
e5ba020ee9 | ||
|
|
9e453d9792 | ||
|
|
8f7c9a7b18 | ||
|
|
8cf8e463c6 | ||
|
|
8b3d67681e | ||
|
|
709cfe5f28 | ||
|
|
f80a6066e4 | ||
|
|
04775f11fe | ||
|
|
dc3a0f5f88 | ||
|
|
8331e63fe4 | ||
|
|
4c65365116 | ||
|
|
3078b5f340 | ||
|
|
4622a18a72 | ||
|
|
ac02afe9dc | ||
|
|
4d9f207347 | ||
|
|
1eca634736 | ||
|
|
a55cde4d6b | ||
|
|
ffc97ba585 | ||
|
|
5310d85809 | ||
|
|
8df3e72cea | ||
|
|
2fe0a5d75e | ||
|
|
fb206908b4 | ||
|
|
b1ce6bdba9 | ||
|
|
ff6843ca48 | ||
|
|
d5be82948b | ||
|
|
6e5d4f33c5 | ||
|
|
3ed960ec77 | ||
|
|
86491a5f6b | ||
|
|
ebf443a16f | ||
|
|
431338bcb3 | ||
|
|
6bddeb709d | ||
|
|
6d19fe65d1 | ||
|
|
55c90a171f | ||
|
|
b65913249f | ||
|
|
e63b90cc17 | ||
|
|
9c17a35e50 | ||
|
|
70b0fccf79 | ||
|
|
527b0e44eb | ||
|
|
ac15d6445b | ||
|
|
d25b03e987 | ||
|
|
821bd08cd6 | ||
|
|
1ae6b533fb | ||
|
|
77a0f3999a | ||
|
|
0054c15f60 | ||
|
|
8e338f67b2 | ||
|
|
ec9bee6866 | ||
|
|
16b8c39964 | ||
|
|
840aa2b79e | ||
|
|
8e87d46f41 | ||
|
|
c2692f8875 | ||
|
|
e9c178276f | ||
|
|
276fcee795 | ||
|
|
ca1ed16292 | ||
|
|
fed3636f12 | ||
|
|
625a9352bf | ||
|
|
f014854ac7 | ||
|
|
7817963ce9 | ||
|
|
79904c1fa3 | ||
|
|
ea7c47c1bb | ||
|
|
b66fa8f444 | ||
|
|
4167540074 | ||
|
|
5a57945f1a | ||
|
|
b159e4ed9e | ||
|
|
0e855fe5fa | ||
|
|
9150b902d5 | ||
|
|
0187567704 | ||
|
|
a75edc29c6 | ||
|
|
1f5a033421 | ||
|
|
f62eefc02b | ||
|
|
1b79326c05 | ||
|
|
dc1ef58351 | ||
|
|
27d0a70b34 | ||
|
|
e12d94af0b | ||
|
|
cfa3f74931 | ||
|
|
37b70282b5 | ||
|
|
dcde95ba0d | ||
|
|
0b83fc0150 | ||
|
|
8239b67d4f | ||
|
|
24a424891c | ||
|
|
8b85c3a6d7 | ||
|
|
9ac162e896 | ||
|
|
527a30930e | ||
|
|
3495c19d1a | ||
|
|
a9d04408b3 | ||
|
|
89c5e49ba2 | ||
|
|
bf442c5b9e | ||
|
|
dd2c456eb8 | ||
|
|
b1e2f026d9 | ||
|
|
c303fd5de9 | ||
|
|
f3ea0d362f | ||
|
|
4440bda325 | ||
|
|
154b8cfcfd | ||
|
|
ba174af344 | ||
|
|
3320fc0f52 | ||
|
|
f765a7f513 | ||
|
|
c21690b518 | ||
|
|
0bc01da702 | ||
|
|
812b39f574 | ||
|
|
5f1d6120a5 | ||
|
|
b8ea80af33 | ||
|
|
e4d0e5af4d | ||
|
|
3fe5886baf | ||
|
|
226faa5503 | ||
|
|
bd6797543f | ||
|
|
bddb82255c | ||
|
|
c68a31ddce | ||
|
|
93a2018d1e | ||
|
|
426c9049ce | ||
|
|
65af837391 | ||
|
|
581f0f2643 | ||
|
|
7b860120e1 | ||
|
|
0f26ab16dd | ||
|
|
c1df13b855 | ||
|
|
24e12b3811 | ||
|
|
3d5fea1f07 | ||
|
|
8c02bdbf13 | ||
|
|
0c287de4f6 | ||
|
|
aa3862403b | ||
|
|
ae20dd6b9b | ||
|
|
b9729cb432 | ||
|
|
284bbf02dd | ||
|
|
a4affd5b04 | ||
|
|
96f722cf63 | ||
|
|
f7b1ce457a | ||
|
|
282b9dcfdc | ||
|
|
0e98fc1ccd | ||
|
|
d1f9b8a8b5 | ||
|
|
d8921ed573 | ||
|
|
f800af978c | ||
|
|
2e30ff61b0 | ||
|
|
43be5a3cb6 | ||
|
|
5a7390b62a | ||
|
|
7e49eaecbc | ||
|
|
fbfb62dffe | ||
|
|
dad6edbf83 | ||
|
|
edc14f92d9 | ||
|
|
bba948f0ff | ||
|
|
955c2e6292 | ||
|
|
34ec1bedd1 | ||
|
|
fdce055a9b | ||
|
|
388c8f2538 | ||
|
|
bca9e55b1e | ||
|
|
cc7521c452 | ||
|
|
3d88d387c3 | ||
|
|
83b05373a1 | ||
|
|
d27835b34e | ||
|
|
1438ce097f | ||
|
|
224a30f12c | ||
|
|
22f7af7fcf | ||
|
|
f55dd9d40e | ||
|
|
d35b117956 | ||
|
|
f37c34d32e | ||
|
|
89044200cd | ||
|
|
52c28b8692 | ||
|
|
05572e8651 | ||
|
|
43019a0e6b | ||
|
|
6e9efffced | ||
|
|
83b2411fd1 | ||
|
|
86a16400bd | ||
|
|
11c4ea963c | ||
|
|
73c9088b81 | ||
|
|
3ef2efb1f4 | ||
|
|
fd380d75b0 | ||
|
|
2c3a37c6d7 | ||
|
|
d4269fd520 | ||
|
|
6c3e483b56 | ||
|
|
0a1dc50f54 | ||
|
|
1e39649907 | ||
|
|
12dfe1c9b6 | ||
|
|
3570f5a924 | ||
|
|
24765e4559 | ||
|
|
81e2cf82d9 | ||
|
|
cca3a26e43 | ||
|
|
a4c6a99e61 | ||
|
|
a67f890fc6 | ||
|
|
f972155d63 | ||
|
|
a9993f9464 | ||
|
|
4ac6934965 | ||
|
|
53a4ef2670 | ||
|
|
b87a159967 | ||
|
|
9a7dcdcdba | ||
|
|
1c84cfa236 | ||
|
|
ce93cbce77 | ||
|
|
d250f9e08c | ||
|
|
d38c97dd52 | ||
|
|
671dfba802 | ||
|
|
e5866aa756 | ||
|
|
10867134fd | ||
|
|
e2196f8882 | ||
|
|
300b8517c3 | ||
|
|
c781594bfe | ||
|
|
33f8e7022c | ||
|
|
f509eb069d | ||
|
|
7f9b5d9e32 | ||
|
|
e0cf023263 | ||
|
|
60c4902f61 | ||
|
|
dd43533165 | ||
|
|
efe3540d8f | ||
|
|
fbf4699d23 | ||
|
|
7c564e13ee | ||
|
|
2caa20a76d | ||
|
|
57f92d23b1 | ||
|
|
65bfe0928a | ||
|
|
fc36328d4f | ||
|
|
40206822f4 | ||
|
|
46598c8644 | ||
|
|
5191f3159a | ||
|
|
65d6c10185 | ||
|
|
74851c507b | ||
|
|
b5620a36f4 | ||
|
|
d219d8b987 | ||
|
|
dafcf1056f | ||
|
|
7eb4d4aa01 | ||
|
|
fa30241ddb | ||
|
|
9ea43a9213 | ||
|
|
3f455f09dc | ||
|
|
af8c678038 | ||
|
|
70cc7fc198 | ||
|
|
ac9d1b08ee | ||
|
|
9c24a5635e | ||
|
|
e6a493ab88 | ||
|
|
68da63dcde | ||
|
|
b05290aaea | ||
|
|
779d2c34ae | ||
|
|
07da3a1808 | ||
|
|
f978f6fe8a | ||
|
|
c5e63b639e | ||
|
|
03a4df0acd | ||
|
|
998ce78e53 | ||
|
|
b1b0f0b2cc | ||
|
|
306b166336 | ||
|
|
5c0d985abf | ||
|
|
952518640a | ||
|
|
7f27d0b013 | ||
|
|
e7a1b9bf81 | ||
|
|
040c8f58e5 | ||
|
|
9687dcabb6 | ||
|
|
8777ded123 | ||
|
|
c7062dc22b | ||
|
|
5144190ea0 | ||
|
|
976acddeb5 | ||
|
|
488022689f | ||
|
|
8da6c8d6aa | ||
|
|
ff21696bc0 | ||
|
|
44a74dac95 | ||
|
|
418e4a259c | ||
|
|
41d29b752b | ||
|
|
5b30a83133 | ||
|
|
8db333531f | ||
|
|
7ccf435825 | ||
|
|
d236cf4bec | ||
|
|
6a005343b4 | ||
|
|
f78f780570 | ||
|
|
f9339616e1 | ||
|
|
433394203d | ||
|
|
5166094647 | ||
|
|
6329de4504 | ||
|
|
d56096471b | ||
|
|
5fef8ddaff | ||
|
|
382b8fedf5 | ||
|
|
c98417ebca | ||
|
|
c655b703a9 | ||
|
|
30fa8d5d34 | ||
|
|
26c7218ab9 | ||
|
|
e20004d7c1 | ||
|
|
63a5a12949 | ||
|
|
001e51d965 | ||
|
|
91a20ca7e5 | ||
|
|
704f784c88 | ||
|
|
bf5da0c778 | ||
|
|
76002747d5 | ||
|
|
4fb1980fd0 | ||
|
|
73ba3ae1f5 | ||
|
|
5dd1eaded7 | ||
|
|
2cceeedfe1 | ||
|
|
188b0bc7be | ||
|
|
891886b622 | ||
|
|
7686e87155 | ||
|
|
8d6d43c33b | ||
|
|
70d5cac961 | ||
|
|
e0d5b5f7f2 | ||
|
|
e29c3f6123 | ||
|
|
e0c8d4420c | ||
|
|
cc5039e19e | ||
|
|
55c7e769c8 | ||
|
|
5f76deb2e0 |
1332
.github/workflows/submit.yml
vendored
Normal file
1332
.github/workflows/submit.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
18
.hgignore
18
.hgignore
@@ -1,18 +0,0 @@
|
||||
^build/
|
||||
^dist/
|
||||
^.idea/
|
||||
^.vscode/
|
||||
nbproject/private/
|
||||
^webrev
|
||||
^.src-rev$
|
||||
^.jib/
|
||||
(^|/)\.DS_Store
|
||||
(^|/)\.metadata/
|
||||
(^|/)\.recommenders/
|
||||
test/nashorn/script/external
|
||||
test/nashorn/lib
|
||||
NashornProfile.txt
|
||||
(^|/)JTreport/
|
||||
(^|/)JTwork/
|
||||
(^|/)\.git/
|
||||
^src/utils/hsdis/build/
|
||||
33
.jcheck/conf
33
.jcheck/conf
@@ -1,2 +1,33 @@
|
||||
[general]
|
||||
project=jdk
|
||||
bugids=dup
|
||||
jbs=JDK
|
||||
|
||||
[checks]
|
||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists
|
||||
|
||||
[repository]
|
||||
tags=(?:jdk-(?:[1-9]([0-9]*)(?:\.(?:0|[1-9][0-9]*)){0,4})(?:\+(?:(?:[0-9]+))|(?:-ga)))|(?:jdk[4-9](?:u\d{1,3})?-(?:(?:b\d{2,3})|(?:ga)))|(?:hs\d\d(?:\.\d{1,2})?-b\d\d)
|
||||
branches=
|
||||
|
||||
[census]
|
||||
version=0
|
||||
domain=openjdk.org
|
||||
|
||||
[checks "whitespace"]
|
||||
files=.*\.cpp|.*\.hpp|.*\.c|.*\.h|.*\.java|.*\.cc|.*\.hh|.*\.m|.*\.mm
|
||||
|
||||
[checks "merge"]
|
||||
message=Merge
|
||||
|
||||
[checks "reviewers"]
|
||||
reviewers=1
|
||||
ignore=duke
|
||||
|
||||
[checks "committer"]
|
||||
role=committer
|
||||
|
||||
[checks "issues"]
|
||||
pattern=^([124-8][0-9]{6}): (\S.*)$
|
||||
|
||||
[checks "problemlists"]
|
||||
dirs=test/jdk|test/langtools|test/lib-test|test/hotspot/jtreg|test/jaxp
|
||||
|
||||
13
bin/idea.sh
13
bin/idea.sh
@@ -184,7 +184,18 @@ for root in $MODULE_ROOTS; do
|
||||
elif [ "x$WSL_DISTRO_NAME" != "x" ]; then
|
||||
root=`wslpath -am $root`
|
||||
fi
|
||||
SOURCES=$SOURCES" $SOURCE_PREFIX""$root""$SOURCE_POSTFIX"
|
||||
|
||||
VM_CI="jdk.internal.vm.ci/share/classes"
|
||||
VM_COMPILER="src/jdk.internal.vm.compiler/share/classes"
|
||||
if test "${root#*$VM_CI}" != "$root" || test "${root#*$VM_COMPILER}" != "$root"; then
|
||||
for subdir in "$root"/*; do
|
||||
if [ -d "$subdir" ]; then
|
||||
SOURCES=$SOURCES" $SOURCE_PREFIX""$subdir"/src"$SOURCE_POSTFIX"
|
||||
fi
|
||||
done
|
||||
else
|
||||
SOURCES=$SOURCES" $SOURCE_PREFIX""$root""$SOURCE_POSTFIX"
|
||||
fi
|
||||
done
|
||||
|
||||
add_replacement "###SOURCE_ROOTS###" "$SOURCES"
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
<li><a href="#native-libraries">Native Libraries</a></li>
|
||||
<li><a href="#creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</a></li>
|
||||
<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
|
||||
<li><a href="#building-for-musl">Building for musl</a></li>
|
||||
<li><a href="#verifying-the-build">Verifying the Build</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#build-performance">Build Performance</a><ul>
|
||||
@@ -224,6 +225,8 @@
|
||||
<pre><code>sudo apt-get install build-essential</code></pre>
|
||||
<p>For rpm-based distributions (Fedora, Red Hat, etc), try this:</p>
|
||||
<pre><code>sudo yum groupinstall "Development Tools"</code></pre>
|
||||
<p>For Alpine Linux, aside from basic tooling, install the GNU versions of some programs:</p>
|
||||
<pre><code>sudo apk add build-base bash grep zip</code></pre>
|
||||
<h3 id="aix">AIX</h3>
|
||||
<p>Please consult the AIX section of the <a href="https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms">Supported Build Platforms</a> OpenJDK Build Wiki page for details about which versions of AIX are supported.</p>
|
||||
<h2 id="native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</h2>
|
||||
@@ -265,7 +268,7 @@
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">Linux</td>
|
||||
<td style="text-align: left;">gcc 9.2.0</td>
|
||||
<td style="text-align: left;">gcc 10.2.0</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">macOS</td>
|
||||
@@ -273,14 +276,14 @@
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">Windows</td>
|
||||
<td style="text-align: left;">Microsoft Visual Studio 2019 update 16.5.3</td>
|
||||
<td style="text-align: left;">Microsoft Visual Studio 2019 update 16.7.2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>All compilers are expected to be able to compile to the C99 language standard, as some C99 features are used in the source code. Microsoft Visual Studio doesn't fully support C99 so in practice shared code is limited to using C99 features that it does support.</p>
|
||||
<h3 id="gcc">gcc</h3>
|
||||
<p>The minimum accepted version of gcc is 5.0. Older versions will generate a warning by <code>configure</code> and are unlikely to work.</p>
|
||||
<p>The JDK is currently known to be able to compile with at least version 9.2 of gcc.</p>
|
||||
<p>The JDK is currently known to be able to compile with at least version 10.2 of gcc.</p>
|
||||
<p>In general, any version between these two should be usable.</p>
|
||||
<h3 id="clang">clang</h3>
|
||||
<p>The minimum accepted version of clang is 3.5. Older versions will not be accepted by <code>configure</code>.</p>
|
||||
@@ -313,6 +316,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libfreetype6-dev</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install freetype-devel</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add freetype-dev</code>.</li>
|
||||
</ul>
|
||||
<p>Use <code>--with-freetype-include=<path></code> and <code>--with-freetype-lib=<path></code> if <code>configure</code> does not automatically locate the platform FreeType files.</p>
|
||||
<h3 id="cups">CUPS</h3>
|
||||
@@ -320,6 +324,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libcups2-dev</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install cups-devel</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add cups-dev</code>.</li>
|
||||
</ul>
|
||||
<p>Use <code>--with-cups=<path></code> if <code>configure</code> does not properly locate your CUPS files.</p>
|
||||
<h3 id="x11">X11</h3>
|
||||
@@ -327,6 +332,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev</code>.</li>
|
||||
</ul>
|
||||
<p>Use <code>--with-x=<path></code> if <code>configure</code> does not properly locate your X11 files.</p>
|
||||
<h3 id="alsa">ALSA</h3>
|
||||
@@ -334,6 +340,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libasound2-dev</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install alsa-lib-devel</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add alsa-lib-dev</code>.</li>
|
||||
</ul>
|
||||
<p>Use <code>--with-alsa=<path></code> if <code>configure</code> does not properly locate your ALSA files.</p>
|
||||
<h3 id="libffi">libffi</h3>
|
||||
@@ -341,6 +348,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install libffi-dev</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install libffi-devel</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add libffi-dev</code>.</li>
|
||||
</ul>
|
||||
<p>Use <code>--with-libffi=<path></code> if <code>configure</code> does not properly locate your libffi files.</p>
|
||||
<h2 id="build-tools-requirements">Build Tools Requirements</h2>
|
||||
@@ -349,6 +357,7 @@
|
||||
<ul>
|
||||
<li>To install on an apt-based Linux, try running <code>sudo apt-get install autoconf</code>.</li>
|
||||
<li>To install on an rpm-based Linux, try running <code>sudo yum install autoconf</code>.</li>
|
||||
<li>To install on Alpine Linux, try running <code>sudo apk add autoconf</code>.</li>
|
||||
<li>To install on macOS, try running <code>brew install autoconf</code>.</li>
|
||||
<li>To install on Windows, try running <code><path to Cygwin setup>/setup-x86_64 -q -P autoconf</code>.</li>
|
||||
</ul>
|
||||
@@ -688,6 +697,15 @@ ls build/linux-aarch64-normal-server-release/</code></pre>
|
||||
<p>Additional architectures might be supported by Debian/Ubuntu Ports.</p>
|
||||
<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
|
||||
<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported by the JDK.</p>
|
||||
<h3 id="building-for-musl">Building for musl</h3>
|
||||
<p>Just like it's possible to cross-compile for a different CPU, it's possible to cross-compile for musl libc on a glibc-based <em>build</em> system. A devkit suitable for most target CPU architectures can be obtained from <a href="https://musl.cc">musl.cc</a>. After installing the required packages in the sysroot, configure the build with <code>--openjdk-target</code>:</p>
|
||||
<pre><code>sh ./configure --with-jvm-variants=server \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--with-build-jdk=$BUILD_JDK \
|
||||
--openjdk-target=x86_64-unknown-linux-musl \
|
||||
--with-devkit=$DEVKIT \
|
||||
--with-sysroot=$SYSROOT</code></pre>
|
||||
<p>and run <code>make</code> normally.</p>
|
||||
<h3 id="verifying-the-build">Verifying the Build</h3>
|
||||
<p>The build will end up in a directory named like <code>build/linux-arm-normal-server-release</code>.</p>
|
||||
<p>Inside this build output directory, the <code>images/jdk</code> will contain the newly built JDK, for your <em>target</em> system.</p>
|
||||
|
||||
@@ -273,6 +273,13 @@ For rpm-based distributions (Fedora, Red Hat, etc), try this:
|
||||
sudo yum groupinstall "Development Tools"
|
||||
```
|
||||
|
||||
For Alpine Linux, aside from basic tooling, install the GNU versions of some
|
||||
programs:
|
||||
|
||||
```
|
||||
sudo apk add build-base bash grep zip
|
||||
```
|
||||
|
||||
### AIX
|
||||
|
||||
Please consult the AIX section of the [Supported Build Platforms](
|
||||
@@ -302,9 +309,9 @@ issues.
|
||||
|
||||
Operating system Toolchain version
|
||||
------------------ -------------------------------------------------------
|
||||
Linux gcc 9.2.0
|
||||
Linux gcc 10.2.0
|
||||
macOS Apple Xcode 10.1 (using clang 10.0.0)
|
||||
Windows Microsoft Visual Studio 2019 update 16.5.3
|
||||
Windows Microsoft Visual Studio 2019 update 16.7.2
|
||||
|
||||
All compilers are expected to be able to compile to the C99 language standard,
|
||||
as some C99 features are used in the source code. Microsoft Visual Studio
|
||||
@@ -316,7 +323,7 @@ features that it does support.
|
||||
The minimum accepted version of gcc is 5.0. Older versions will generate a warning
|
||||
by `configure` and are unlikely to work.
|
||||
|
||||
The JDK is currently known to be able to compile with at least version 9.2 of
|
||||
The JDK is currently known to be able to compile with at least version 10.2 of
|
||||
gcc.
|
||||
|
||||
In general, any version between these two should be usable.
|
||||
@@ -431,6 +438,7 @@ rather than bundling the JDK's own copy.
|
||||
libfreetype6-dev`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
freetype-devel`.
|
||||
* To install on Alpine Linux, try running `sudo apk add freetype-dev`.
|
||||
|
||||
Use `--with-freetype-include=<path>` and `--with-freetype-lib=<path>`
|
||||
if `configure` does not automatically locate the platform FreeType files.
|
||||
@@ -445,6 +453,7 @@ your operating system.
|
||||
libcups2-dev`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
cups-devel`.
|
||||
* To install on Alpine Linux, try running `sudo apk add cups-dev`.
|
||||
|
||||
Use `--with-cups=<path>` if `configure` does not properly locate your CUPS
|
||||
files.
|
||||
@@ -458,6 +467,8 @@ Linux.
|
||||
libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel`.
|
||||
* To install on Alpine Linux, try running `sudo apk add libx11-dev
|
||||
libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev`.
|
||||
|
||||
Use `--with-x=<path>` if `configure` does not properly locate your X11 files.
|
||||
|
||||
@@ -470,6 +481,7 @@ required on Linux. At least version 0.9.1 of ALSA is required.
|
||||
libasound2-dev`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
alsa-lib-devel`.
|
||||
* To install on Alpine Linux, try running `sudo apk add alsa-lib-dev`.
|
||||
|
||||
Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA
|
||||
files.
|
||||
@@ -484,6 +496,7 @@ Hotspot.
|
||||
libffi-dev`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
libffi-devel`.
|
||||
* To install on Alpine Linux, try running `sudo apk add libffi-dev`.
|
||||
|
||||
Use `--with-libffi=<path>` if `configure` does not properly locate your libffi
|
||||
files.
|
||||
@@ -499,6 +512,7 @@ platforms. At least version 2.69 is required.
|
||||
autoconf`.
|
||||
* To install on an rpm-based Linux, try running `sudo yum install
|
||||
autoconf`.
|
||||
* To install on Alpine Linux, try running `sudo apk add autoconf`.
|
||||
* To install on macOS, try running `brew install autoconf`.
|
||||
* To install on Windows, try running `<path to Cygwin setup>/setup-x86_64 -q
|
||||
-P autoconf`.
|
||||
@@ -1113,6 +1127,25 @@ available using `--with-abi-profile`: arm-vfp-sflt, arm-vfp-hflt, arm-sflt,
|
||||
armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer
|
||||
properly supported by the JDK.
|
||||
|
||||
### Building for musl
|
||||
|
||||
Just like it's possible to cross-compile for a different CPU, it's possible to
|
||||
cross-compile for musl libc on a glibc-based *build* system.
|
||||
A devkit suitable for most target CPU architectures can be obtained from
|
||||
[musl.cc](https://musl.cc). After installing the required packages in the
|
||||
sysroot, configure the build with `--openjdk-target`:
|
||||
|
||||
```
|
||||
sh ./configure --with-jvm-variants=server \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--with-build-jdk=$BUILD_JDK \
|
||||
--openjdk-target=x86_64-unknown-linux-musl \
|
||||
--with-devkit=$DEVKIT \
|
||||
--with-sysroot=$SYSROOT
|
||||
```
|
||||
|
||||
and run `make` normally.
|
||||
|
||||
### Verifying the Build
|
||||
|
||||
The build will end up in a directory named like
|
||||
|
||||
13
jb/project/docker/Dockerfile
Normal file
13
jb/project/docker/Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
# jetbrains/runtime:jbr15env
|
||||
FROM centos:7
|
||||
RUN yum -y install centos-release-scl
|
||||
RUN yum -y install devtoolset-8
|
||||
RUN yum -y install zip bzip2 unzip tar wget make autoconf automake libtool gcc gcc-c++ libstdc++-devel alsa-devel cups-devel xorg-x11-devel libjpeg62-devel giflib-devel freetype-devel file which libXtst-devel libXt-devel libXrender-devel alsa-lib-devel fontconfig-devel libXrandr-devel libXi-devel git
|
||||
# Install Java 15
|
||||
RUN wget https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz \
|
||||
-O - | tar xz -C /
|
||||
RUN mv /zulu15.27.17-ca-jdk15.0.0-linux_x64 /jdk15.0.0
|
||||
ENV PATH /opt/rh/devtoolset-8/root/usr/bin:$PATH
|
||||
RUN mkdir .git
|
||||
RUN git config user.email "builduser@jetbrains.com"
|
||||
RUN git config user.name "builduser"
|
||||
9
jb/project/tools/linux/scripts/mkbundles_x64.sh
Executable file
9
jb/project/tools/linux/scripts/mkbundles_x64.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/linux/scripts
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
77
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
77
jb/project/tools/linux/scripts/mkimages_aarch64.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-boot-jdk=amazon-corretto-11.0.5.10.1-linux-aarch64 \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-aarch64-normal-server-release || exit $?
|
||||
make images CONF=linux-aarch64-normal-server-release test-image || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-aarch64-b${build_number}
|
||||
BASE_DIR=build/linux-aarch64-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar \
|
||||
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-aarch64-b$build_number
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.aarch64
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.aarch64 | sed s/" "//g | sed s/,$//g) \
|
||||
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -pcf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-aarch64-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
139
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
139
jb/project/tools/linux/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,139 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x64-b$build_number
|
||||
|
||||
echo Running jlink....
|
||||
$JSDK/bin/jlink \
|
||||
--module-path $JSDK/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -R $BASE_DIR/$JBR_BUNDLE $BASE_DIR/jbr
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
|
||||
fi
|
||||
grep -v "^JAVA_VERSION" $JSDK/release | grep -v "^MODULES" >> $BASE_DIR/$JBR_BUNDLE/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
tar -pcf $JBR.tar -C $BASE_DIR jbr || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--enable-cds=yes || exit $?
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=$BOOT_JDK \
|
||||
--enable-cds=yes || exit $?
|
||||
fi
|
||||
|
||||
make images CONF=linux-x86_64-server-release || exit $?
|
||||
|
||||
JSDK=build/linux-x86_64-server-release/images/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-linux-x64-b$build_number
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
BASE_DIR=build/linux-x86_64-server-release/images
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR $JBRSDK_BUNDLE || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
fi
|
||||
|
||||
create_jbr ${bundle_type}
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make test-image || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x64-b$build_number
|
||||
|
||||
echo Creating $JBSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
fi
|
||||
72
jb/project/tools/linux/scripts/mkimages_x64_fd.sh
Executable file
72
jb/project/tools/linux/scripts/mkimages_x64_fd.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=fastdebug \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-x86_64-normal-server-fastdebug || exit $?
|
||||
make images CONF=linux-x86_64-normal-server-fastdebug || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-fastdebug-b${build_number}
|
||||
BASE_DIR=build/linux-x86_64-normal-server-fastdebug/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBRSDK_BUNDLE/lib || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar \
|
||||
--exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man \
|
||||
-C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x64-fastdebug-b$build_number
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list | sed s/" "//g | sed s/,$//g) \
|
||||
--output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
cp -R jcef_linux_x64/* $BASE_DIR/$JBR_BUNDLE/lib || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -czf $JBR.tar -C $BASE_DIR ${JBR_BUNDLE} || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
73
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
73
jb/project/tools/linux/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
linux32 bash configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-boot-jdk=/jbrsdk-11.0.5-b1 \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=linux-x86-normal-server-release || exit $?
|
||||
make images CONF=linux-x86-normal-server-release test-image || exit $?
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-x86-b${build_number}
|
||||
BASE_DIR=build/linux-x86-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
echo Fixing permissions
|
||||
chmod -R a+r $JSDK
|
||||
|
||||
rm -rf $BASE_DIR/$JBRSDK_BUNDLE
|
||||
cp -r $JSDK $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
tar -pcf $JBSDK.tar --exclude=*.debuginfo --exclude=demo --exclude=sample --exclude=man -C $BASE_DIR ${JBRSDK_BUNDLE} || exit $?
|
||||
gzip $JBSDK.tar || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
rm -rf $BASE_DIR/$JBR_BUNDLE
|
||||
|
||||
JBR=$JBR_BASE_NAME-linux-x86-b$build_number
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||
echo Running jlink....
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.x86 | sed s/" "//g | sed s/,$//g) --output ${BASE_DIR}/${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${BASE_DIR}/${JBR_BUNDLE}/release
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
tar -pcf $JBR.tar -C $BASE_DIR $JBR_BUNDLE || exit $?
|
||||
gzip $JBR.tar || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-linux-test-x86-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
tar -pcf $JBRSDK_TEST.tar -C $BASE_DIR --exclude='test/jdk/demos' --exclude='test/hotspot/gtest' test || exit $?
|
||||
gzip $JBRSDK_TEST.tar || exit $?
|
||||
16
jb/project/tools/mac/scripts/entitlements.xml
Normal file
16
jb/project/tools/mac/scripts/entitlements.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-executable-page-protection</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
9
jb/project/tools/mac/scripts/mkbundles.sh
Executable file
9
jb/project/tools/mac/scripts/mkbundles.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/mac/scripts
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
148
jb/project/tools/mac/scripts/mkimages.sh
Executable file
148
jb/project/tools/mac/scripts/mkimages.sh
Executable file
@@ -0,0 +1,148 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
|
||||
JRE_CONTENTS=${BASE_DIR}/${JBR_BUNDLE}/Contents
|
||||
JRE_HOME=${JRE_CONTENTS}/Home
|
||||
if [ -d "${JRE_CONTENTS}" ]; then
|
||||
rm -rf ${JRE_CONTENTS}
|
||||
fi
|
||||
mkdir -p ${JRE_CONTENTS}
|
||||
|
||||
JBR=${JBR_BASE_NAME}-osx-x64-b${build_number}
|
||||
|
||||
${BASE_DIR}/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||
--module-path ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JRE_HOME} || exit $?
|
||||
grep -v "^JAVA_VERSION" ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release | grep -v "^MODULES" >> ${JRE_HOME}/release
|
||||
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
|
||||
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
|
||||
|
||||
if [[ "${bundle_type}" == *jcef* ]]; then
|
||||
rm -rf ${JRE_CONTENTS}/Frameworks || exit $?
|
||||
rm -rf ${JRE_CONTENTS}/Helpers || exit $?
|
||||
cp -a jcef_mac/Frameworks ${JRE_CONTENTS} || exit $?
|
||||
cp -a jcef_mac/Helpers ${JRE_CONTENTS} || exit $?
|
||||
fi
|
||||
|
||||
echo Creating ${JBR}.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || exit $?
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v $BOOT_JDK` \
|
||||
--enable-cds=yes || exit $?
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=release \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v $BOOT_JDK` \
|
||||
--enable-cds=yes || exit $?
|
||||
fi
|
||||
make images CONF=macosx-x86_64-server-release || exit $?
|
||||
|
||||
JSDK=build/macosx-x86_64-server-release/images/jdk-bundle
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-b${build_number}
|
||||
|
||||
BASE_DIR=jre
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR
|
||||
mkdir $BASE_DIR || exit $?
|
||||
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
if [[ "$bundle_type" == *jcef* ]]; then
|
||||
cp -a jcef_mac/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/ || exit $?
|
||||
cp -a jcef_mac/Helpers $BASE_DIR/$JBRSDK_BUNDLE/Contents/ || exit $?
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBSDK.tar.gz -C $BASE_DIR \
|
||||
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||
$JBRSDK_BUNDLE || exit $?
|
||||
fi
|
||||
|
||||
create_jbr "${bundle_type}" || exit $?
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make test-image || exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-x64-b$build_number
|
||||
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBRSDK_TEST.tar.gz -C build/macosx-x86_64-server-release/images \
|
||||
--exclude='test/jdk/demos' test || exit $?
|
||||
fi
|
||||
83
jb/project/tools/mac/scripts/mkimages_fd.sh
Executable file
83
jb/project/tools/mac/scripts/mkimages_fd.sh
Executable file
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-debug-level=fastdebug \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-pre= \
|
||||
--with-version-opt=b$build_number \
|
||||
--with-import-modules=./modular-sdk \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||
--enable-cds=yes || exit $?
|
||||
make clean CONF=macosx-x86_64-normal-server-fastdebug || exit $?
|
||||
make images CONF=macosx-x86_64-normal-server-fastdebug || exit $?
|
||||
|
||||
JSDK=build/macosx-x86_64-normal-server-fastdebug/images/jdk-bundle
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-fastdebug-b${build_number}
|
||||
|
||||
BASE_DIR=jre
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf $BASE_DIR
|
||||
mkdir $BASE_DIR || exit $?
|
||||
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || exit $?
|
||||
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
cp -a jcef_mac/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
|
||||
cp -a jcef_mac/Helpers $BASE_DIR/$JBRSDK_BUNDLE/Contents
|
||||
|
||||
COPYFILE_DISABLE=1 \
|
||||
tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
|
||||
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||
${JBRSDK_BUNDLE} || exit $?
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JRE_CONTENTS=$BASE_DIR/$JBR_BUNDLE/Contents
|
||||
JRE_HOME=$JRE_CONTENTS/Home
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
mkdir -p $JRE_CONTENTS
|
||||
|
||||
if [ -d "$JRE_HOME" ]; then
|
||||
rm -rf $JRE_HOME
|
||||
fi
|
||||
|
||||
JBR=${JBR_BASE_NAME}-osx-x64-fastdebug-b${build_number}
|
||||
|
||||
$BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||
--module-path $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list | sed s/" "//g) --output $JRE_HOME || exit $?
|
||||
grep -v "^JAVA_VERSION" $BASE_DIR/$JBRSDK_BUNDLE/Contents/Home/release | grep -v "^MODULES" >> $JRE_HOME/release
|
||||
cp -R $BASE_DIR/$JBRSDK_BUNDLE/Contents/MacOS $JRE_CONTENTS
|
||||
cp $BASE_DIR/$JBRSDK_BUNDLE/Contents/Info.plist $JRE_CONTENTS
|
||||
cp -a jcef_mac/Frameworks ${JRE_CONTENTS} || exit $?
|
||||
cp -a jcef_mac/Helpers ${JRE_CONTENTS} || exit $?
|
||||
|
||||
|
||||
echo Creating $JBR.tar.gz ...
|
||||
COPYFILE_DISABLE=1 tar -pczf $JBR.tar.gz --exclude='*.dSYM' --exclude='man' -C $BASE_DIR $JBR_BUNDLE || exit $?
|
||||
120
jb/project/tools/mac/scripts/notarize.sh
Executable file
120
jb/project/tools/mac/scripts/notarize.sh
Executable file
@@ -0,0 +1,120 @@
|
||||
#!/bin/bash
|
||||
|
||||
APP_DIRECTORY=$1
|
||||
APPL_USER=$2
|
||||
APPL_PASSWORD=$3
|
||||
APP_NAME=$4
|
||||
BUNDLE_ID=$5
|
||||
FAKE_ROOT="${6:-fake-root}"
|
||||
|
||||
if [[ -z "$APP_DIRECTORY" ]] || [[ -z "$APPL_USER" ]] || [[ -z "$APPL_PASSWORD" ]]; then
|
||||
echo "Usage: $0 AppDirectory Username Password"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "$APP_DIRECTORY" ]]; then
|
||||
echo "AppDirectory '$APP_DIRECTORY' does not exist or not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
function publish-log() {
|
||||
id=$1
|
||||
file=$2
|
||||
curl -T "$file" "$ARTIFACTORY_URL/$id" || true
|
||||
}
|
||||
|
||||
function altool-upload() {
|
||||
# Since altool uses same file for upload token we have to trick it into using different folders for token file location
|
||||
# Also it copies zip into TMPDIR so we override it too, to simplify cleanup
|
||||
OLD_HOME="$HOME"
|
||||
export HOME="$FAKE_ROOT/home"
|
||||
export TMPDIR="$FAKE_ROOT/tmp"
|
||||
mkdir -p "$HOME"
|
||||
mkdir -p "$TMPDIR"
|
||||
export _JAVA_OPTIONS="-Duser.home=$HOME -Djava.io.tmpdir=$TMPDIR"
|
||||
# Reduce amount of downloads, cache transporter libraries
|
||||
shared_itmstransporter="$OLD_HOME/shared-itmstransporter"
|
||||
if [[ -f "$shared_itmstransporter" ]]; then
|
||||
cp -r "$shared_itmstransporter" "$HOME/.itmstransporter"
|
||||
fi
|
||||
# For some reason altool prints everything to stderr, not stdout
|
||||
set +e
|
||||
xcrun altool --notarize-app \
|
||||
--username "$APPL_USER" --password "$APPL_PASSWORD" \
|
||||
--primary-bundle-id "$BUNDLE_ID" \
|
||||
--asc-provider JetBrainssro --file "$1" 2>&1 | tee "altool.init.out"
|
||||
unset TMPDIR
|
||||
export HOME="$OLD_HOME"
|
||||
set -e
|
||||
}
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
file="$APP_NAME.zip"
|
||||
|
||||
log "Zipping $file..."
|
||||
rm -rf "$file"
|
||||
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY/Contents" "$file"
|
||||
|
||||
log "Notarizing $file..."
|
||||
rm -rf "altool.init.out" "altool.check.out"
|
||||
altool-upload "$file"
|
||||
|
||||
rm -rf "$file"
|
||||
|
||||
notarization_info="$(grep -e "RequestUUID" "altool.init.out" | grep -oE '([0-9a-f-]{36})')"
|
||||
|
||||
if [ -z "$notarization_info" ]; then
|
||||
log "Faile to read RequestUUID from altool.init.out"
|
||||
exit 10
|
||||
fi
|
||||
|
||||
PATH="$PATH:/usr/local/bin/"
|
||||
|
||||
log "Notarization request sent, awaiting response"
|
||||
spent=0
|
||||
|
||||
while true; do
|
||||
# For some reason altool prints everything to stderr, not stdout
|
||||
xcrun altool --username "$APPL_USER" --notarization-info "$notarization_info" --password "$APPL_PASSWORD" >"altool.check.out" 2>&1 || true
|
||||
status="$(grep -oe 'Status: .*' "altool.check.out" | cut -c 9- || true)"
|
||||
log "Current status: $status"
|
||||
if [ "$status" = "invalid" ]; then
|
||||
log "Notarization failed"
|
||||
ec=1
|
||||
elif [ "$status" = "success" ]; then
|
||||
log "Notarization succeeded"
|
||||
ec=0
|
||||
else
|
||||
if [ "$status" != "in progress" ]; then
|
||||
log "Unknown notarization status, waiting more, altool output:"
|
||||
cat "altool.check.out"
|
||||
fi
|
||||
if [[ $spent -gt 60 ]]; then
|
||||
log "Waiting time out (apx 60 minutes)"
|
||||
ec=2
|
||||
break
|
||||
fi
|
||||
sleep 60
|
||||
((spent += 1))
|
||||
continue
|
||||
fi
|
||||
developer_log="developer_log.json"
|
||||
log "Fetching $developer_log"
|
||||
# TODO: Replace cut with trim or something better
|
||||
url="$(grep -oe 'LogFileURL: .*' "altool.check.out" | cut -c 13-)"
|
||||
wget "$url" -O "$developer_log" && cat "$developer_log" || true
|
||||
if [ $ec != 0 ]; then
|
||||
log "Publishing $developer_log"
|
||||
publish-log "$notarization_info" "$developer_log"
|
||||
fi
|
||||
break
|
||||
done
|
||||
cat "altool.check.out"
|
||||
|
||||
rm -rf "altool.init.out" "altool.check.out"
|
||||
exit $ec
|
||||
93
jb/project/tools/mac/scripts/sign.sh
Executable file
93
jb/project/tools/mac/scripts/sign.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
APP_DIRECTORY=$1
|
||||
JB_CERT=$2
|
||||
|
||||
if [[ -z "$APP_DIRECTORY" ]] || [[ -z "$JB_CERT" ]]; then
|
||||
echo "Usage: $0 AppDirectory CertificateID"
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d "$APP_DIRECTORY" ]]; then
|
||||
echo "AppDirectory '$APP_DIRECTORY' does not exist or not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
# Cleanup files left from previous sign attempt (if any)
|
||||
find "$APP_DIRECTORY" -name '*.cstemp' -exec rm '{}' \;
|
||||
|
||||
log "Signing libraries and executables..."
|
||||
# -perm +111 searches for executables
|
||||
for f in \
|
||||
"Contents/Home/bin" \
|
||||
"Contents/Home/lib"; do
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
done
|
||||
|
||||
log "Signing libraries in jars in $PWD"
|
||||
|
||||
# todo: add set -euo pipefail; into the inner sh -c
|
||||
# `-e` prevents `grep -q && printf` loginc
|
||||
# with `-o pipefail` there's no input for 'while' loop
|
||||
find "$APP_DIRECTORY" -name '*.jar' \
|
||||
-exec sh -c "set -u; unzip -l \"\$0\" | grep -q -e '\.dylib\$' -e '\.jnilib\$' -e '\.so\$' -e '^jattach\$' && printf \"\$0\0\" " {} \; |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
log "Processing libraries in $file"
|
||||
|
||||
rm -rf jarfolder jar.jar
|
||||
mkdir jarfolder
|
||||
filename="${file##*/}"
|
||||
log "Filename: $filename"
|
||||
cp "$file" jarfolder && (cd jarfolder && jar xf "$filename" && rm "$filename")
|
||||
|
||||
find jarfolder \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
|
||||
(cd jarfolder; zip -q -r -o ../jar.jar .)
|
||||
mv jar.jar "$file"
|
||||
done
|
||||
|
||||
rm -rf jarfolder jar.jar
|
||||
|
||||
log "Signing other files..."
|
||||
for f in \
|
||||
"Contents/MacOS"; do
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
done
|
||||
|
||||
#log "Signing executable..."
|
||||
#codesign --timestamp \
|
||||
# -v -s "$JB_CERT" --options=runtime \
|
||||
# --force \
|
||||
# --entitlements entitlements.xml "$APP_DIRECTORY/Contents/MacOS/idea"
|
||||
|
||||
log "Signing whole app..."
|
||||
codesign --timestamp \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--force \
|
||||
--entitlements entitlements.xml "$APP_DIRECTORY"
|
||||
|
||||
log "Verifying java is not broken"
|
||||
find "$APP_DIRECTORY" \
|
||||
-type f -name 'java' -perm +111 -exec {} -version \;
|
||||
145
jb/project/tools/mac/scripts/signapp.sh
Executable file
145
jb/project/tools/mac/scripts/signapp.sh
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/bin/bash
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
|
||||
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true
|
||||
export COPYFILE_DISABLE=true
|
||||
|
||||
INPUT_FILE=$1
|
||||
EXPLODED=$2.exploded
|
||||
BACKUP_JMODS=$2.backup
|
||||
USERNAME=$3
|
||||
PASSWORD=$4
|
||||
CODESIGN_STRING=$5
|
||||
NOTARIZE=$6
|
||||
BUNDLE_ID=$7
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
function log() {
|
||||
echo "$(date '+[%H:%M:%S]') $*"
|
||||
}
|
||||
|
||||
log "Deleting $EXPLODED ..."
|
||||
if test -d "$EXPLODED"; then
|
||||
find "$EXPLODED" -mindepth 1 -maxdepth 1 -exec chmod -R u+wx '{}' \;
|
||||
fi
|
||||
rm -rf "$EXPLODED"
|
||||
mkdir "$EXPLODED"
|
||||
rm -rf "$BACKUP_JMODS"
|
||||
mkdir "$BACKUP_JMODS"
|
||||
|
||||
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
||||
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
||||
rm "$INPUT_FILE"
|
||||
BUILD_NAME="$(ls "$EXPLODED")"
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||
fi
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/Frameworks $BACKUP_JMODS
|
||||
fi
|
||||
if test -f $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/MacOS/libjli.dylib $BACKUP_JMODS
|
||||
fi
|
||||
|
||||
#log "$INPUT_FILE unzipped and removed"
|
||||
log "$INPUT_FILE extracted and removed"
|
||||
|
||||
APPLICATION_PATH="$EXPLODED/$BUILD_NAME"
|
||||
|
||||
find "$APPLICATION_PATH/Contents/Home/bin" \
|
||||
-maxdepth 1 -type f -name '*.jnilib' -print0 |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
if [ -f "$file" ]; then
|
||||
log "Linking $file"
|
||||
b="$(basename "$file" .jnilib)"
|
||||
ln -sf "$b.jnilib" "$(dirname "$file")/$b.dylib"
|
||||
fi
|
||||
done
|
||||
|
||||
find "$APPLICATION_PATH/Contents/" \
|
||||
-maxdepth 1 -type f -name '*.txt' -print0 |
|
||||
while IFS= read -r -d $'\0' file; do
|
||||
if [ -f "$file" ]; then
|
||||
log "Moving $file"
|
||||
mv "$file" "$APPLICATION_PATH/Contents/Resources"
|
||||
fi
|
||||
done
|
||||
|
||||
non_plist=$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist' | wc -l)
|
||||
if [[ $non_plist -gt 0 ]]; then
|
||||
log "Only Info.plist file is allowed in Contents directory but found $non_plist file(s):"
|
||||
log "$(find "$APPLICATION_PATH/Contents/" -maxdepth 1 -type f -and -not -name 'Info.plist')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Unlocking keychain..."
|
||||
# Make sure *.p12 is imported into local KeyChain
|
||||
security unlock-keychain -p "$PASSWORD" "/Users/$USERNAME/Library/Keychains/login.keychain"
|
||||
|
||||
attempt=1
|
||||
limit=3
|
||||
set +e
|
||||
while [[ $attempt -le $limit ]]; do
|
||||
log "Signing (attempt $attempt) $APPLICATION_PATH ..."
|
||||
./sign.sh "$APPLICATION_PATH" "$CODESIGN_STRING"
|
||||
ec=$?
|
||||
if [[ $ec -ne 0 ]]; then
|
||||
((attempt += 1))
|
||||
if [ $attempt -eq $limit ]; then
|
||||
set -e
|
||||
fi
|
||||
log "Signing failed, wait for 30 sec and try to sign again"
|
||||
sleep 30
|
||||
else
|
||||
log "Signing done"
|
||||
codesign -v "$APPLICATION_PATH" -vvvvv
|
||||
log "Check sign done"
|
||||
((attempt += limit))
|
||||
fi
|
||||
done
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$NOTARIZE" = "yes" ]; then
|
||||
log "Notarizing..."
|
||||
# shellcheck disable=SC1090
|
||||
source "$HOME/.notarize_token"
|
||||
APP_NAME=$(echo ${INPUT_FILE} | awk -F"." '{ print $1 }')
|
||||
# Since notarization tool uses same file for upload token we have to trick it into using different folders, hence fake root
|
||||
# Also it leaves copy of zip file in TMPDIR, so notarize.sh overrides it and uses FAKE_ROOT as location for temp TMPDIR
|
||||
FAKE_ROOT="$(pwd)/fake-root"
|
||||
mkdir -p "$FAKE_ROOT"
|
||||
echo "Notarization will use fake root: $FAKE_ROOT"
|
||||
./notarize.sh "$APPLICATION_PATH" "$APPLE_USERNAME" "$APPLE_PASSWORD" "$APP_NAME" "$BUNDLE_ID" "$FAKE_ROOT"
|
||||
rm -rf "$FAKE_ROOT"
|
||||
|
||||
set +e
|
||||
log "Stapling..."
|
||||
xcrun stapler staple "$APPLICATION_PATH"
|
||||
else
|
||||
log "Notarization disabled"
|
||||
log "Stapling disabled"
|
||||
fi
|
||||
|
||||
log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||
(
|
||||
#cd "$EXPLODED"
|
||||
#ditto -c -k --sequesterRsrc --keepParent "$BUILD_NAME" "../$INPUT_FILE"
|
||||
if test ! -z $(ls $BACKUP_JMODS/libjli.dylib); then
|
||||
mv $BACKUP_JMODS/libjli.dylib $EXPLODED/$BUILD_NAME/Contents/MacOS
|
||||
fi
|
||||
if test -d $BACKUP_JMODS/jmods; then
|
||||
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
if test -d $BACKUP_JMODS/Frameworks; then
|
||||
mv $BACKUP_JMODS/Frameworks $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
|
||||
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||
log "Finished zipping"
|
||||
)
|
||||
rm -rf "$EXPLODED"
|
||||
log "Done"
|
||||
9
jb/project/tools/windows/scripts/mkbundles_x64.sh
Executable file
9
jb/project/tools/windows/scripts/mkbundles_x64.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
script_dir=jb/project/tools/windows/scripts
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jcef" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx" || exit $?
|
||||
${script_dir}/mkimages_x64.sh $JBSDK_VERSION $JDK_BUILD_NUMBER $build_number "jfx_jcef" || exit $?
|
||||
119
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
119
jb/project/tools/windows/scripts/mkimages_x64.sh
Executable file
@@ -0,0 +1,119 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function create_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
grep -v "jdk.compiler\|jdk.hotspot.agent" modules.list > modules_tmp.list
|
||||
;;
|
||||
"jfx" | "jcef" | "jfx_jcef")
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
*)
|
||||
cat modules.list > modules_tmp.list
|
||||
;;
|
||||
esac
|
||||
rm -rf ${JBR_BUNDLE}
|
||||
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
|
||||
if [[ "${bundle_type}" == *jcef* ]]
|
||||
then
|
||||
cp -R jcef_win_x64/* ${JBR_BUNDLE}/bin
|
||||
fi
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${JBR_BUNDLE}/release
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
WORK_DIR=$(pwd)
|
||||
|
||||
#git checkout -- modules.list src
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
echo "Excluding jcef modules"
|
||||
git apply -p0 < jb/project/tools/exclude_jcef_module.patch
|
||||
;;
|
||||
"jcef")
|
||||
echo "Excluding jfx modules"
|
||||
git apply -p0 < jb/project/tools/exclude_jfx_module.patch
|
||||
;;
|
||||
esac
|
||||
|
||||
PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
bash ./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-target-bits=64 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-toolchain-version=${TOOLCHAIN_VERSION} \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
else
|
||||
bash ./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--with-target-bits=64 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-import-modules=${WORK_DIR}/modular-sdk \
|
||||
--with-toolchain-version=${TOOLCHAIN_VERSION} \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
fi
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
make LOG=info images CONF=windows-x86_64-server-release test-image || exit 1
|
||||
else
|
||||
make LOG=info images CONF=windows-x86_64-server-release || exit 1
|
||||
fi
|
||||
|
||||
JSDK=build/windows-x86_64-server-release/images/jdk
|
||||
if [[ "$bundle_type" == "*jcef*" || -z "$bundle_type" ]]; then
|
||||
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
|
||||
fi
|
||||
BASE_DIR=build/windows-x86_64-server-release/images
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
|
||||
if [[ "$bundle_type" == "*jcef*" ]]; then
|
||||
cp -R jcef_win_x64/* ${JBRSDK_BUNDLE}/bin
|
||||
fi
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
fi
|
||||
create_jbr ${bundle_type}
|
||||
|
||||
#JBR_BUNDLE=jbr_${bundle_type}_lw
|
||||
#create_jbr ${bundle_type}_lw
|
||||
57
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
57
jb/project/tools/windows/scripts/mkimages_x86.sh
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
WORK_DIR=$(pwd)
|
||||
|
||||
PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||
./configure \
|
||||
--disable-warnings-as-errors \
|
||||
--disable-debug-symbols \
|
||||
--with-target-bits=32 \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
--with-toolchain-version=2015 \
|
||||
--with-boot-jdk=${BOOT_JDK} \
|
||||
--disable-ccache \
|
||||
--enable-cds=yes || exit 1
|
||||
make clean CONF=windows-x86-normal-server-release || exit 1
|
||||
make LOG=info images CONF=windows-x86-normal-server-release test-image || exit 1
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-windows-x86-b${build_number}
|
||||
BASE_DIR=build/windows-x86-normal-server-release/images
|
||||
JSDK=${BASE_DIR}/jdk
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
|
||||
rm -rf ${BASE_DIR}/${JBRSDK_BUNDLE} && rsync -a --exclude demo --exclude sample ${JSDK}/ ${JBRSDK_BUNDLE} || exit 1
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
rm -rf ${JBR_BUNDLE}
|
||||
grep -v javafx modules.list | grep -v "jdk.internal.vm\|jdk.aot\|jcef" > modules.list.x86
|
||||
${JSDK}/bin/jlink \
|
||||
--module-path ${JSDK}/jmods --no-man-pages --compress=2 \
|
||||
--add-modules $(xargs < modules.list.x86 | sed s/" "//g) --output ${JBR_BUNDLE} || exit $?
|
||||
|
||||
echo Modifying release info ...
|
||||
grep -v \"^JAVA_VERSION\" ${JSDK}/release | grep -v \"^MODULES\" >> ${JBR_BUNDLE}/release
|
||||
79
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
79
jb/project/tools/windows/scripts/pack_x64.sh
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
|
||||
function pack_jbr {
|
||||
|
||||
case "$1" in
|
||||
"${bundle_type}_lw")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}_lw-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx" | "jcef")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef" | "")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
JBR=$JBR_BASE_NAME-windows-x64-b$build_number
|
||||
echo Creating $JBR.tar.gz ...
|
||||
if [ ! -z "$bundle_type" ]; then
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
fi
|
||||
|
||||
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR jbr || exit 1
|
||||
#rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
IMAGES_DIR=build/windows-x86_64-server-release/images
|
||||
JSDK=$IMAGES_DIR/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-windows-x64-b$build_number
|
||||
BASE_DIR=.
|
||||
|
||||
if [ -z "$bundle_type" ]; then
|
||||
JBR_BUNDLE=jbr
|
||||
else
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
fi
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
|
||||
fi
|
||||
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
pack_jbr $bundle_type
|
||||
|
||||
if [[ "$bundle_type" == "jfx_jcef" || -z "$bundle_type" ]]; then
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x64-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
|
||||
fi
|
||||
45
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
45
jb/project/tools/windows/scripts/pack_x86.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# The following parameters must be specified:
|
||||
# JBSDK_VERSION - specifies the current version of OpenJDK e.g. 11_0_6
|
||||
# JDK_BUILD_NUMBER - specifies the number of OpenJDK build or the value of --with-version-build argument to configure
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
#
|
||||
# $ ./java --version
|
||||
# openjdk 11.0.6 2020-01-14
|
||||
# OpenJDK Runtime Environment (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number})
|
||||
# OpenJDK 64-Bit Server VM (build 11.0.6+${JDK_BUILD_NUMBER}-b${build_number}, mixed mode)
|
||||
#
|
||||
|
||||
JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-$JBSDK_VERSION
|
||||
JBR_BASE_NAME=jbr-$JBSDK_VERSION
|
||||
|
||||
IMAGES_DIR=build/windows-x86-normal-server-release/images
|
||||
JSDK=$IMAGES_DIR/jdk
|
||||
JBSDK=$JBRSDK_BASE_NAME-windows-x86-b$build_number
|
||||
BASE_DIR=.
|
||||
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
/usr/bin/tar -czf $JBSDK.tar.gz $JBRSDK_BUNDLE || exit 1
|
||||
|
||||
JBR_BUNDLE=jbr
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
|
||||
JBR=$JBR_BASE_NAME-windows-x86-b$build_number
|
||||
echo Creating $JBR.tar.gz ...
|
||||
/usr/bin/tar -czf $JBR.tar.gz -C $BASE_DIR ${JBR_BUNDLE} || exit 1
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-windows-test-x86-b$build_number
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
/usr/bin/tar -czf $JBRSDK_TEST.tar.gz -C $IMAGES_DIR --exclude='test/jdk/demos' test || exit 1
|
||||
@@ -410,17 +410,43 @@ endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
|
||||
DOCS_BUNDLE_FILES := $(call FindFiles, $(DOCS_IMAGE_DIR))
|
||||
ifneq ($(filter docs-jdk-bundles, $(MAKECMDGOALS)), )
|
||||
DOCS_JDK_BUNDLE_FILES := $(call FindFiles, $(DOCS_JDK_IMAGE_DIR))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
|
||||
BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
|
||||
FILES := $(DOCS_BUNDLE_FILES), \
|
||||
BASE_DIRS := $(DOCS_IMAGE_DIR), \
|
||||
$(eval $(call SetupBundleFile, BUILD_DOCS_JDK_BUNDLE, \
|
||||
BUNDLE_NAME := $(DOCS_JDK_BUNDLE_NAME), \
|
||||
FILES := $(DOCS_JDK_BUNDLE_FILES), \
|
||||
BASE_DIRS := $(DOCS_JDK_IMAGE_DIR), \
|
||||
SUBDIR := docs, \
|
||||
))
|
||||
|
||||
DOCS_TARGETS += $(BUILD_DOCS_BUNDLE)
|
||||
DOCS_JDK_TARGETS += $(BUILD_DOCS_JDK_BUNDLE)
|
||||
endif
|
||||
|
||||
ifneq ($(filter docs-javase-bundles, $(MAKECMDGOALS)), )
|
||||
DOCS_JAVASE_BUNDLE_FILES := $(call FindFiles, $(DOCS_JAVASE_IMAGE_DIR))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_DOCS_JAVASE_BUNDLE, \
|
||||
BUNDLE_NAME := $(DOCS_JAVASE_BUNDLE_NAME), \
|
||||
FILES := $(DOCS_JAVASE_BUNDLE_FILES), \
|
||||
BASE_DIRS := $(DOCS_JAVASE_IMAGE_DIR), \
|
||||
SUBDIR := docs-javase, \
|
||||
))
|
||||
|
||||
DOCS_JAVASE_TARGETS += $(BUILD_DOCS_JAVASE_BUNDLE)
|
||||
endif
|
||||
|
||||
ifneq ($(filter docs-reference-bundles, $(MAKECMDGOALS)), )
|
||||
DOCS_REFERENCE_BUNDLE_FILES := $(call FindFiles, $(DOCS_REFERENCE_IMAGE_DIR))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_DOCS_REFERENCE_BUNDLE, \
|
||||
BUNDLE_NAME := $(DOCS_REFERENCE_BUNDLE_NAME), \
|
||||
FILES := $(DOCS_REFERENCE_BUNDLE_FILES), \
|
||||
BASE_DIRS := $(DOCS_REFERENCE_IMAGE_DIR), \
|
||||
SUBDIR := docs-reference, \
|
||||
))
|
||||
|
||||
DOCS_REFERENCE_TARGETS += $(BUILD_DOCS_REFERENCE_BUNDLE)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
@@ -469,9 +495,12 @@ $(eval $(call IncludeCustomExtension, Bundles.gmk))
|
||||
product-bundles: $(PRODUCT_TARGETS)
|
||||
legacy-bundles: $(LEGACY_TARGETS)
|
||||
test-bundles: $(TEST_TARGETS)
|
||||
docs-bundles: $(DOCS_TARGETS)
|
||||
docs-jdk-bundles: $(DOCS_JDK_TARGETS)
|
||||
docs-javase-bundles: $(DOCS_JAVASE_TARGETS)
|
||||
docs-reference-bundles: $(DOCS_REFERENCE_TARGETS)
|
||||
static-libs-bundles: $(STATIC_LIBS_TARGETS)
|
||||
jcov-bundles: $(JCOV_TARGETS)
|
||||
|
||||
.PHONY: all default product-bundles test-bundles docs-bundles \
|
||||
.PHONY: all default product-bundles test-bundles \
|
||||
docs-jdk-bundles docs-javase-bundles docs-reference-bundles \
|
||||
static-libs-bundles jcov-bundles
|
||||
|
||||
@@ -74,7 +74,7 @@ define SetupInterimModule
|
||||
EXCLUDE_FILES := $(TOPDIR)/src/$1/share/classes/module-info.java \
|
||||
Standard.java, \
|
||||
EXTRA_FILES := $(BUILDTOOLS_OUTPUTDIR)/gensrc/$1.interim/module-info.java, \
|
||||
COPY := .gif .png .xml .css .js javax.tools.JavaCompilerTool, \
|
||||
COPY := .gif .png .xml .css .js .txt javax.tools.JavaCompilerTool, \
|
||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_langtools_modules/$1.interim, \
|
||||
DISABLED_WARNINGS := module options, \
|
||||
JAVAC_FLAGS := \
|
||||
|
||||
@@ -348,7 +348,7 @@ jdk.dynalink_CLEAN += .properties
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.javadoc_COPY += .xml .css .js .png
|
||||
jdk.javadoc_COPY += .xml .css .js .png .txt
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -546,6 +546,10 @@ jdk.jfr_DISABLED_WARNINGS += exports
|
||||
jdk.jfr_COPY := .xsd .xml .dtd
|
||||
jdk.jfr_JAVAC_FLAGS := -XDstringConcat=inline
|
||||
|
||||
################################################################################
|
||||
|
||||
jdk.incubator.vector_DOCLINT += -Xdoclint:all/protected
|
||||
|
||||
################################################################################
|
||||
# If this is an imported module that has prebuilt classes, only compile
|
||||
# module-info.java.
|
||||
|
||||
@@ -33,8 +33,20 @@ include JavaCompilation.gmk
|
||||
|
||||
TOOLS_CLASSES_DIR := $(BUILDTOOLS_OUTPUTDIR)/tools_jigsaw_classes
|
||||
|
||||
# When using an external BUILDJDK, make it possible to shortcut building of
|
||||
# these tools using the BUILD_JAVAC instead of having to build the complete
|
||||
# exploded image first.
|
||||
ifeq ($(EXTERNAL_BUILDJDK), true)
|
||||
COMPILER := buildjdk
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK)
|
||||
else
|
||||
COMPILER := interim
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED)
|
||||
endif
|
||||
|
||||
$(eval $(call SetupJavaCompilation, BUILD_JIGSAW_TOOLS, \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE), \
|
||||
COMPILER := $(COMPILER), \
|
||||
SRC := $(TOPDIR)/make/jdk/src/classes, \
|
||||
INCLUDES := build/tools/deps \
|
||||
build/tools/docs \
|
||||
|
||||
@@ -56,7 +56,8 @@ $(eval $(call SetupJavaCompilation, BUILD_TOOLS_JDK, \
|
||||
DISABLED_WARNINGS := options, \
|
||||
JAVAC_FLAGS := \
|
||||
--add-exports java.desktop/sun.awt=ALL-UNNAMED \
|
||||
--add-exports java.base/sun.text=ALL-UNNAMED, \
|
||||
--add-exports java.base/sun.text=ALL-UNNAMED \
|
||||
--add-exports java.base/sun.security.util=ALL-UNNAMED, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_TOOLS_JDK)
|
||||
|
||||
@@ -458,7 +458,7 @@ $(eval $(call SetupApiDocsGeneration, JAVASE_API, \
|
||||
MODULES := $(JAVASE_MODULES), \
|
||||
SHORT_NAME := $(JAVASE_SHORT_NAME), \
|
||||
LONG_NAME := $(JAVASE_LONG_NAME), \
|
||||
TARGET_DIR := $(IMAGES_OUTPUTDIR)/javase-docs/api, \
|
||||
TARGET_DIR := $(DOCS_JAVASE_IMAGE_DIR)/api, \
|
||||
))
|
||||
|
||||
# Targets generated are returned in JAVASE_API_JAVADOC_TARGETS and
|
||||
@@ -476,7 +476,7 @@ $(eval $(call SetupApiDocsGeneration, REFERENCE_API, \
|
||||
MODULES := $(JAVASE_MODULES), \
|
||||
SHORT_NAME := $(JAVASE_SHORT_NAME), \
|
||||
LONG_NAME := $(JAVASE_LONG_NAME), \
|
||||
TARGET_DIR := $(IMAGES_OUTPUTDIR)/reference-docs/api, \
|
||||
TARGET_DIR := $(DOCS_REFERENCE_IMAGE_DIR)/api, \
|
||||
JAVADOC_CMD := $(JAVADOC), \
|
||||
OPTIONS := $(REFERENCE_OPTIONS), \
|
||||
TAGS := $(REFERENCE_TAGS), \
|
||||
|
||||
@@ -90,7 +90,6 @@ $(eval $(call SetupTarget, buildtools-jdk, \
|
||||
|
||||
$(eval $(call SetupTarget, buildtools-modules, \
|
||||
MAKEFILE := CompileModuleTools, \
|
||||
DEPS := exploded-image-base, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, buildtools-hotspot, \
|
||||
@@ -112,7 +111,6 @@ $(eval $(call SetupTarget, generate-exported-symbols, \
|
||||
$(eval $(call DeclareRecipesForPhase, GENSRC, \
|
||||
TARGET_SUFFIX := gensrc-src, \
|
||||
FILE_PREFIX := Gensrc, \
|
||||
MAKE_SUBDIR := gensrc, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
))
|
||||
|
||||
@@ -150,7 +148,6 @@ ALL_TARGETS += $(GENSRC_TARGETS)
|
||||
$(eval $(call DeclareRecipesForPhase, GENDATA, \
|
||||
TARGET_SUFFIX := gendata, \
|
||||
FILE_PREFIX := Gendata, \
|
||||
MAKE_SUBDIR := gendata, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
))
|
||||
|
||||
@@ -161,7 +158,6 @@ ALL_TARGETS += $(GENDATA_TARGETS)
|
||||
$(eval $(call DeclareRecipesForPhase, COPY, \
|
||||
TARGET_SUFFIX := copy, \
|
||||
FILE_PREFIX := Copy, \
|
||||
MAKE_SUBDIR := copy, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
))
|
||||
|
||||
@@ -203,7 +199,6 @@ ALL_TARGETS += $(JAVA_TARGETS)
|
||||
$(eval $(call DeclareRecipesForPhase, LIBS, \
|
||||
TARGET_SUFFIX := libs, \
|
||||
FILE_PREFIX := Lib, \
|
||||
MAKE_SUBDIR := lib, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
))
|
||||
|
||||
@@ -216,7 +211,6 @@ ALL_TARGETS += $(LIBS_TARGETS)
|
||||
$(eval $(call DeclareRecipesForPhase, STATIC_LIBS, \
|
||||
TARGET_SUFFIX := static-libs, \
|
||||
FILE_PREFIX := Lib, \
|
||||
MAKE_SUBDIR := lib, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
EXTRA_ARGS := STATIC_LIBS=true, \
|
||||
))
|
||||
@@ -228,7 +222,6 @@ ALL_TARGETS += $(STATIC_LIBS_TARGETS)
|
||||
$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
|
||||
TARGET_SUFFIX := launchers, \
|
||||
FILE_PREFIX := Launcher, \
|
||||
MAKE_SUBDIR := launcher, \
|
||||
CHECK_MODULES := $(ALL_MODULES), \
|
||||
))
|
||||
|
||||
@@ -345,7 +338,7 @@ $(eval $(call SetupTarget, test-image-demos-jdk, \
|
||||
|
||||
$(eval $(call SetupTarget, generate-summary, \
|
||||
MAKEFILE := GenerateModuleSummary, \
|
||||
DEPS := jmods buildtools-modules, \
|
||||
DEPS := jmods buildtools-modules runnable-buildjdk, \
|
||||
))
|
||||
|
||||
################################################################################
|
||||
@@ -475,7 +468,7 @@ $(eval $(call SetupTarget, docs-jdk-api-javadoc, \
|
||||
$(eval $(call SetupTarget, docs-jdk-api-modulegraph, \
|
||||
MAKEFILE := Docs, \
|
||||
TARGET := docs-jdk-api-modulegraph, \
|
||||
DEPS := exploded-image buildtools-modules, \
|
||||
DEPS := buildtools-modules runnable-buildjdk, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, docs-javase-api-javadoc, \
|
||||
@@ -486,7 +479,7 @@ $(eval $(call SetupTarget, docs-javase-api-javadoc, \
|
||||
$(eval $(call SetupTarget, docs-javase-api-modulegraph, \
|
||||
MAKEFILE := Docs, \
|
||||
TARGET := docs-javase-api-modulegraph, \
|
||||
DEPS := exploded-image buildtools-modules, \
|
||||
DEPS := buildtools-modules runnable-buildjdk, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, docs-reference-api-javadoc, \
|
||||
@@ -497,7 +490,7 @@ $(eval $(call SetupTarget, docs-reference-api-javadoc, \
|
||||
$(eval $(call SetupTarget, docs-reference-api-modulegraph, \
|
||||
MAKEFILE := Docs, \
|
||||
TARGET := docs-reference-api-modulegraph, \
|
||||
DEPS := exploded-image buildtools-modules, \
|
||||
DEPS := buildtools-modules runnable-buildjdk, \
|
||||
))
|
||||
|
||||
# The gensrc steps for jdk.jdi create html spec files.
|
||||
@@ -755,12 +748,24 @@ $(eval $(call SetupTarget, test-bundles, \
|
||||
DEPS := test-image, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, docs-bundles, \
|
||||
$(eval $(call SetupTarget, docs-jdk-bundles, \
|
||||
MAKEFILE := Bundles, \
|
||||
TARGET := docs-bundles, \
|
||||
TARGET := docs-jdk-bundles, \
|
||||
DEPS := docs-image, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, docs-javase-bundles, \
|
||||
MAKEFILE := Bundles, \
|
||||
TARGET := docs-javase-bundles, \
|
||||
DEPS := docs-javase-image, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, docs-reference-bundles, \
|
||||
MAKEFILE := Bundles, \
|
||||
TARGET := docs-reference-bundles, \
|
||||
DEPS := docs-reference-image, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupTarget, static-libs-bundles, \
|
||||
MAKEFILE := Bundles, \
|
||||
TARGET := static-libs-bundles, \
|
||||
@@ -951,10 +956,13 @@ else
|
||||
$(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): java.base-libs java.base-copy \
|
||||
java.base-gendata jdk.jlink-launchers java
|
||||
endif
|
||||
else
|
||||
# The normal non cross compilation case uses needs to wait for the full
|
||||
else ifeq ($(EXTERNAL_BUILDJDK), false)
|
||||
# The normal non cross compilation usecase needs to wait for the full
|
||||
# exploded-image to avoid a race with the optimize target.
|
||||
$(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): exploded-image
|
||||
# The buildtools-modules are used for the exploded-image-optimize target,
|
||||
# but can be built either using the exploded-image or an external BUILDJDK.
|
||||
buildtools-modules: exploded-image-base
|
||||
endif
|
||||
|
||||
# All modules include the main license files from java.base.
|
||||
@@ -1075,6 +1083,18 @@ ifneq ($(COMPILE_TYPE), cross)
|
||||
exploded-image: exploded-image-optimize
|
||||
endif
|
||||
|
||||
# The runnable-buildjdk target guarantees that the buildjdk is done
|
||||
# building and ready to be used. The exact set of dependencies it needs
|
||||
# depends on what kind of buildjdk is used for the current configuration.
|
||||
runnable-buildjdk:
|
||||
ifeq ($(CREATE_BUILDJDK), true)
|
||||
ifneq ($(CREATING_BUILDJDK), true)
|
||||
runnable-buildjdk: create-buildjdk
|
||||
endif
|
||||
else ifeq ($(EXTERNAL_BUILDJDK), false)
|
||||
runnable-buildjdk: exploded-image
|
||||
endif
|
||||
|
||||
create-buildjdk: create-buildjdk-interim-image
|
||||
|
||||
docs-jdk-api: docs-jdk-api-javadoc
|
||||
@@ -1128,8 +1148,16 @@ ifeq ($(call isTargetOs, macosx), true)
|
||||
legacy-images: mac-legacy-jre-bundle
|
||||
endif
|
||||
|
||||
# This target builds the documentation image
|
||||
docs-image: docs-jdk
|
||||
# These targets build the various documentation images
|
||||
docs-jdk-image: docs-jdk
|
||||
docs-javase-image: docs-javase
|
||||
docs-reference-image: docs-reference
|
||||
# The docs-jdk-image is what most users expect to be built
|
||||
docs-image: docs-jdk-image
|
||||
all-docs-images: docs-jdk-image docs-javase-image docs-reference-image
|
||||
|
||||
docs-bundles: docs-jdk-bundles
|
||||
all-docs-bundles: docs-jdk-bundles docs-javase-bundles docs-reference-bundles
|
||||
|
||||
# This target builds the test image
|
||||
test-image: prepare-test-image test-image-jdk-jtreg-native \
|
||||
@@ -1162,7 +1190,7 @@ endif
|
||||
################################################################################
|
||||
|
||||
# all-images builds all our deliverables as images.
|
||||
all-images: product-images test-image docs-image
|
||||
all-images: product-images test-image all-docs-images
|
||||
|
||||
# all-bundles packages all our deliverables as tar.gz bundles.
|
||||
all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
|
||||
@@ -1170,10 +1198,11 @@ all-bundles: product-bundles test-bundles docs-bundles static-libs-bundles
|
||||
ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
|
||||
copy java libs static-libs launchers jmods \
|
||||
jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
|
||||
exploded-image-base exploded-image \
|
||||
exploded-image-base exploded-image runnable-buildjdk \
|
||||
create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
|
||||
docs-javase docs-reference docs-javadoc mac-bundles product-images legacy-images \
|
||||
docs-image test-image all-images \
|
||||
docs-image docs-javase-image docs-reference-image all-docs-images \
|
||||
docs-bundles all-docs-bundles test-image all-images \
|
||||
all-bundles
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -185,7 +185,6 @@ endef
|
||||
# Param 1: Name of list to add targets to
|
||||
# Named params:
|
||||
# TARGET_SUFFIX : Suffix of target to create for recipe
|
||||
# MAKE_SUBDIR : Subdir for this build phase
|
||||
# FILE_PREFIX : File prefix for this build phase
|
||||
# CHECK_MODULES : List of modules to try
|
||||
# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
|
||||
|
||||
@@ -39,7 +39,7 @@ include MakeBase.gmk
|
||||
TARGETS :=
|
||||
|
||||
# Include the file being wrapped.
|
||||
include modules/$(MODULE)/$(MAKEFILE_PREFIX).gmk
|
||||
include $(MAKEFILE_PREFIX).gmk
|
||||
|
||||
# Setup copy rules from the modules directories to the jdk image directory.
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
|
||||
@@ -53,6 +53,7 @@ define create-info-file
|
||||
$(call info-file-item, "JAVA_VERSION_DATE", "$(VERSION_DATE)")
|
||||
$(call info-file-item, "OS_NAME", "$(RELEASE_FILE_OS_NAME)")
|
||||
$(call info-file-item, "OS_ARCH", "$(RELEASE_FILE_OS_ARCH)")
|
||||
$(call info-file-item, "LIBC", "$(RELEASE_FILE_LIBC)")
|
||||
endef
|
||||
|
||||
# Param 1 - The file containing the MODULES list
|
||||
|
||||
@@ -609,6 +609,7 @@ define SetupRunGtestTestBody
|
||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, ( \
|
||||
$$(CD) $$($1_TEST_SUPPORT_DIR) && \
|
||||
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
||||
-jdk $(JDK_UNDER_TEST) $$($1_GTEST_FILTER) \
|
||||
--gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -68,6 +68,7 @@ TOOL_TZDB = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.tzdb.TzdbZoneRulesCompiler
|
||||
|
||||
TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
--add-exports java.base/sun.security.util=ALL-UNNAMED \
|
||||
build.tools.blacklistedcertsconverter.BlacklistedCertsConverter
|
||||
|
||||
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
|
||||
@@ -117,6 +117,16 @@ AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Evaluates platform specific overrides for build devkit variables.
|
||||
# $1: Name of variable
|
||||
AC_DEFUN([BASIC_EVAL_BUILD_DEVKIT_VARIABLE],
|
||||
[
|
||||
if test "x[$]$1" = x; then
|
||||
eval $1="\${$1_${OPENJDK_BUILD_CPU}}"
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
|
||||
[
|
||||
|
||||
11
make/autoconf/build-aux/config.guess
vendored
11
make/autoconf/build-aux/config.guess
vendored
@@ -30,6 +30,17 @@
|
||||
DIR=`dirname $0`
|
||||
OUT=`. $DIR/autoconf-config.guess`
|
||||
|
||||
# Detect C library.
|
||||
# Use '-gnu' suffix on systems that use glibc.
|
||||
# Use '-musl' suffix on systems that use the musl libc.
|
||||
echo $OUT | grep -- -linux- > /dev/null 2> /dev/null
|
||||
if test $? = 0; then
|
||||
libc_vendor=`ldd --version 2>&1 | sed -n '1s/.*\(musl\).*/\1/p'`
|
||||
if [ x"${libc_vendor}" = x"musl" ]; then
|
||||
OUT=`echo $OUT | sed 's/-gnu/-musl/'`
|
||||
fi
|
||||
fi
|
||||
|
||||
# Test and fix cygwin on x86_64
|
||||
echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
|
||||
if test $? != 0; then
|
||||
|
||||
5
make/autoconf/build-aux/config.sub
vendored
5
make/autoconf/build-aux/config.sub
vendored
@@ -29,6 +29,11 @@
|
||||
|
||||
DIR=`dirname $0`
|
||||
|
||||
if echo $* | grep linux-musl >/dev/null ; then
|
||||
echo $*
|
||||
exit
|
||||
fi
|
||||
|
||||
# Allow wsl
|
||||
if echo $* | grep x86_64-pc-wsl >/dev/null ; then
|
||||
echo $*
|
||||
|
||||
@@ -54,11 +54,13 @@ IMAGES_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUT
|
||||
|
||||
OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
|
||||
OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@
|
||||
OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@
|
||||
OPENJDK_TARGET_CPU := @OPENJDK_BUILD_CPU@
|
||||
OPENJDK_TARGET_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@
|
||||
OPENJDK_TARGET_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@
|
||||
OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@
|
||||
OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
|
||||
OPENJDK_TARGET_LIBC := @OPENJDK_BUILD_LIBC@
|
||||
OPENJDK_TARGET_OS_INCLUDE_SUBDIR := @OPENJDK_BUILD_OS_INCLUDE_SUBDIR@
|
||||
|
||||
HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@
|
||||
@@ -66,6 +68,7 @@ HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@
|
||||
HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@
|
||||
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@
|
||||
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@
|
||||
HOTSPOT_TARGET_LIBC := @HOTSPOT_BUILD_LIBC@
|
||||
|
||||
CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@
|
||||
CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@
|
||||
|
||||
@@ -242,7 +242,6 @@ HOTSPOT_SETUP_MISC
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
JDKOPT_DETECT_INTREE_EC
|
||||
JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER
|
||||
JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
|
||||
JDKOPT_EXCLUDE_TRANSLATIONS
|
||||
|
||||
@@ -134,6 +134,10 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
|
||||
WARNINGS_ENABLE_ALL="-W3"
|
||||
DISABLED_WARNINGS="4800"
|
||||
if test "x$TOOLCHAIN_VERSION" = x2017; then
|
||||
# VS2017 incorrectly triggers this warning for constexpr
|
||||
DISABLED_WARNINGS+=" 4307"
|
||||
fi
|
||||
;;
|
||||
|
||||
gcc)
|
||||
@@ -227,8 +231,14 @@ AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
|
||||
# -D_FORTIFY_SOURCE=2 hardening option needs optimization (at least -O1) enabled
|
||||
# set for lower O-levels -U_FORTIFY_SOURCE to overwrite previous settings
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux -a "x$DEBUG_LEVEL" = "xfastdebug"; then
|
||||
ENABLE_FORTIFY_CFLAGS="-D_FORTIFY_SOURCE=2"
|
||||
DISABLE_FORTIFY_CFLAGS="-U_FORTIFY_SOURCE"
|
||||
# ASan doesn't work well with _FORTIFY_SOURCE
|
||||
# See https://github.com/google/sanitizers/wiki/AddressSanitizer#faq
|
||||
if test "x$ASAN_ENABLED" = xyes; then
|
||||
ENABLE_FORTIFY_CFLAGS="${DISABLE_FORTIFY_CFLAGS}"
|
||||
else
|
||||
ENABLE_FORTIFY_CFLAGS="-D_FORTIFY_SOURCE=2"
|
||||
fi
|
||||
C_O_FLAG_HIGHEST_JVM="${C_O_FLAG_HIGHEST_JVM} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_HIGHEST="${C_O_FLAG_HIGHEST} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_HI="${C_O_FLAG_HI} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
@@ -554,6 +564,11 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
fi
|
||||
fi
|
||||
|
||||
OS_CFLAGS="$OS_CFLAGS -DLIBC=$OPENJDK_TARGET_LIBC"
|
||||
if test "x$OPENJDK_TARGET_LIBC" = xmusl; then
|
||||
OS_CFLAGS="$OS_CFLAGS -DMUSL_LIBC"
|
||||
fi
|
||||
|
||||
# Where does this really belong??
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
PICFLAG="-fPIC"
|
||||
@@ -662,7 +677,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
|
||||
# toolchain dependend, per-cpu
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
if test "x$FLAGS_CPU" = xx86_64; then
|
||||
if test "x$FLAGS_CPU" = xaarch64; then
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_ARM64_ -Darm64"
|
||||
elif test "x$FLAGS_CPU" = xx86_64; then
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
|
||||
else
|
||||
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"
|
||||
|
||||
@@ -165,14 +165,13 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
fi
|
||||
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
if test "x${OPENJDK_$1_CPU_BITS}" = "x32"; then
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
|
||||
elif test "x${OPENJDK_$1_CPU_BITS}" = "x64"; then
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
|
||||
fi
|
||||
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
|
||||
$1_CPU_LDFLAGS="-safeseh"
|
||||
# NOTE: Old build added -machine. Probably not needed.
|
||||
$1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
|
||||
else
|
||||
$1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
|
||||
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -228,23 +228,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Enable or disable the elliptic curve crypto implementation
|
||||
#
|
||||
AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
|
||||
[
|
||||
AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
|
||||
|
||||
if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then
|
||||
ENABLE_INTREE_EC=true
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
ENABLE_INTREE_EC=false
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
AC_SUBST(ENABLE_INTREE_EC)
|
||||
])
|
||||
|
||||
AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
[
|
||||
@@ -440,7 +423,10 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_ADDRESS_SANITIZER],
|
||||
fi
|
||||
],
|
||||
IF_ENABLED: [
|
||||
ASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
|
||||
# ASan is simply incompatible with gcc -Wstringop-truncation. See
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85650
|
||||
# It's harmless to be suppressed in clang as well.
|
||||
ASAN_CFLAGS="-fsanitize=address -Wno-stringop-truncation -fno-omit-frame-pointer"
|
||||
ASAN_LDFLAGS="-fsanitize=address"
|
||||
JVM_CFLAGS="$JVM_CFLAGS $ASAN_CFLAGS"
|
||||
JVM_LDFLAGS="$JVM_LDFLAGS $ASAN_LDFLAGS"
|
||||
|
||||
@@ -237,8 +237,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_AOT],
|
||||
JVM_FEATURES_CHECK_AVAILABILITY(aot, [
|
||||
AC_MSG_CHECKING([if platform is supported by AOT])
|
||||
# AOT is only available where JVMCI is available since it requires JVMCI.
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
|
||||
test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||
@@ -303,8 +304,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_GRAAL],
|
||||
JVM_FEATURES_CHECK_AVAILABILITY(graal, [
|
||||
AC_MSG_CHECKING([if platform is supported by Graal])
|
||||
# Graal is only available where JVMCI is available since it requires JVMCI.
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
|
||||
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||
@@ -336,8 +338,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_JVMCI],
|
||||
[
|
||||
JVM_FEATURES_CHECK_AVAILABILITY(jvmci, [
|
||||
AC_MSG_CHECKING([if platform is supported by JVMCI])
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
|
||||
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
|
||||
@@ -395,8 +398,14 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_ZGC],
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
AVAILABLE=false
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" || \
|
||||
test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
AVAILABLE=false
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
AVAILABLE=false
|
||||
|
||||
@@ -220,6 +220,24 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
|
||||
esac
|
||||
])
|
||||
|
||||
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
|
||||
# Converts autoconf style OS name to OpenJDK style, into
|
||||
# VAR_LIBC.
|
||||
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_LIBC],
|
||||
[
|
||||
case "$1" in
|
||||
*linux*-musl)
|
||||
VAR_LIBC=musl
|
||||
;;
|
||||
*linux*-gnu)
|
||||
VAR_LIBC=gnu
|
||||
;;
|
||||
*)
|
||||
VAR_LIBC=default
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Expects $host_os $host_cpu $build_os and $build_cpu
|
||||
# and $with_target_bits to have been setup!
|
||||
#
|
||||
@@ -237,9 +255,10 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
|
||||
AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
|
||||
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
|
||||
PLATFORM_EXTRACT_VARS_FROM_LIBC($build_os)
|
||||
# ..and setup our own variables. (Do this explicitly to facilitate searching)
|
||||
OPENJDK_BUILD_OS="$VAR_OS"
|
||||
if test "x$VAR_OS_TYPE" != x; then
|
||||
@@ -256,6 +275,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
|
||||
OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
|
||||
OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
|
||||
OPENJDK_BUILD_LIBC="$VAR_LIBC"
|
||||
AC_SUBST(OPENJDK_BUILD_OS)
|
||||
AC_SUBST(OPENJDK_BUILD_OS_TYPE)
|
||||
AC_SUBST(OPENJDK_BUILD_OS_ENV)
|
||||
@@ -263,13 +283,20 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
|
||||
AC_SUBST(OPENJDK_BUILD_CPU_BITS)
|
||||
AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
|
||||
AC_SUBST(OPENJDK_BUILD_LIBC)
|
||||
|
||||
AC_MSG_CHECKING([openjdk-build os-cpu])
|
||||
AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
|
||||
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
if test "x$OPENJDK_BUILD_OS" = "xlinux"; then
|
||||
AC_MSG_CHECKING([openjdk-build C library])
|
||||
AC_MSG_RESULT([$OPENJDK_BUILD_LIBC])
|
||||
fi
|
||||
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
|
||||
PLATFORM_EXTRACT_VARS_FROM_LIBC($host_os)
|
||||
# ... and setup our own variables. (Do this explicitly to facilitate searching)
|
||||
OPENJDK_TARGET_OS="$VAR_OS"
|
||||
if test "x$VAR_OS_TYPE" != x; then
|
||||
@@ -287,6 +314,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
|
||||
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
|
||||
OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
OPENJDK_TARGET_LIBC="$VAR_LIBC"
|
||||
|
||||
AC_SUBST(OPENJDK_TARGET_OS)
|
||||
AC_SUBST(OPENJDK_TARGET_OS_TYPE)
|
||||
@@ -296,9 +324,15 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
|
||||
AC_SUBST(OPENJDK_TARGET_CPU_BITS)
|
||||
AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
|
||||
AC_SUBST(OPENJDK_TARGET_LIBC)
|
||||
|
||||
AC_MSG_CHECKING([openjdk-target os-cpu])
|
||||
AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
|
||||
AC_MSG_CHECKING([openjdk-target C library])
|
||||
AC_MSG_RESULT([$OPENJDK_TARGET_LIBC])
|
||||
fi
|
||||
])
|
||||
|
||||
# Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
|
||||
@@ -420,7 +454,13 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
|
||||
else
|
||||
OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
|
||||
fi
|
||||
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
|
||||
|
||||
OPENJDK_$1_LIBC_BUNDLE=""
|
||||
if test "x$OPENJDK_$1_LIBC" = "xmusl"; then
|
||||
OPENJDK_$1_LIBC_BUNDLE="-$OPENJDK_$1_LIBC"
|
||||
fi
|
||||
|
||||
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}${OPENJDK_$1_LIBC_BUNDLE}"
|
||||
AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
|
||||
|
||||
if test "x$COMPILE_TYPE" = "xcross"; then
|
||||
@@ -493,6 +533,9 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
|
||||
fi
|
||||
AC_SUBST(HOTSPOT_$1_CPU_DEFINE)
|
||||
|
||||
HOTSPOT_$1_LIBC=$OPENJDK_$1_LIBC
|
||||
AC_SUBST(HOTSPOT_$1_LIBC)
|
||||
|
||||
# For historical reasons, the OS include directories have odd names.
|
||||
OPENJDK_$1_OS_INCLUDE_SUBDIR="$OPENJDK_TARGET_OS"
|
||||
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||
@@ -518,9 +561,11 @@ AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
|
||||
RELEASE_FILE_OS_NAME="AIX"
|
||||
fi
|
||||
RELEASE_FILE_OS_ARCH=${OPENJDK_TARGET_CPU}
|
||||
RELEASE_FILE_LIBC=${OPENJDK_TARGET_LIBC}
|
||||
|
||||
AC_SUBST(RELEASE_FILE_OS_NAME)
|
||||
AC_SUBST(RELEASE_FILE_OS_ARCH)
|
||||
AC_SUBST(RELEASE_FILE_LIBC)
|
||||
])
|
||||
|
||||
AC_DEFUN([PLATFORM_SET_MODULE_TARGET_OS_VALUES],
|
||||
|
||||
@@ -80,6 +80,8 @@ OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
|
||||
OPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
|
||||
OPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
|
||||
|
||||
OPENJDK_TARGET_LIBC:=@OPENJDK_TARGET_LIBC@
|
||||
|
||||
COMPILE_TYPE:=@COMPILE_TYPE@
|
||||
|
||||
# Legacy support
|
||||
@@ -95,6 +97,8 @@ HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
|
||||
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
|
||||
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
|
||||
|
||||
HOTSPOT_TARGET_LIBC := @HOTSPOT_TARGET_LIBC@
|
||||
|
||||
OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
|
||||
JDK_ARCH_ABI_PROP_NAME := @JDK_ARCH_ABI_PROP_NAME@
|
||||
|
||||
@@ -109,6 +113,8 @@ OPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
|
||||
OPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
|
||||
OPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
|
||||
|
||||
OPENJDK_BUILD_LIBC:=@OPENJDK_BUILD_LIBC@
|
||||
|
||||
OPENJDK_BUILD_OS_INCLUDE_SUBDIR:=@OPENJDK_TARGET_OS_INCLUDE_SUBDIR@
|
||||
|
||||
# Target platform value in ModuleTarget class file attribute.
|
||||
@@ -117,6 +123,7 @@ OPENJDK_MODULE_TARGET_PLATFORM:=@OPENJDK_MODULE_TARGET_PLATFORM@
|
||||
# OS_* properties in release file
|
||||
RELEASE_FILE_OS_NAME:=@RELEASE_FILE_OS_NAME@
|
||||
RELEASE_FILE_OS_ARCH:=@RELEASE_FILE_OS_ARCH@
|
||||
RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
|
||||
|
||||
SOURCE_DATE := @SOURCE_DATE@
|
||||
ENABLE_REPRODUCIBLE_BUILD := @ENABLE_REPRODUCIBLE_BUILD@
|
||||
@@ -637,6 +644,7 @@ JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
|
||||
|
||||
BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
|
||||
BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
|
||||
BUILD_JAVAC=@FIXPATH@ $(BUILD_JDK)/bin/javac
|
||||
BUILD_JAR=@FIXPATH@ $(BUILD_JDK)/bin/jar
|
||||
|
||||
# Interim langtools modules and arguments
|
||||
@@ -751,7 +759,6 @@ TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@
|
||||
|
||||
# Build setup
|
||||
ENABLE_AOT:=@ENABLE_AOT@
|
||||
ENABLE_INTREE_EC:=@ENABLE_INTREE_EC@
|
||||
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
|
||||
USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
|
||||
USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
|
||||
@@ -869,10 +876,14 @@ INTERIM_JMODS_DIR := $(SUPPORT_OUTPUTDIR)/interim-jmods
|
||||
INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
|
||||
|
||||
# Docs image
|
||||
DOCS_IMAGE_SUBDIR := docs
|
||||
DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
|
||||
DOCS_JDK_IMAGE_SUBDIR := docs
|
||||
DOCS_JDK_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JDK_IMAGE_SUBDIR)
|
||||
DOCS_JAVASE_IMAGE_SUBDIR := docs-javase
|
||||
DOCS_JAVASE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_JAVASE_IMAGE_SUBDIR)
|
||||
DOCS_REFERENCE_IMAGE_SUBDIR := docs-reference
|
||||
DOCS_REFERENCE_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_REFERENCE_IMAGE_SUBDIR)
|
||||
# Output docs directly into image
|
||||
DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
|
||||
DOCS_OUTPUTDIR := $(DOCS_JDK_IMAGE_DIR)
|
||||
|
||||
# Static libs image
|
||||
STATIC_LIBS_IMAGE_SUBDIR := static-libs
|
||||
@@ -915,7 +926,9 @@ JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION)
|
||||
JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
|
||||
TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz
|
||||
TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
|
||||
DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
DOCS_JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
DOCS_JAVASE_BUNDLE_NAME := javase-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
DOCS_REFERENCE_BUNDLE_NAME := jdk-reference-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
STATIC_LIBS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-static-libs$(DEBUG_PART).tar.gz
|
||||
JCOV_BUNDLE_NAME := jdk-jcov-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION)
|
||||
|
||||
@@ -924,7 +937,9 @@ JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
|
||||
JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME)
|
||||
TEST_DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_DEMOS_BUNDLE_NAME)
|
||||
TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
|
||||
DOCS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME)
|
||||
DOCS_JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JDK_BUNDLE_NAME)
|
||||
DOCS_JAVASE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_JAVASE_BUNDLE_NAME)
|
||||
DOCS_REFERENCE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_REFERENCE_BUNDLE_NAME)
|
||||
JCOV_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JCOV_BUNDLE_NAME)
|
||||
|
||||
# This macro is called to allow inclusion of closed source counterparts.
|
||||
|
||||
@@ -872,14 +872,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
. $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
|
||||
# This potentially sets the following:
|
||||
# A descriptive name of the devkit
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
|
||||
# Corresponds to --with-extra-path
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
|
||||
# Corresponds to --with-toolchain-path
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
|
||||
# Corresponds to --with-sysroot
|
||||
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
|
||||
# Skip the Window specific parts
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_INCLUDE])
|
||||
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_LIB])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for build platform devkit])
|
||||
@@ -889,13 +893,20 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
|
||||
fi
|
||||
|
||||
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
|
||||
|
||||
# Fallback default of just /bin if DEVKIT_PATH is not defined
|
||||
# Fallback default of just /bin if DEVKIT_PATH is not defined
|
||||
if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
|
||||
BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
|
||||
fi
|
||||
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
|
||||
|
||||
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
|
||||
BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
|
||||
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -921,9 +932,37 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
|
||||
# Assume the C compiler is the assembler
|
||||
BUILD_AS="$BUILD_CC -c"
|
||||
# Just like for the target compiler, use the compiler as linker
|
||||
BUILD_LD="$BUILD_CC"
|
||||
BUILD_LDCXX="$BUILD_CXX"
|
||||
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# In the Microsoft toolchain we have a separate LD command "link".
|
||||
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
|
||||
# a cygwin program for something completely different.
|
||||
AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
|
||||
UTIL_FIXUP_EXECUTABLE(BUILD_LD)
|
||||
# Verify that we indeed succeeded with this trick.
|
||||
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
|
||||
|
||||
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
|
||||
# which, in combination with WSLENV, will make the WSL layer complain
|
||||
old_path="$PATH"
|
||||
PATH=
|
||||
|
||||
"$BUILD_LD" --version > /dev/null
|
||||
|
||||
if test $? -eq 0 ; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
|
||||
PATH="$old_path"
|
||||
|
||||
BUILD_LDCXX="$BUILD_LD"
|
||||
else
|
||||
# Just like for the target compiler, use the compiler as linker
|
||||
BUILD_LD="$BUILD_CC"
|
||||
BUILD_LDCXX="$BUILD_CXX"
|
||||
fi
|
||||
|
||||
PATH="$OLDPATH"
|
||||
|
||||
@@ -974,6 +1013,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
|
||||
if test "x$COMPILER_CPU_TEST" != "xx64"; then
|
||||
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
if test "x$COMPILER_CPU_TEST" != "xARM64"; then
|
||||
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -79,11 +79,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
|
||||
if test -d "$VS_BASE"; then
|
||||
AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
VCVARSFILES="vc/bin/vcvars32.bat vc/auxiliary/build/vcvars32.bat"
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
VCVARSFILES="vc/bin/amd64/vcvars64.bat vc/bin/x86_amd64/vcvarsx86_amd64.bat \
|
||||
VC/Auxiliary/Build/vcvarsx86_amd64.bat VC/Auxiliary/Build/vcvars64.bat"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# for host x86-64, target aarch64
|
||||
VCVARSFILES="vc/auxiliary/build/vcvarsamd64_arm64.bat \
|
||||
vc/auxiliary/build/vcvarsx86_arm64.bat"
|
||||
fi
|
||||
|
||||
for VCVARSFILE in $VCVARSFILES; do
|
||||
@@ -123,10 +127,12 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
|
||||
elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
|
||||
AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
|
||||
VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
VS_ENV_ARGS="/x86"
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
VS_ENV_ARGS="/x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
VS_ENV_ARGS="/arm64"
|
||||
fi
|
||||
# PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
|
||||
# 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
|
||||
@@ -520,41 +526,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
|
||||
AC_SUBST(VS_INCLUDE)
|
||||
AC_SUBST(VS_LIB)
|
||||
|
||||
# Convert VS_INCLUDE into SYSROOT_CFLAGS
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
for i in $VS_INCLUDE; do
|
||||
ipath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$ipath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$ipath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([ipath])
|
||||
SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
# Convert VS_LIB into SYSROOT_LDFLAGS
|
||||
for i in $VS_LIB; do
|
||||
libpath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$libpath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$libpath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([libpath])
|
||||
SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS
|
||||
|
||||
AC_SUBST(VS_PATH_WINDOWS)
|
||||
fi
|
||||
@@ -593,10 +565,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
CORRECT_MSVCR_ARCH=386
|
||||
else
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
CORRECT_MSVCR_ARCH=x86-64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
# The cygwin 'file' command only returns "PE32+ executable (DLL) (console), for MS Windows",
|
||||
# without specifying which architecture it is for specifically. This has been fixed upstream.
|
||||
# https://github.com/file/file/commit/b849b1af098ddd530094bf779b58431395db2e10#diff-ff2eced09e6860de75057dd731d092aeR142
|
||||
CORRECT_MSVCR_ARCH="PE32+ executable"
|
||||
fi
|
||||
fi
|
||||
if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
|
||||
@@ -616,26 +593,26 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
DLL_NAME="$1"
|
||||
MSVC_DLL=
|
||||
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
vs_target_cpu=x86
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
|
||||
vs_target_cpu=x64
|
||||
elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
vs_target_cpu=arm64
|
||||
fi
|
||||
|
||||
if test "x$MSVC_DLL" = x; then
|
||||
if test "x$VCINSTALLDIR" != x; then
|
||||
CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
|
||||
UTIL_FIXUP_PATH(CYGWIN_VC_INSTALL_DIR)
|
||||
if test "$VS_VERSION" -lt 2017; then
|
||||
# Probe: Using well-known location from Visual Studio 12.0 and older
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
else
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
else
|
||||
CYGWIN_VC_TOOLS_REDIST_DIR="$VCToolsRedistDir"
|
||||
UTIL_FIXUP_PATH(CYGWIN_VC_TOOLS_REDIST_DIR)
|
||||
# Probe: Using well-known location from VS 2017 and VS 2019
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
else
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_TOOLS_REDIST_DIR/$vs_target_cpu/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
fi
|
||||
# In case any of the above finds more than one file, loop over them.
|
||||
for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do
|
||||
@@ -667,13 +644,8 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
if test "x$VS100COMNTOOLS" != x; then
|
||||
CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
|
||||
UTIL_REWRITE_AS_UNIX_PATH(CYGWIN_VS_TOOLS_DIR)
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /x64/ | $HEAD --lines 1`
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /x86/ | $HEAD --lines 1`
|
||||
fi
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
|
||||
| $GREP -i /$vs_target_cpu/ | $HEAD --lines 1`
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
[search of VS100COMNTOOLS])
|
||||
fi
|
||||
@@ -683,17 +655,17 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
# Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
|
||||
# (This was the original behaviour; kept since it might turn something up)
|
||||
if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = xx86; then
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP x64 | $HEAD --lines 1`
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $HEAD --lines 1`
|
||||
| $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $GREP -v arm64 | $HEAD --lines 1`
|
||||
if test "x$POSSIBLE_MSVC_DLL" = x; then
|
||||
# We're grasping at straws now...
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $HEAD --lines 1`
|
||||
fi
|
||||
else
|
||||
POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
|
||||
| $GREP $vs_target_cpu | $HEAD --lines 1`
|
||||
fi
|
||||
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
|
||||
@@ -757,9 +729,9 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(vcruntime-1-dll, [AS_HELP_STRING([--with-vcruntime-1-dll],
|
||||
[path to microsoft C++ runtime dll (vcruntime*_1.dll) (Windows only) @<:@probed@:>@])])
|
||||
[path to microsoft C++ runtime dll (vcruntime*_1.dll) (Windows 64-bits only) @<:@probed@:>@])])
|
||||
|
||||
if test "x$VCRUNTIME_1_NAME" != "x"; then
|
||||
if test "x$VCRUNTIME_1_NAME" != "x" -a "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
if test "x$with_vcruntime_1_dll" != x; then
|
||||
# If given explicitly by user, do not probe. If not present, fail directly.
|
||||
TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($VCRUNTIME_1_NAME, [$with_vcruntime_1_dll],
|
||||
@@ -801,9 +773,12 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
else
|
||||
CYGWIN_WINDOWSSDKDIR="${WINDOWSSDKDIR}"
|
||||
UTIL_FIXUP_PATH([CYGWIN_WINDOWSSDKDIR])
|
||||
dll_subdir=$OPENJDK_TARGET_CPU
|
||||
if test "x$dll_subdir" = "xx86_64"; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
dll_subdir="arm64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
dll_subdir="x64"
|
||||
elif test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
dll_subdir="x86"
|
||||
fi
|
||||
UCRT_DLL_DIR="$CYGWIN_WINDOWSSDKDIR/Redist/ucrt/DLLs/$dll_subdir"
|
||||
if test -z "$(ls -d "$UCRT_DLL_DIR/"*.dll 2> /dev/null)"; then
|
||||
@@ -826,3 +801,49 @@ AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
|
||||
fi
|
||||
AC_SUBST(UCRT_DLL_DIR)
|
||||
])
|
||||
|
||||
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
|
||||
# that configure can use them while detecting compilers.
|
||||
# TOOLCHAIN_TYPE is available here.
|
||||
# Param 1 - Optional prefix to all variables. (e.g BUILD_)
|
||||
AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS],
|
||||
[
|
||||
OLDIFS="$IFS"
|
||||
IFS=";"
|
||||
# Convert $1VS_INCLUDE into $1SYSROOT_CFLAGS
|
||||
for i in [$]$1VS_INCLUDE; do
|
||||
ipath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$ipath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$ipath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([ipath])
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -I$ipath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
# Convert $1VS_LIB into $1SYSROOT_LDFLAGS
|
||||
for i in [$]$1VS_LIB; do
|
||||
libpath=$i
|
||||
# Only process non-empty elements
|
||||
if test "x$libpath" != x; then
|
||||
IFS="$OLDIFS"
|
||||
# Check that directory exists before calling fixup_path
|
||||
testpath=$libpath
|
||||
UTIL_REWRITE_AS_UNIX_PATH([testpath])
|
||||
if test -d "$testpath"; then
|
||||
UTIL_FIXUP_PATH([libpath])
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -libpath:$libpath"
|
||||
fi
|
||||
IFS=";"
|
||||
fi
|
||||
done
|
||||
IFS="$OLDIFS"
|
||||
|
||||
AC_SUBST($1SYSROOT_CFLAGS)
|
||||
AC_SUBST($1SYSROOT_LDFLAGS)
|
||||
])
|
||||
|
||||
@@ -36,7 +36,7 @@ DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2021-03-16
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=60 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="14 15 16"
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="15 16"
|
||||
DEFAULT_JDK_SOURCE_TARGET_VERSION=16
|
||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||
|
||||
|
||||
@@ -202,6 +202,13 @@ define SetupJavaCompilationBody
|
||||
# If unspecified, default to the new jdk we're building
|
||||
$1_TARGET_RELEASE := $$(TARGET_RELEASE_BOOTJDK)
|
||||
endif
|
||||
else ifeq ($$($1_COMPILER), buildjdk)
|
||||
$1_JAVAC_CMD := $$(BUILD_JAVAC)
|
||||
|
||||
ifeq ($$($1_TARGET_RELEASE), )
|
||||
# If unspecified, default to the new jdk we're building
|
||||
$1_TARGET_RELEASE := $$(TARGET_RELEASE_NEWJDK)
|
||||
endif
|
||||
else ifeq ($$($1_COMPILER), interim)
|
||||
# Use java server if it is enabled, and the user does not want a specialized
|
||||
# class path.
|
||||
|
||||
@@ -59,6 +59,7 @@ BOOT_MODULES += \
|
||||
java.security.sasl \
|
||||
java.xml \
|
||||
jdk.incubator.foreign \
|
||||
jdk.incubator.vector \
|
||||
jdk.internal.vm.ci \
|
||||
jdk.jfr \
|
||||
jdk.management \
|
||||
@@ -145,6 +146,7 @@ DOCS_MODULES += \
|
||||
jdk.hotspot.agent \
|
||||
jdk.httpserver \
|
||||
jdk.incubator.jpackage \
|
||||
jdk.incubator.vector \
|
||||
jdk.jartool \
|
||||
jdk.javadoc \
|
||||
jdk.jcmd \
|
||||
|
||||
@@ -381,7 +381,7 @@ var getJibProfilesCommon = function (input, data) {
|
||||
};
|
||||
};
|
||||
|
||||
common.boot_jdk_version = "14";
|
||||
common.boot_jdk_version = "15";
|
||||
common.boot_jdk_build_number = "36";
|
||||
common.boot_jdk_home = input.get("boot_jdk", "install_path") + "/jdk-"
|
||||
+ common.boot_jdk_version
|
||||
@@ -406,10 +406,9 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
target_cpu: "x64",
|
||||
dependencies: ["devkit", "gtest", "graphviz", "pandoc", "graalunit_lib"],
|
||||
configure_args: concat(common.configure_args_64bit,
|
||||
"--enable-full-docs", "--with-zlib=system",
|
||||
"--with-zlib=system", "--disable-dtrace",
|
||||
(isWsl(input) ? [ "--host=x86_64-unknown-linux-gnu",
|
||||
"--build=x86_64-unknown-linux-gnu" ] : [])),
|
||||
default_make_targets: ["docs-bundles"],
|
||||
},
|
||||
|
||||
"linux-x86": {
|
||||
@@ -680,20 +679,46 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
common.debug_profile_artifacts(artifactData[name]));
|
||||
});
|
||||
|
||||
profilesArtifacts = {
|
||||
"linux-x64": {
|
||||
buildJdkDep = input.build_os + "-" + input.build_cpu + ".jdk";
|
||||
docsProfiles = {
|
||||
"docs": {
|
||||
target_os: input.build_os,
|
||||
target_cpu: input.build_cpu,
|
||||
dependencies: [
|
||||
"boot_jdk", "devkit", "graphviz", "pandoc", buildJdkDep,
|
||||
],
|
||||
configure_args: [
|
||||
"--enable-full-docs",
|
||||
"--with-build-jdk=" + input.get(buildJdkDep, "home_path")
|
||||
+ (input.build_os == "macosx" ? "/Contents/Home" : "")
|
||||
],
|
||||
default_make_targets: ["all-docs-bundles"],
|
||||
artifacts: {
|
||||
doc_api_spec: {
|
||||
local: "bundles/\\(jdk.*doc-api-spec.tar.gz\\)",
|
||||
local: "bundles/\\(jdk-" + data.version + ".*doc-api-spec.tar.gz\\)",
|
||||
remote: [
|
||||
"bundles/common/jdk-" + data.version + "_doc-api-spec.tar.gz",
|
||||
"bundles/common/\\1"
|
||||
],
|
||||
},
|
||||
javase_doc_api_spec: {
|
||||
local: "bundles/\\(javase-" + data.version + ".*doc-api-spec.tar.gz\\)",
|
||||
remote: [
|
||||
"bundles/common/javase-" + data.version + "_doc-api-spec.tar.gz",
|
||||
"bundles/common/\\1"
|
||||
],
|
||||
},
|
||||
reference_doc_api_spec: {
|
||||
local: "bundles/\\(jdk-reference-" + data.version + ".*doc-api-spec.tar.gz\\)",
|
||||
remote: [
|
||||
"bundles/common/jdk-reference-" + data.version + "_doc-api-spec.tar.gz",
|
||||
"bundles/common/\\1"
|
||||
],
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
profiles = concatObjects(profiles, profilesArtifacts);
|
||||
profiles = concatObjects(profiles, docsProfiles);
|
||||
|
||||
// Generate open only profiles for all the main and debug profiles.
|
||||
// Rewrite artifact remote paths by adding "openjdk/GPL".
|
||||
@@ -959,10 +984,10 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
var getJibProfilesDependencies = function (input, common) {
|
||||
|
||||
var devkit_platform_revisions = {
|
||||
linux_x64: "gcc9.2.0-OL6.4+1.0",
|
||||
macosx_x64: "Xcode11.3.1-MacOSX10.15+1.0",
|
||||
windows_x64: "VS2019-16.5.3+1.0",
|
||||
linux_aarch64: "gcc9.2.0-OL7.6+1.0",
|
||||
linux_x64: "gcc10.2.0-OL6.4+1.0",
|
||||
macosx_x64: "Xcode11.3.1-MacOSX10.15+1.1",
|
||||
windows_x64: "VS2019-16.7.2+1.0",
|
||||
linux_aarch64: "gcc10.2.0-OL7.6+1.0",
|
||||
linux_arm: "gcc8.2.0-Fedora27+1.0",
|
||||
linux_ppc64le: "gcc8.2.0-Fedora27+1.0",
|
||||
linux_s390x: "gcc8.2.0-Fedora27+1.0"
|
||||
@@ -994,17 +1019,8 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
? input.get("gnumake", "install_path") + "/cygwin/bin"
|
||||
: input.get("gnumake", "install_path") + "/bin");
|
||||
|
||||
if (input.build_cpu == 'aarch64') {
|
||||
boot_jdk = {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
module: "jdk-linux_aarch64",
|
||||
revision: "14+1.0",
|
||||
configure_args: "--with-boot-jdk=" + common.boot_jdk_home,
|
||||
environment_path: common.boot_jdk_home + "/bin"
|
||||
}
|
||||
} else {
|
||||
boot_jdk = {
|
||||
var dependencies = {
|
||||
boot_jdk: {
|
||||
server: "jpg",
|
||||
product: "jdk",
|
||||
version: common.boot_jdk_version,
|
||||
@@ -1013,11 +1029,7 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
+ boot_jdk_platform + "_bin" + boot_jdk_ext,
|
||||
configure_args: "--with-boot-jdk=" + common.boot_jdk_home,
|
||||
environment_path: common.boot_jdk_home + "/bin"
|
||||
}
|
||||
}
|
||||
|
||||
var dependencies = {
|
||||
boot_jdk: boot_jdk,
|
||||
},
|
||||
|
||||
devkit: {
|
||||
organization: common.organization,
|
||||
|
||||
43
make/conf/test-dependencies
Normal file
43
make/conf/test-dependencies
Normal file
@@ -0,0 +1,43 @@
|
||||
#
|
||||
# Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# 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.
|
||||
#
|
||||
|
||||
# Versions and download locations for dependencies used by pre-submit testing.
|
||||
|
||||
BOOT_JDK_VERSION=15
|
||||
JTREG_VERSION=5.1
|
||||
JTREG_BUILD=b01
|
||||
GTEST_VERSION=1.8.1
|
||||
|
||||
LINUX_X64_BOOT_JDK_FILENAME=openjdk-15_linux-x64_bin.tar.gz
|
||||
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_linux-x64_bin.tar.gz
|
||||
LINUX_X64_BOOT_JDK_SHA256=bb67cadee687d7b486583d03c9850342afea4593be4f436044d785fba9508fb7
|
||||
|
||||
WINDOWS_X64_BOOT_JDK_FILENAME=openjdk-15_windows-x64_bin.zip
|
||||
WINDOWS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_windows-x64_bin.zip
|
||||
WINDOWS_X64_BOOT_JDK_SHA256=764e39a71252a9791118a31ae56a4247c049463bda5eb72497122ec50b1d07f8
|
||||
|
||||
MACOS_X64_BOOT_JDK_FILENAME=openjdk-115_osx-x64_bin.tar.gz
|
||||
MACOS_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_osx-x64_bin.tar.gz
|
||||
MACOS_X64_BOOT_JDK_SHA256=ab842c8c0953b816be308c098c1a021177a4776bef24da85b6bafbbd657c7e1a
|
||||
@@ -1,8 +1,7 @@
|
||||
#! java BlacklistedCertsConverter SHA-256
|
||||
|
||||
# The line above must be the first line of the blacklisted.certs.pem
|
||||
# file inside src/share/lib/security/. It will be ignored if added in
|
||||
# src/closed/share/lib/security/blacklisted.certs.pem.
|
||||
# The line above must be the first line of this file. Do not
|
||||
# remove it.
|
||||
|
||||
// Subject: CN=Digisign Server ID (Enrich),
|
||||
// OU=457608-K,
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
package java.lang;
|
||||
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
import jdk.internal.vm.annotation.IntrinsicCandidate;
|
||||
|
||||
/** The CharacterData class encapsulates the large tables found in
|
||||
Java.lang.Character. */
|
||||
@@ -80,18 +80,18 @@ class CharacterDataLatin1 extends CharacterData {
|
||||
return props;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
@IntrinsicCandidate
|
||||
boolean isDigit(int ch) {
|
||||
return '0' <= ch && ch <= '9';
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
@IntrinsicCandidate
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
@IntrinsicCandidate
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
@@ -232,7 +232,7 @@ class CharacterDataLatin1 extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
@IntrinsicCandidate
|
||||
boolean isWhitespace(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2020a
|
||||
tzdata2020c
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
# Corrections are welcome.
|
||||
|
||||
# Algeria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -110,10 +110,9 @@ Rule Algeria 1978 only - Mar 24 1:00 1:00 S
|
||||
Rule Algeria 1978 only - Sep 22 3:00 0 -
|
||||
Rule Algeria 1980 only - Apr 25 0:00 1:00 S
|
||||
Rule Algeria 1980 only - Oct 31 2:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
0:00 Algeria WE%sT 1940 Feb 25 2:00
|
||||
1:00 Algeria CE%sT 1946 Oct 7
|
||||
@@ -199,7 +198,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena
|
||||
# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
|
||||
# did not apply to Cairo, Alexandria, or Port Said.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Egypt 1940 only - Jul 15 0:00 1:00 S
|
||||
Rule Egypt 1940 only - Oct 1 0:00 0 -
|
||||
Rule Egypt 1941 only - Apr 15 0:00 1:00 S
|
||||
@@ -434,7 +433,7 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
# now Ghana observed different DST regimes in different years. For
|
||||
# lack of better info, use Shanks except treat the minus sign as a
|
||||
# typo, and assume DST started in 1920 not 1936.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ghana 1920 1942 - Sep 1 0:00 0:20 -
|
||||
Rule Ghana 1920 1942 - Dec 31 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -524,7 +523,7 @@ Zone Africa/Monrovia -0:43:08 - LMT 1882
|
||||
# From Paul Eggert (2013-10-25):
|
||||
# For now, assume they're reverting to the pre-2012 rules of permanent UT +02.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Libya 1951 only - Oct 14 2:00 1:00 S
|
||||
Rule Libya 1952 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1953 only - Oct 9 2:00 1:00 S
|
||||
@@ -647,7 +646,7 @@ Zone Africa/Tripoli 0:52:44 - LMT 1920
|
||||
# "The trial ended on March 29, 2009, when the clocks moved back by one hour
|
||||
# at 2am (or 02:00) local time..."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
|
||||
Rule Mauritius 1983 only - Mar 21 0:00 0 -
|
||||
Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
|
||||
@@ -898,17 +897,30 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
|
||||
# http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
|
||||
#
|
||||
# From Paul Eggert (2020-04-14):
|
||||
# From Milamber (2020-05-31)
|
||||
# In Morocco (where I live), the end of Ramadan (Arabic month) is followed by
|
||||
# the Eid al-Fitr, and concretely it's 1 or 2 day offs for the people (with
|
||||
# traditional visiting of family, big lunches/dinners, etc.). So for this
|
||||
# year the astronomical calculations don't include the following 2 days off in
|
||||
# the calc. These 2 days fall in a Sunday/Monday, so it's not acceptable by
|
||||
# people to have a time shift during these 2 days off. Perhaps you can modify
|
||||
# the (predicted) rules for next years: if the end of Ramadan is a (probable)
|
||||
# Friday or Saturday (and so the 2 days off are on a weekend), the next time
|
||||
# shift will be the next weekend.
|
||||
#
|
||||
# From Paul Eggert (2020-05-31):
|
||||
# For now, guess that in the future Morocco will fall back at 03:00
|
||||
# the last Sunday before Ramadan, and spring forward at 02:00 the
|
||||
# first Sunday after the day after Ramadan. To implement this,
|
||||
# transition dates for 2021 through 2087 were determined by running
|
||||
# the following program under GNU Emacs 26.3.
|
||||
# (let ((islamic-year 1442))
|
||||
# first Sunday after two days after Ramadan. To implement this,
|
||||
# transition dates and times for 2019 through 2087 were determined by
|
||||
# running the following program under GNU Emacs 26.3. (This algorithm
|
||||
# also produces the correct transition dates for 2016 through 2018,
|
||||
# though the times differ due to Morocco's time zone change in 2018.)
|
||||
# (let ((islamic-year 1440))
|
||||
# (require 'cal-islam)
|
||||
# (while (< islamic-year 1511)
|
||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||
# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (b (+ 2 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (sunday 0))
|
||||
# (while (/= sunday (mod (setq a (1- a)) 7)))
|
||||
# (while (/= sunday (mod b 7))
|
||||
@@ -923,7 +935,7 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
|
||||
# (setq islamic-year (+ 1 islamic-year))))
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/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 -
|
||||
@@ -974,7 +986,7 @@ Rule Morocco 2021 only - May 16 2:00 0 -
|
||||
Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
|
||||
Rule Morocco 2022 only - May 8 2:00 0 -
|
||||
Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
|
||||
Rule Morocco 2023 only - Apr 23 2:00 0 -
|
||||
Rule Morocco 2023 only - Apr 30 2:00 0 -
|
||||
Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
|
||||
Rule Morocco 2024 only - Apr 14 2:00 0 -
|
||||
Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
|
||||
@@ -990,7 +1002,7 @@ Rule Morocco 2029 only - Feb 18 2:00 0 -
|
||||
Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
|
||||
Rule Morocco 2030 only - Feb 10 2:00 0 -
|
||||
Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
|
||||
Rule Morocco 2031 only - Jan 26 2:00 0 -
|
||||
Rule Morocco 2031 only - Feb 2 2:00 0 -
|
||||
Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
|
||||
Rule Morocco 2032 only - Jan 18 2:00 0 -
|
||||
Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
|
||||
@@ -1006,7 +1018,7 @@ Rule Morocco 2036 only - Nov 23 2:00 0 -
|
||||
Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
|
||||
Rule Morocco 2037 only - Nov 15 2:00 0 -
|
||||
Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
|
||||
Rule Morocco 2038 only - Oct 31 2:00 0 -
|
||||
Rule Morocco 2038 only - Nov 7 2:00 0 -
|
||||
Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
|
||||
Rule Morocco 2039 only - Oct 23 2:00 0 -
|
||||
Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
|
||||
@@ -1022,7 +1034,7 @@ Rule Morocco 2044 only - Aug 28 2:00 0 -
|
||||
Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
|
||||
Rule Morocco 2045 only - Aug 20 2:00 0 -
|
||||
Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
|
||||
Rule Morocco 2046 only - Aug 5 2:00 0 -
|
||||
Rule Morocco 2046 only - Aug 12 2:00 0 -
|
||||
Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
|
||||
Rule Morocco 2047 only - Jul 28 2:00 0 -
|
||||
Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
|
||||
@@ -1038,7 +1050,7 @@ Rule Morocco 2052 only - Jun 2 2:00 0 -
|
||||
Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
|
||||
Rule Morocco 2053 only - May 25 2:00 0 -
|
||||
Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
|
||||
Rule Morocco 2054 only - May 10 2:00 0 -
|
||||
Rule Morocco 2054 only - May 17 2:00 0 -
|
||||
Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
|
||||
Rule Morocco 2055 only - May 2 2:00 0 -
|
||||
Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
|
||||
@@ -1054,7 +1066,7 @@ Rule Morocco 2060 only - Mar 7 2:00 0 -
|
||||
Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
|
||||
Rule Morocco 2061 only - Feb 27 2:00 0 -
|
||||
Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
|
||||
Rule Morocco 2062 only - Feb 12 2:00 0 -
|
||||
Rule Morocco 2062 only - Feb 19 2:00 0 -
|
||||
Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
|
||||
Rule Morocco 2063 only - Feb 4 2:00 0 -
|
||||
Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
|
||||
@@ -1070,7 +1082,7 @@ Rule Morocco 2067 only - Dec 11 2:00 0 -
|
||||
Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
|
||||
Rule Morocco 2068 only - Dec 2 2:00 0 -
|
||||
Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
|
||||
Rule Morocco 2069 only - Nov 17 2:00 0 -
|
||||
Rule Morocco 2069 only - Nov 24 2:00 0 -
|
||||
Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
|
||||
Rule Morocco 2070 only - Nov 9 2:00 0 -
|
||||
Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
|
||||
@@ -1086,7 +1098,7 @@ Rule Morocco 2075 only - Sep 15 2:00 0 -
|
||||
Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
|
||||
Rule Morocco 2076 only - Sep 6 2:00 0 -
|
||||
Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
|
||||
Rule Morocco 2077 only - Aug 22 2:00 0 -
|
||||
Rule Morocco 2077 only - Aug 29 2:00 0 -
|
||||
Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
|
||||
Rule Morocco 2078 only - Aug 14 2:00 0 -
|
||||
Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
|
||||
@@ -1096,13 +1108,13 @@ Rule Morocco 2080 only - Jul 21 2:00 0 -
|
||||
Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
|
||||
Rule Morocco 2081 only - Jul 13 2:00 0 -
|
||||
Rule Morocco 2082 only - May 24 3:00 -1:00 -
|
||||
Rule Morocco 2082 only - Jun 28 2:00 0 -
|
||||
Rule Morocco 2082 only - Jul 5 2:00 0 -
|
||||
Rule Morocco 2083 only - May 16 3:00 -1:00 -
|
||||
Rule Morocco 2083 only - Jun 20 2:00 0 -
|
||||
Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
|
||||
Rule Morocco 2084 only - Jun 11 2:00 0 -
|
||||
Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
|
||||
Rule Morocco 2085 only - May 27 2:00 0 -
|
||||
Rule Morocco 2085 only - Jun 3 2:00 0 -
|
||||
Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
|
||||
Rule Morocco 2086 only - May 19 2:00 0 -
|
||||
Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
|
||||
@@ -1203,7 +1215,7 @@ Link Africa/Maputo Africa/Lusaka # Zambia
|
||||
# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
|
||||
# with Namibia's neighbors.
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Vanguard section, for zic and other parsers that support negative DST.
|
||||
Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
|
||||
Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
|
||||
@@ -1326,7 +1338,7 @@ Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# South Africa
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
|
||||
Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1359,7 +1371,7 @@ Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
# Abdalla of NTC, archived at:
|
||||
# https://mm.icann.org/pipermail/tz/2017-October/025333.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Sudan 1970 only - May 1 0:00 1:00 S
|
||||
Rule Sudan 1970 1985 - Oct 15 0:00 0 -
|
||||
Rule Sudan 1971 only - Apr 30 0:00 1:00 S
|
||||
@@ -1447,7 +1459,7 @@ Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
|
||||
Rule Tunisia 1939 only - Nov 18 23:00s 0 -
|
||||
Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
|
||||
@@ -1474,9 +1486,7 @@ Rule Tunisia 2005 only - Sep 30 1:00s 0 -
|
||||
Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
|
||||
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
|
||||
@@ -93,15 +93,30 @@
|
||||
# Australian Antarctica Division informed us that Casey changed time
|
||||
# zone to UTC+11 in "the morning of 22nd October 2016".
|
||||
|
||||
# From Steffen Thorsen (2020-10-02, as corrected):
|
||||
# Based on information we have received from the Australian Antarctic
|
||||
# Division, Casey station and Macquarie Island station will move to Tasmanian
|
||||
# daylight savings time on Sunday 4 October. This will take effect from 0001
|
||||
# hrs on Sunday 4 October 2020 and will mean Casey and Macquarie Island will
|
||||
# be on the same time zone as Hobart. Some past dates too for this 3 hour
|
||||
# time change back and forth between UTC+8 and UTC+11 for Casey:
|
||||
# - 2018 Oct 7 4:00 - 2019 Mar 17 3:00 - 2019 Oct 4 3:00 - 2020 Mar 8 3:00
|
||||
# and now - 2020 Oct 4 0:01
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
11:00 - +11 2010 Mar 5 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
11:00 - +11 2012 Feb 21 17:00u
|
||||
8:00 - +08 2016 Oct 22
|
||||
8:00 - +08 2016 Oct 22
|
||||
11:00 - +11 2018 Mar 11 4:00
|
||||
8:00 - +08
|
||||
8:00 - +08 2018 Oct 7 4:00
|
||||
11:00 - +11 2019 Mar 17 3:00
|
||||
8:00 - +08 2019 Oct 4 3:00
|
||||
11:00 - +11 2020 Mar 8 3:00
|
||||
8:00 - +08 2020 Oct 4 0:01
|
||||
11:00 - +11
|
||||
Zone Antarctica/Davis 0 - -00 1957 Jan 13
|
||||
7:00 - +07 1964 Nov
|
||||
0 - -00 1969 Feb
|
||||
@@ -247,7 +262,7 @@ Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
# suggested by Bengt-Inge Larsson comment them out for now, and approximate
|
||||
# with only UTC and CEST. Uncomment them when 2014b is more prevalent.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
#Rule Troll 2005 max - Mar 1 1:00u 1:00 +01
|
||||
Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
|
||||
#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
###############################################################################
|
||||
|
||||
# These rules are stolen from the 'europe' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
|
||||
Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
|
||||
Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
|
||||
@@ -137,7 +137,7 @@ Zone Asia/Kabul 4:36:48 - LMT 1890
|
||||
# or
|
||||
# (brief)
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
|
||||
Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -163,7 +163,7 @@ Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
|
||||
# http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
|
||||
# http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
|
||||
Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -250,7 +250,7 @@ Zone Asia/Baku 3:19:24 - LMT 1924 May 2
|
||||
# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
|
||||
Rule Dhaka 2009 only - Dec 31 24:00 0 -
|
||||
|
||||
@@ -326,7 +326,7 @@ Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
|
||||
# generally esteemed a success, it was announced early in 1920 that it would
|
||||
# not be repeated."
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Shang 1919 only - Apr 12 24:00 1:00 D
|
||||
Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
|
||||
@@ -422,7 +422,7 @@ Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
# the Yangtze river delta area during that period of time although the scope
|
||||
# of such use will need to be investigated to determine.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - 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
|
||||
@@ -485,7 +485,7 @@ Rule Shang 1948 1949 - Sep 30 24:00 0 S #plan
|
||||
# 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 NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
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
|
||||
@@ -869,7 +869,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
|
||||
# or dates for the 1942 and 1945 transitions.
|
||||
# The Japanese occupation of Hong Kong began 1941-12-25.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule HK 1946 only - Apr 21 0:00 1:00 S
|
||||
Rule HK 1946 only - Dec 1 3:30s 0 -
|
||||
Rule HK 1947 only - Apr 13 3:30s 1:00 S
|
||||
@@ -996,7 +996,7 @@ Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42
|
||||
# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
|
||||
# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Taiwan 1946 only - May 15 0:00 1:00 D
|
||||
Rule Taiwan 1946 only - Oct 1 0:00 0 S
|
||||
Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
|
||||
@@ -1122,7 +1122,7 @@ Zone Asia/Taipei 8:06:00 - LMT 1896 Jan 1
|
||||
# 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 NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
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
|
||||
@@ -1180,7 +1180,7 @@ Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
|
||||
# Cyprus to remain united in time. Cyprus Mail 2017-10-17.
|
||||
# https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
|
||||
Rule Cyprus 1975 only - Oct 12 0:00 0 -
|
||||
Rule Cyprus 1976 only - May 15 0:00 1:00 S
|
||||
@@ -1557,7 +1557,7 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
||||
# be changed back to its previous state on the 24 hours of the
|
||||
# thirtieth day of Shahrivar.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
|
||||
Rule Iran 1978 only - Oct 20 24:00 0 -
|
||||
Rule Iran 1979 only - Sep 18 24:00 0 -
|
||||
@@ -1699,7 +1699,7 @@ Zone Asia/Tehran 3:25:44 - LMT 1916
|
||||
# We have published a short article in English about the change:
|
||||
# https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iraq 1982 only - May 1 0:00 1:00 -
|
||||
Rule Iraq 1982 1984 - Oct 1 0:00 0 -
|
||||
Rule Iraq 1983 only - Mar 31 0:00 1:00 -
|
||||
@@ -1722,6 +1722,10 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
|
||||
# Israel
|
||||
|
||||
# For more info about the motivation for DST in Israel, see:
|
||||
# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
|
||||
# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564
|
||||
|
||||
# From Ephraim Silverberg (2001-01-11):
|
||||
#
|
||||
# I coined "IST/IDT" circa 1988. Until then there were three
|
||||
@@ -1743,7 +1747,7 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
# family is from India).
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1940 only - Jun 1 0:00 1:00 D
|
||||
Rule Zion 1942 1944 - Nov 1 0:00 0 S
|
||||
Rule Zion 1943 only - Apr 1 2:00 1:00 D
|
||||
@@ -1835,7 +1839,7 @@ Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
|
||||
# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1989 only - Apr 30 0:00 1:00 D
|
||||
Rule Zion 1989 only - Sep 3 0:00 0 S
|
||||
Rule Zion 1990 only - Mar 25 0:00 1:00 D
|
||||
@@ -1851,7 +1855,7 @@ Rule Zion 1993 only - Sep 5 0:00 0 S
|
||||
# Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
|
||||
# calling the office directly at 972-2-6701447 or 972-2-6701448.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1994 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1994 only - Aug 28 0:00 0 S
|
||||
Rule Zion 1995 only - Mar 31 0:00 1:00 D
|
||||
@@ -1871,7 +1875,7 @@ Rule Zion 1995 only - Sep 3 0:00 0 S
|
||||
#
|
||||
# where YYYY is the relevant year.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1996 only - Mar 15 0:00 1:00 D
|
||||
Rule Zion 1996 only - Sep 16 0:00 0 S
|
||||
Rule Zion 1997 only - Mar 21 0:00 1:00 D
|
||||
@@ -1894,7 +1898,7 @@ Rule Zion 1999 only - Sep 3 2:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2000 only - Apr 14 2:00 1:00 D
|
||||
Rule Zion 2000 only - Oct 6 1:00 0 S
|
||||
Rule Zion 2001 only - Apr 9 1:00 1:00 D
|
||||
@@ -1916,7 +1920,7 @@ Rule Zion 2004 only - Sep 22 1:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
|
||||
Rule Zion 2005 only - Oct 9 2:00 0 S
|
||||
Rule Zion 2006 only - Oct 1 2:00 0 S
|
||||
@@ -1936,7 +1940,7 @@ Rule Zion 2012 only - Sep 23 2:00 0 S
|
||||
# As of 2013, DST starts at 02:00 on the Friday before the last Sunday
|
||||
# in March. DST ends at 02:00 on the last Sunday of October.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
|
||||
Rule Zion 2013 max - Oct lastSun 2:00 0 S
|
||||
|
||||
@@ -2036,7 +2040,7 @@ Zone Asia/Jerusalem 2:20:54 - LMT 1880
|
||||
# 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 NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
|
||||
Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
|
||||
Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
|
||||
@@ -2113,7 +2117,7 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
|
||||
# From Paul Eggert (2013-12-11):
|
||||
# As Steffen suggested, consider the past 21-month experiment to be DST.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
|
||||
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
|
||||
Rule Jordan 1974 1977 - May 1 0:00 1:00 S
|
||||
@@ -2439,7 +2443,7 @@ Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
|
||||
# Our government cancels daylight saving time 6th of August 2005.
|
||||
# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
|
||||
Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
|
||||
Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
|
||||
@@ -2495,7 +2499,7 @@ Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
|
||||
# follow and continued to use GMT+9:00 for interoperability.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule ROK 1948 only - Jun 1 0:00 1:00 D
|
||||
Rule ROK 1948 only - Sep 12 24:00 0 S
|
||||
Rule ROK 1949 only - Apr 3 0:00 1:00 D
|
||||
@@ -2583,7 +2587,7 @@ Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1
|
||||
|
||||
|
||||
# Lebanon
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
|
||||
Rule Lebanon 1920 only - Oct 25 0:00 0 -
|
||||
Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
|
||||
@@ -2613,7 +2617,7 @@ Zone Asia/Beirut 2:22:00 - LMT 1880
|
||||
2:00 Lebanon EE%sT
|
||||
|
||||
# Malaysia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
|
||||
Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
|
||||
#
|
||||
@@ -2758,7 +2762,7 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
||||
# September daylight saving time ends. Source:
|
||||
# http://zasag.mn/news/view/8969
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
|
||||
Rule Mongol 1983 only - Oct 1 0:00 0 -
|
||||
# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
|
||||
@@ -2946,7 +2950,7 @@ Zone Asia/Kathmandu 5:41:16 - LMT 1920
|
||||
# "People laud PM's announcement to end DST"
|
||||
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
|
||||
Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
|
||||
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
|
||||
@@ -3248,7 +3252,7 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
# From Tim Parenti (2016-10-19):
|
||||
# Predict fall transitions on October's last Saturday at 01:00 from now on.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
|
||||
Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
|
||||
Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
|
||||
@@ -3348,7 +3352,7 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
||||
# 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 NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
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
|
||||
@@ -3496,7 +3500,7 @@ Zone Asia/Colombo 5:19:24 - LMT 1880
|
||||
5:30 - +0530
|
||||
|
||||
# Syria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
|
||||
Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
|
||||
Rule Syria 1962 only - Apr 29 2:00 1:00 S
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
# Please see the notes below for the controversy about "EST" versus "AEST" etc.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Aus 1917 only - Jan 1 0:01 1:00 D
|
||||
Rule Aus 1917 only - Mar 25 2:00 0 S
|
||||
Rule Aus 1942 only - Jan 1 2:00 1:00 D
|
||||
@@ -55,7 +55,7 @@ Zone Australia/Darwin 8:43:20 - LMT 1895 Feb
|
||||
9:30 Aus AC%sT
|
||||
# Western Australia
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
|
||||
Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
|
||||
@@ -93,7 +93,7 @@ Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
|
||||
# applies to all of the Whitsundays.
|
||||
# http://www.australia.gov.au/about-australia/australian-story/austn-islands
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AQ 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -109,7 +109,7 @@ Zone Australia/Lindeman 9:55:56 - LMT 1895
|
||||
10:00 Holiday AE%sT
|
||||
|
||||
# South Australia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AS 1986 only - Oct 19 2:00s 1:00 D
|
||||
Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -137,7 +137,7 @@ Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
|
||||
# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
|
||||
# says King Island didn't observe DST from WWII until late 1971.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule AT 1968 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -170,7 +170,7 @@ Zone Australia/Currie 9:35:28 - LMT 1895 Sep
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Victoria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AV 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -191,7 +191,7 @@ Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb
|
||||
10:00 AV AE%sT
|
||||
|
||||
# New South Wales
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AN 1972 only - Feb 27 2:00s 0 S
|
||||
Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -220,7 +220,7 @@ Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb
|
||||
9:30 AS AC%sT
|
||||
|
||||
# Lord Howe Island
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
|
||||
Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
|
||||
Rule LH 1985 only - Oct lastSun 2:00 0:30 -
|
||||
@@ -275,8 +275,9 @@ Zone Antarctica/Macquarie 0 - -00 1899 Nov
|
||||
10:00 Aus AE%sT 1919 Apr 1 0:00s
|
||||
0 - -00 1948 Mar 25
|
||||
10:00 Aus AE%sT 1967
|
||||
10:00 AT AE%sT 2010 Apr 4 3:00
|
||||
11:00 - +11
|
||||
10:00 AT AE%sT 2010
|
||||
10:00 1:00 AEDT 2011
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Christmas
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -403,7 +404,20 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# From Michael Deckers (2019-08-06):
|
||||
# https://www.laws.gov.fj/LawsAsMade/downloadfile/848
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Raymond Kumar (2020-10-08):
|
||||
# [DST in Fiji] is from December 20th 2020, till 17th January 2021.
|
||||
# From Alan Mintz (2020-10-08):
|
||||
# https://www.laws.gov.fj/LawsAsMade/GetFile/1071
|
||||
# From Tim Parenti (2020-10-08):
|
||||
# https://www.fijivillage.com/news/Daylight-saving-from-Dec-20th-this-year-to-Jan-17th-2021-8rf4x5/
|
||||
# "Minister for Employment, Parveen Bala says they had never thought of
|
||||
# stopping daylight saving. He says it was just to decide on when it should
|
||||
# start and end. Bala says it is a short period..."
|
||||
# Since the end date is still in line with our ongoing predictions, assume for
|
||||
# now that the later-than-usual start date is a one-time departure from the
|
||||
# recent second Sunday in November pattern.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
|
||||
Rule Fiji 2009 only - Nov 29 2:00 1:00 -
|
||||
@@ -414,7 +428,9 @@ Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 2015 max - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2019 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
||||
Rule Fiji 2021 max - Nov Sun>=8 2:00 1:00 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji +12/+13
|
||||
@@ -432,7 +448,7 @@ Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
|
||||
|
||||
# Guam
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
|
||||
Rule Guam 1959 only - Jun 27 2:00 1:00 D
|
||||
@@ -543,7 +559,7 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
||||
12:00 - +12
|
||||
|
||||
# New Caledonia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
|
||||
Rule NC 1978 1979 - Feb 27 0:00 0 -
|
||||
Rule NC 1996 only - Dec 1 2:00s 1:00 -
|
||||
@@ -558,7 +574,7 @@ Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa
|
||||
|
||||
# New Zealand
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NZ 1927 only - Nov 6 2:00 1:00 S
|
||||
Rule NZ 1928 only - Mar 4 2:00 0 M
|
||||
Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
|
||||
@@ -610,7 +626,7 @@ Link Pacific/Auckland Antarctica/McMurdo
|
||||
|
||||
# Cook Is
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cook 1978 only - Nov 12 0:00 0:30 -
|
||||
Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
|
||||
Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
|
||||
@@ -755,7 +771,7 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
|
||||
# That web page currently lists transitions for 2012/3 and 2013/4.
|
||||
# Assume the pattern instituted in 2012 will continue indefinitely.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule WS 2010 only - Sep lastSun 0:00 1 -
|
||||
Rule WS 2011 only - Apr Sat>=1 4:00 0 -
|
||||
Rule WS 2011 only - Sep lastSat 3:00 1 -
|
||||
@@ -799,7 +815,7 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 1901
|
||||
13:00 - +13
|
||||
|
||||
# Tonga
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
|
||||
Rule Tonga 2000 only - Mar 19 2:00s 0 -
|
||||
Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
|
||||
@@ -880,7 +896,7 @@ Zone Pacific/Wake 11:06:28 - LMT 1901
|
||||
|
||||
|
||||
# Vanuatu
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanuatu 1983 only - Sep 25 0:00 1:00 -
|
||||
Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
|
||||
Rule Vanuatu 1984 only - Oct 23 0:00 1:00 -
|
||||
|
||||
@@ -411,7 +411,7 @@
|
||||
# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
|
||||
# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Summer Time Act, 1916
|
||||
Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
|
||||
Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
|
||||
@@ -552,7 +552,7 @@ Link Europe/London Europe/Isle_of_Man
|
||||
# The following is like GB-Eire and EU, except with standard time in
|
||||
# summer and negative daylight saving time in winter. It is for when
|
||||
# negative SAVE values are used.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Eire 1971 only - Oct 31 2:00u -1:00 -
|
||||
Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
|
||||
Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
|
||||
@@ -589,7 +589,7 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
|
||||
# predecessor organization, the European Communities.
|
||||
# For brevity they are called "EU rules" elsewhere in this file.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
|
||||
Rule EU 1977 only - Sep lastSun 1:00u 0 -
|
||||
Rule EU 1978 only - Oct 1 1:00u 0 -
|
||||
@@ -629,13 +629,13 @@ Rule C-Eur 1944 only - Oct 2 2:00s 0 -
|
||||
# corrected in version 2008d). The circumstantial evidence is simply the
|
||||
# tz database itself, as seen below:
|
||||
#
|
||||
# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# Zone Europe/Paris ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# Zone Europe/Monaco ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Belgrade 1:22:00 - LMT 1884
|
||||
# Zone Europe/Belgrade ...
|
||||
# 1:00 1:00 CEST 1945 Sep 16 2:00s
|
||||
#
|
||||
# Rule France 1945 only - Sep 16 3:00 0 -
|
||||
@@ -681,7 +681,7 @@ Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
|
||||
#
|
||||
# The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
|
||||
#
|
||||
# Decree No. 142 (1917-12-22) http://istmat.info/node/28137
|
||||
@@ -795,7 +795,7 @@ Zone EET 2:00 EU EE%sT
|
||||
|
||||
|
||||
# Albania
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Albania 1940 only - Jun 16 0:00 1:00 S
|
||||
Rule Albania 1942 only - Nov 2 3:00 0 -
|
||||
Rule Albania 1943 only - Mar 29 2:00 1:00 S
|
||||
@@ -849,7 +849,7 @@ Zone Europe/Andorra 0:06:04 - LMT 1901
|
||||
# In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
|
||||
# Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Austria 1920 only - Apr 5 2:00s 1:00 S
|
||||
Rule Austria 1920 only - Sep 13 2:00s 0 -
|
||||
Rule Austria 1946 only - Apr 14 2:00s 1:00 S
|
||||
@@ -936,7 +936,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880
|
||||
# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
|
||||
# Assume Brussels switched to WET in 1918 when the armistice took effect.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
|
||||
Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
|
||||
Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
|
||||
@@ -996,7 +996,7 @@ Zone Europe/Brussels 0:17:30 - LMT 1880
|
||||
# EET -> EETDST is in 03:00 Local time in last Sunday of March ...
|
||||
# EETDST -> EET is in 04:00 Local time in last Sunday of October
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bulg 1979 only - Mar 31 23:00 1:00 S
|
||||
Rule Bulg 1979 only - Oct 1 1:00 0 -
|
||||
Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
|
||||
@@ -1028,7 +1028,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880
|
||||
# We know of no English-language name for historical Czech winter time;
|
||||
# abbreviate it as "GMT", as it happened to be GMT.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
|
||||
Rule Czech 1945 only - Oct 1 2:00s 0 -
|
||||
Rule Czech 1946 only - May 6 2:00s 1:00 S
|
||||
@@ -1084,7 +1084,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# Hence the "02:00" of the 1980 law refers to standard time, not
|
||||
# wall-clock time, and so the EU rules were in effect in 1980.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Denmark 1916 only - May 14 23:00 1:00 S
|
||||
Rule Denmark 1916 only - Sep 30 23:00 0 -
|
||||
Rule Denmark 1940 only - May 15 0:00 1:00 S
|
||||
@@ -1186,7 +1186,7 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
|
||||
# http://naalakkersuisut.gl/~/media/Nanoq/Files/Attached%20Files/Engelske-tekster/Legislation/Executive%20Order%20National%20Park.rtf
|
||||
# It is their only National Park.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
|
||||
Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
|
||||
Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
|
||||
@@ -1317,7 +1317,7 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880
|
||||
# From Paul Eggert (2014-06-14):
|
||||
# Go with Oja over Shanks.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Finland 1942 only - Apr 2 24:00 1:00 S
|
||||
Rule Finland 1942 only - Oct 4 1:00 0 -
|
||||
Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
|
||||
@@ -1349,10 +1349,58 @@ Link Europe/Helsinki Europe/Mariehamn
|
||||
# Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
|
||||
# Guy Trédaniel, Paris 1987
|
||||
|
||||
# From Michael Deckers (2020-06-11):
|
||||
# the law of 1891 <https://gallica.bnf.fr/ark:/12148/bpt6k64415343.texteImage>
|
||||
# was published on 1891-03-15, so it could only take force on 1891-03-16.
|
||||
|
||||
# From Michael Deckers (2020-06-10):
|
||||
# Le Gaulois, 1911-03-11, page 1/6, online at
|
||||
# https://www.retronews.fr/societe/echo-de-presse/2018/01/29/1911-change-lheure-de-paris
|
||||
# ... [ Instantly, all pressure driven clock dials halted... Nine minutes and
|
||||
# twenty-one seconds later the hands resumed their circular motion. ]
|
||||
# There are also precise reports about how the change was prepared in train
|
||||
# stations: all the publicly visible clocks stopped at midnight railway time
|
||||
# (or were covered), only the chief of service had a watch, labeled
|
||||
# "Heure ancienne", that he kept running until it reached 00:04:21, when
|
||||
# he announced "Heure nouvelle". See the "Le Petit Journal 1911-03-11".
|
||||
# https://gallica.bnf.fr/ark:/12148/bpt6k6192911/f1.item.zoom
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# That "all French clocks stopped" for 00:09:21 is a misreading of French
|
||||
# newspapers; this sort of adjustment applies only to certain
|
||||
# remote-controlled clocks ("pendules pneumatiques", of which there existed
|
||||
# perhaps a dozen in Paris, and which simply could not be set back remotely),
|
||||
# but not to all the clocks in all French towns and villages. For instance,
|
||||
# the following story in the "Courrier de Saône-et-Loire" 1911-03-11, page 2:
|
||||
# only works if legal time was stepped back (was not monotone): ...
|
||||
# [One can observe that children who had been born at midnight less 5
|
||||
# minutes and who had died at midnight of the old time, would turn out to
|
||||
# be dead before being born, time having been set back and having
|
||||
# suppressed 9 minutes and 25 seconds of their existence, that is, more
|
||||
# than they could spend.]
|
||||
#
|
||||
# From Paul Eggert (2020-06-12):
|
||||
# French time in railway stations was legally five minutes behind civil time,
|
||||
# which explains why railway "old time" ran to 00:04:21 instead of to 00:09:21.
|
||||
# The law's text (which Michael Deckers noted is at
|
||||
# <https://gallica.bnf.fr/ark:/12148/bpt6k2022333z/f2>) says only that
|
||||
# at 1911-03-11 00:00 legal time was that of Paris mean time delayed by
|
||||
# nine minutes and twenty-one seconds, and does not say how the
|
||||
# transition from Paris mean time was to occur.
|
||||
#
|
||||
# tzdb has no way to represent stopped clocks. As the railway practice
|
||||
# was to keep a watch running on "old time" to decide when to restart
|
||||
# the other clocks, this could be modeled as a transition for "old time" at
|
||||
# 00:09:21. However, since the law was ambiguous and clocks outside railway
|
||||
# stations were probably done haphazardly with the popular impression being
|
||||
# that the transition was done at 00:00 "old time", simply leave the time
|
||||
# blank; this causes zic to default to 00:00 "old time" which is good enough.
|
||||
# Do something similar for the 1891-03-16 transition. There are similar
|
||||
# problems in Algiers, Monaco and Tunis.
|
||||
|
||||
#
|
||||
# Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule France 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule France 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -1412,13 +1460,11 @@ Rule France 1945 only - Sep 16 3:00 0 -
|
||||
# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
|
||||
Rule France 1976 only - Mar 28 1:00 1:00 S
|
||||
Rule France 1976 only - Sep 26 1:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
|
||||
# but Howse quotes the actual French legislation as saying 0:09:21.
|
||||
# Go with Howse. Howse writes that the time in France was officially based
|
||||
# Howse writes that the time in France was officially based
|
||||
# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
|
||||
0:00 France WE%sT 1940 Jun 14 23:00
|
||||
# Le Corre says Paris stuck with occupied-France time after the liberation;
|
||||
@@ -1447,7 +1493,7 @@ Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# this was equivalent to UT +03, not +04.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Germany 1946 only - Apr 14 2:00s 1:00 S
|
||||
Rule Germany 1946 only - Oct 7 2:00s 0 -
|
||||
Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
@@ -1499,7 +1545,7 @@ Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Greece
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
|
||||
Rule Greece 1932 only - Jul 7 0:00 1:00 S
|
||||
Rule Greece 1932 only - Sep 1 0:00 0 -
|
||||
@@ -1534,38 +1580,73 @@ Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14
|
||||
2:00 EU EE%sT
|
||||
|
||||
# Hungary
|
||||
# From Paul Eggert (2014-07-15):
|
||||
# Dates for 1916-1945 are taken from:
|
||||
# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
|
||||
# National Archives of Hungary (2012-10-29).
|
||||
# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
|
||||
# This source does not always give times, which are taken from Shanks
|
||||
# & Pottenger (which disagree about the dates).
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Hungary 1918 only - Apr 1 3:00 1:00 S
|
||||
Rule Hungary 1918 only - Sep 16 3:00 0 -
|
||||
Rule Hungary 1919 only - Apr 15 3:00 1:00 S
|
||||
Rule Hungary 1919 only - Nov 24 3:00 0 -
|
||||
|
||||
# From Michael Deckers (2020-06-09):
|
||||
# an Austrian encyclopedia of railroads of 1913, online at
|
||||
# http://www.zeno.org/Roell-1912/A/Eisenbahnzeit
|
||||
# says that the switch [to CET] happened on 1890-11-01.
|
||||
|
||||
# From Géza Nyáry (2020-06-07):
|
||||
# Data for 1918-1983 are based on the archive database of Library Hungaricana.
|
||||
# The dates are collected from original, scanned governmental orders,
|
||||
# bulletins, instructions and public press.
|
||||
# [See URLs below.]
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1918/?pg=238
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1919/?pg=808
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1920/?pg=201
|
||||
Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
|
||||
Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
|
||||
Rule Hungary 1920 only - Apr 5 2:00 1:00 S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1945/?pg=882
|
||||
Rule Hungary 1945 only - May 1 23:00 1:00 S
|
||||
Rule Hungary 1945 only - Nov 1 0:00 0 -
|
||||
Rule Hungary 1945 only - Nov 1 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_03/?pg=49
|
||||
Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
|
||||
Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_09/?pg=54
|
||||
Rule Hungary 1946 only - Oct 7 2:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1947_04_1__001-123/?pg=90
|
||||
# https://library.hungaricana.hu/hu/view/DunantuliNaplo_1947_09/?pg=128
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1948_03_3__001-123/?pg=304
|
||||
# https://library.hungaricana.hu/hu/view/Zala_1948_09/?pg=64
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=53
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=160
|
||||
# https://library.hungaricana.hu/hu/view/UjSzo_1949_01-04/?pg=102
|
||||
# https://library.hungaricana.hu/hu/view/KeletMagyarorszag_1949_03/?pg=96
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1949_09/?pg=94
|
||||
Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Oct 23 2:00s 0 -
|
||||
Rule Hungary 1954 1955 - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 1955 - Oct 3 0:00 0 -
|
||||
Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
|
||||
Rule Hungary 1956 only - Sep lastSun 0:00 0 -
|
||||
Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
|
||||
Rule Hungary 1957 only - Sep lastSun 3:00 0 -
|
||||
Rule Hungary 1980 only - Apr 6 1:00 1:00 S
|
||||
Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1954/?pg=513
|
||||
Rule Hungary 1954 only - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 only - Oct 3 0:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1955/?pg=398
|
||||
Rule Hungary 1955 only - May 22 2:00 1:00 S
|
||||
Rule Hungary 1955 only - Oct 2 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/HevesMegyeiNepujsag_1956_06/?pg=0
|
||||
# https://library.hungaricana.hu/hu/view/EszakMagyarorszag_1956_06/?pg=6
|
||||
# https://library.hungaricana.hu/hu/view/SzolnokMegyeiNeplap_1957_04/?pg=120
|
||||
# https://library.hungaricana.hu/hu/view/PestMegyeiHirlap_1957_09/?pg=143
|
||||
Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
|
||||
Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=189
|
||||
Rule Hungary 1980 only - Apr 6 0:00 1:00 S
|
||||
Rule Hungary 1980 only - Sep 28 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=1227
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1981_01/?pg=79
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1982/?pg=115
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1983/?pg=85
|
||||
Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
|
||||
Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Nov 1
|
||||
1:00 C-Eur CE%sT 1918
|
||||
1:00 Hungary CE%sT 1941 Apr 8
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1941/?pg=1204
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1942/?pg=3955
|
||||
1:00 Hungary CE%sT 1941 Apr 7 23:00
|
||||
1:00 C-Eur CE%sT 1945
|
||||
1:00 Hungary CE%sT 1980 Sep 28 2:00s
|
||||
1:00 Hungary CE%sT 1984
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Iceland
|
||||
@@ -1601,7 +1682,7 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
# The information below is taken from the 1988 Almanak; see
|
||||
# http://www.almanak.hi.is/klukkan.html
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
|
||||
Rule Iceland 1917 only - Oct 21 1:00 0 -
|
||||
Rule Iceland 1918 1919 - Nov 16 1:00 0 -
|
||||
@@ -1693,7 +1774,7 @@ Zone Atlantic/Reykjavik -1:28 - LMT 1908
|
||||
# to 1944-06-04; although Rome was an open city during this period, it
|
||||
# was effectively controlled by Germany.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Italy 1916 only - Jun 3 24:00 1:00 S
|
||||
Rule Italy 1916 1917 - Sep 30 24:00 0 -
|
||||
Rule Italy 1917 only - Mar 31 24:00 1:00 S
|
||||
@@ -1803,7 +1884,7 @@ Link Europe/Rome Europe/San_Marino
|
||||
# urged Lithuania and Estonia to adopt a similar time policy, but it
|
||||
# appears that they will not do so....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
|
||||
|
||||
@@ -1896,7 +1977,7 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880
|
||||
# Luxembourg
|
||||
# Whitman disagrees with most of these dates in minor ways;
|
||||
# go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lux 1916 only - May 14 23:00 1:00 S
|
||||
Rule Lux 1916 only - Oct 1 1:00 0 -
|
||||
Rule Lux 1917 only - Apr 28 23:00 1:00 S
|
||||
@@ -1937,7 +2018,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
|
||||
# From Paul Eggert (2016-10-21):
|
||||
# Assume 1900-1972 was like Rome, overriding Shanks.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Malta 1973 only - Mar 31 0:00s 1:00 S
|
||||
Rule Malta 1973 only - Sep 29 0:00s 0 -
|
||||
Rule Malta 1974 only - Apr 21 0:00s 1:00 S
|
||||
@@ -2010,7 +2091,7 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
|
||||
# says the 2014-03-30 spring-forward transition was at 02:00 local time.
|
||||
# Guess that since 1997 Moldova has switched one hour before the EU.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
|
||||
Rule Moldova 1997 max - Oct lastSun 3:00 0 -
|
||||
|
||||
@@ -2028,11 +2109,24 @@ Zone Europe/Chisinau 1:55:20 - LMT 1880
|
||||
2:00 Moldova EE%sT
|
||||
|
||||
# Monaco
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# In the "Journal de Monaco" of 1892-05-24, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
|
||||
# we read: ...
|
||||
# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
|
||||
# legal time in the Principality will be set to, from the date of June 1,
|
||||
# 1892 onwards, to the meridian of Paris, as in France.]
|
||||
# In the "Journal de Monaco" of 1911-03-28, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
|
||||
# we read an ordinance of 1911-03-16: ...
|
||||
# [Legal time in the Principality will be set, from the date of promulgation
|
||||
# of the present ordinance, to legal time in France.... Consequently, legal
|
||||
# time will be retarded by 9 minutes and 21 seconds.]
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
|
||||
0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
|
||||
0:00 France WE%sT 1945 Sep 16 3:00
|
||||
1:00 France CE%sT 1977
|
||||
1:00 EU CE%sT
|
||||
@@ -2080,7 +2174,7 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# The data entries before 1945 are taken from
|
||||
# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
|
||||
Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
|
||||
Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
|
||||
@@ -2117,7 +2211,7 @@ Zone Europe/Amsterdam 0:19:32 - LMT 1835
|
||||
# Norway
|
||||
# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
|
||||
# Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Norway 1916 only - May 22 1:00 1:00 S
|
||||
Rule Norway 1916 only - Sep 30 0:00 0 -
|
||||
Rule Norway 1945 only - Apr 2 2:00s 1:00 S
|
||||
@@ -2186,7 +2280,7 @@ Link Europe/Oslo Arctic/Longyearbyen
|
||||
# The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
|
||||
# <http://www.wbc.poznan.pl/publication/32156> pp 1-2.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Poland 1918 1919 - Sep 16 2:00s 0 -
|
||||
Rule Poland 1919 only - Apr 15 2:00s 1:00 S
|
||||
Rule Poland 1944 only - Apr 3 2:00s 1:00 S
|
||||
@@ -2257,7 +2351,7 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
|
||||
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
|
||||
# harmonized with EU rules), and that they stayed +0:00 that winter.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
|
||||
# done every year, depending on what Spain did, because of railroad schedules.
|
||||
# Go with Shanks & Pottenger.
|
||||
@@ -2370,7 +2464,7 @@ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
|
||||
# assume that Romania and Moldova switched to EU rules in 1997,
|
||||
# the same year as Bulgaria.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Romania 1932 only - May 21 0:00s 1:00 S
|
||||
Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
|
||||
Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
|
||||
@@ -3468,14 +3562,14 @@ Link Europe/Prague Europe/Bratislava
|
||||
# fallback transition from the next day's 00:59... to 00:00.
|
||||
|
||||
# From Michael Deckers (2016-12-15):
|
||||
# The Royal Decree of 1900-06-26 quoted by Planesas, online at
|
||||
# The Royal Decree of 1900-07-26 quoted by Planesas, online at
|
||||
# https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf
|
||||
# says in its article 5 (my translation):
|
||||
# These dispositions will enter into force beginning with the
|
||||
# instant at which, according to the time indicated in article 1,
|
||||
# the 1st day of January of 1901 will begin.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Spain 1918 only - Apr 15 23:00 1:00 S
|
||||
Rule Spain 1918 1919 - Oct 6 24:00s 0 -
|
||||
Rule Spain 1919 only - Apr 6 23:00 1:00 S
|
||||
@@ -3612,7 +3706,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# By the end of the 18th century clocks and watches became commonplace
|
||||
# and their performance improved enormously. Communities began to keep
|
||||
# mean time in preference to apparent time - Geneva from 1780 ....
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# From Whitman (who writes "Midnight?"):
|
||||
# Rule Swiss 1940 only - Nov 2 0:00 1:00 S
|
||||
# Rule Swiss 1940 only - Dec 31 0:00 0 -
|
||||
@@ -3699,7 +3793,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# 1853-07-16, though it probably occurred at some other date in Zurich, and
|
||||
# legal civil time probably changed at still some other transition date.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
|
||||
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -3848,7 +3942,7 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
||||
# Although Google Translate misfires on that source, it looks like
|
||||
# Turkey reversed last month's decision, and so will stay at +03.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Turkey 1916 only - May 1 0:00 1:00 S
|
||||
Rule Turkey 1916 only - Oct 1 0:00 0 -
|
||||
Rule Turkey 1920 only - Mar 28 0:00 1:00 S
|
||||
@@ -4006,7 +4100,7 @@ Zone Europe/Kiev 2:02:04 - LMT 1880
|
||||
2:00 1:00 EEST 1991 Sep 29 3:00
|
||||
2:00 E-Eur EE%sT 1995
|
||||
2:00 EU EE%sT
|
||||
# Ruthenia used CET 1990/1991.
|
||||
# Transcarpathia used CET 1990/1991.
|
||||
# "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
|
||||
# "Uzhgorod" is more common in English.
|
||||
Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
|
||||
|
||||
@@ -91,11 +91,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
||||
# Any additional leap seconds will come after this.
|
||||
# This Expires line is commented out for now,
|
||||
# so that pre-2020a zic implementations do not reject this file.
|
||||
#Expires 2020 Dec 28 00:00:00
|
||||
#Expires 2021 Jun 28 00:00:00
|
||||
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000 (2016-07-08 00:00:00 UTC)
|
||||
#expires 1609113600 (2020-12-28 00:00:00 UTC)
|
||||
#expires 1624838400 (2021-06-28 00:00:00 UTC)
|
||||
|
||||
# Updated through IERS Bulletin C59
|
||||
# File expires on: 28 December 2020
|
||||
# Updated through IERS Bulletin C60
|
||||
# File expires on: 28 June 2021
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
# U.S. government action. So even though the "US" rules have changed
|
||||
# in the latest release, other countries won't be affected.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
|
||||
Rule US 1918 1919 - Oct lastSun 2:00 0 S
|
||||
Rule US 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -370,7 +370,7 @@ Zone PST8PDT -8:00 US P%sT
|
||||
# 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 NAME FROM TO - 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
|
||||
Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
|
||||
@@ -454,7 +454,7 @@ Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
|
||||
# The Tennessean 2007-05-11, republished 2015-04-06.
|
||||
# https://www.tennessean.com/story/insider/extras/2015/04/06/archives-seigenthaler-for-100-years-the-tennessean-had-it-covered/25348545/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Chicago 1920 only - Jun 13 2:00 1:00 D
|
||||
Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
|
||||
Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
|
||||
@@ -523,7 +523,7 @@ Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
|
||||
# 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 NAME FROM TO - 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
|
||||
Rule Denver 1921 only - May 22 2:00 0 S
|
||||
@@ -576,7 +576,7 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule CA 1948 only - Mar 14 2:01 1:00 D
|
||||
Rule CA 1949 only - Jan 1 2:00 0 S
|
||||
Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
|
||||
@@ -934,7 +934,7 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
|
||||
# going to switch from Central to Eastern Time on March 11, 2007....
|
||||
# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
|
||||
Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -953,7 +953,7 @@ Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
|
||||
#
|
||||
# Eastern Crawford County, Indiana, left its clocks alone in 1974,
|
||||
# as well as from 1976 through 2005.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Marengo 1951 only - Sep lastSun 2:00 0 S
|
||||
Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
|
||||
@@ -972,7 +972,7 @@ Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37
|
||||
# Daviess, Dubois, Knox, and Martin Counties, Indiana,
|
||||
# switched from eastern to central time in April 2006, then switched back
|
||||
# in November 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -997,7 +997,7 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
|
||||
# The Indianapolis News, Friday 27 October 1967 states that Perry County
|
||||
# returned to CST. It went again to EST on 27 April 1969, as documented by the
|
||||
# Indianapolis star of Saturday 26 April.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Perry 1955 only - May 1 0:00 1:00 D
|
||||
Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
|
||||
@@ -1014,7 +1014,7 @@ Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57
|
||||
#
|
||||
# Pike County, Indiana moved from central to eastern time in 1977,
|
||||
# then switched back in 2006, then switched back again in 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pike 1955 only - May 1 0:00 1:00 D
|
||||
Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
|
||||
@@ -1035,7 +1035,7 @@ Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53
|
||||
# An article on page A3 of the Sunday, 1991-10-27 Washington Post
|
||||
# notes that Starke County switched from Central time to Eastern time as of
|
||||
# 1991-10-27.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
|
||||
Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1052,7 +1052,7 @@ Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30
|
||||
#
|
||||
# Pulaski County, Indiana, switched from eastern to central time in
|
||||
# April 2006 and then switched back in March 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
|
||||
Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1094,7 +1094,7 @@ Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44
|
||||
#
|
||||
# Part of Kentucky left its clocks alone in 1974.
|
||||
# This also includes Clark, Floyd, and Harrison counties in Indiana.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Louisville 1921 only - May 1 2:00 1:00 D
|
||||
Rule Louisville 1921 only - Sep 1 2:00 0 S
|
||||
Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1208,7 +1208,7 @@ Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36
|
||||
# election Michigan voters narrowly repealed DST, effective 1969.
|
||||
#
|
||||
# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Detroit 1948 only - Sep lastSun 2:00 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1225,7 +1225,7 @@ Zone America/Detroit -5:32:11 - LMT 1905
|
||||
#
|
||||
# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
|
||||
# switched from EST to CST/CDT in 1973.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Menominee 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1395,7 +1395,7 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
|
||||
# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
|
||||
# than Thursday) in all Canadian rulesets.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Canada 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Canada 1918 only - Oct 27 2:00 0 S
|
||||
Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -1418,7 +1418,7 @@ Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
|
||||
# that follows the rules is the southeast corner, including Port Hope
|
||||
# Simpson and Mary's Harbour, but excluding, say, Black Tickle.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule StJohns 1917 only - Apr 8 2:00 1:00 D
|
||||
Rule StJohns 1917 only - Sep 17 2:00 0 S
|
||||
# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
|
||||
@@ -1520,7 +1520,7 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
|
||||
# bill say that it is "accommodating the customs and practices" of those
|
||||
# regions, which suggests that they have always been in-line with Halifax.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Halifax 1916 only - Apr 1 0:00 1:00 D
|
||||
Rule Halifax 1916 only - Oct 1 0:00 0 S
|
||||
Rule Halifax 1920 only - May 9 0:00 1:00 D
|
||||
@@ -1586,7 +1586,7 @@ Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
|
||||
# clear that this was the case since at least 1993.
|
||||
# For now, assume it started in 1993.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
|
||||
Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
|
||||
Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
|
||||
@@ -1795,7 +1795,7 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
# With some exceptions, the use of daylight saving may be said to be limited
|
||||
# to those cities and towns lying between Quebec city and Windsor, Ont.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Toronto 1919 only - Mar 30 23:30 1:00 D
|
||||
Rule Toronto 1919 only - Oct 26 0:00 0 S
|
||||
Rule Toronto 1920 only - May 2 2:00 1:00 D
|
||||
@@ -1893,7 +1893,7 @@ Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
# starting 1966. Since 02:00s is clearly correct for 1967 on, assume
|
||||
# it was also 02:00s in 1966.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Winn 1916 only - Apr 23 0:00 1:00 D
|
||||
Rule Winn 1916 only - Sep 17 0:00 0 S
|
||||
Rule Winn 1918 only - Apr 14 2:00 1:00 D
|
||||
@@ -1984,7 +1984,7 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
|
||||
# long and rather painful to read.
|
||||
# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Regina 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Regina 1918 only - Oct 27 2:00 0 S
|
||||
Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
|
||||
@@ -2034,7 +2034,7 @@ Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
|
||||
# Boyer JP. Forcing Choice: The Risky Reward of Referendums. Dundum. 2017.
|
||||
# ISBN 978-1459739123.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
|
||||
Rule Edm 1918 only - Oct 27 2:00 0 S
|
||||
Rule Edm 1919 only - May 27 2:00 0 S
|
||||
@@ -2143,7 +2143,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
# https://searcharchives.vancouver.ca/daylight-saving-1918-starts-again-july-7-1941-start-d-s-sept-27-end-of-d-s-1941
|
||||
# We have no further details, so omit them for now.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanc 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Vanc 1918 only - Oct 27 2:00 0 S
|
||||
Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -2472,7 +2472,19 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# consistency with nearby Dawson Creek, Creston, and Fort Nelson.
|
||||
# https://yukon.ca/en/news/yukon-end-seasonal-time-change
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Andrew G. Smith (2020-09-24):
|
||||
# Yukon has completed its regulatory change to be on UTC -7 year-round....
|
||||
# http://www.gov.yk.ca/legislation/regs/oic2020_125.pdf
|
||||
# What we have done is re-defined Yukon Standard Time, as we are
|
||||
# authorized to do under section 33 of our Interpretation Act:
|
||||
# http://www.gov.yk.ca/legislation/acts/interpretation_c.pdf
|
||||
#
|
||||
# From Paul Eggert (2020-09-24):
|
||||
# tzdb uses the obsolete YST abbreviation for standard time in Yukon through
|
||||
# about 1970, and uses PST for standard time in Yukon since then. Consistent
|
||||
# with that, use MST for -07, the new standard time in Yukon effective Nov. 1.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule NT_YK 1918 only - Oct 27 2:00 0 S
|
||||
Rule NT_YK 1919 only - May 25 2:00 1:00 D
|
||||
@@ -2526,12 +2538,12 @@ Zone America/Inuvik 0 - -00 1953 # Inuvik founded
|
||||
Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1967 May 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1973 Oct 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
|
||||
|
||||
@@ -2746,7 +2758,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
# 5- The islands, reefs and keys shall take their timezone from the
|
||||
# longitude they are located at.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
||||
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
||||
Rule Mexico 1940 only - Dec 9 0:00 1:00 D
|
||||
@@ -2951,7 +2963,7 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
|
||||
Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -2963,7 +2975,7 @@ Zone America/Nassau -5:09:30 - LMT 1912 Mar 2
|
||||
|
||||
# For 1899 Milne gives -3:58:29.2; round that.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Barb 1977 only - Jun 12 2:00 1:00 D
|
||||
Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
|
||||
Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
|
||||
@@ -2976,7 +2988,7 @@ Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown
|
||||
|
||||
# Belize
|
||||
# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530
|
||||
Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST
|
||||
Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
|
||||
@@ -3013,7 +3025,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
|
||||
# Milne gives -5:36:13.3 as San José mean time; round to nearest.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
|
||||
Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
|
||||
Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
|
||||
@@ -3187,7 +3199,7 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José
|
||||
# From Paul Eggert (2012-11-03):
|
||||
# For now, assume the future rule is first Sunday in November.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
|
||||
Rule Cuba 1928 only - Oct 10 0:00 0 S
|
||||
Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
|
||||
@@ -3256,7 +3268,7 @@ Zone America/Havana -5:29:28 - LMT 1890
|
||||
# decided to revert.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule DR 1966 only - Oct 30 0:00 1:00 EDT
|
||||
Rule DR 1967 only - Feb 28 0:00 0 EST
|
||||
Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
|
||||
@@ -3273,7 +3285,7 @@ Zone America/Santo_Domingo -4:39:36 - LMT 1890
|
||||
|
||||
# El Salvador
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
|
||||
# There are too many San Salvadors elsewhere, so use America/El_Salvador
|
||||
@@ -3302,7 +3314,7 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
|
||||
# (2006-04-19), says DST ends at 24:00. See
|
||||
# http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Guat 1973 only - Nov 25 0:00 1:00 D
|
||||
Rule Guat 1974 only - Feb 24 0:00 0 S
|
||||
Rule Guat 1983 only - May 21 0:00 1:00 D
|
||||
@@ -3383,7 +3395,7 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
|
||||
# I have not been able to find a more authoritative source:
|
||||
# https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Haiti 1983 only - May 8 0:00 1:00 D
|
||||
Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
|
||||
Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
|
||||
@@ -3431,7 +3443,7 @@ Zone America/Port-au-Prince -4:49:20 - LMT 1890
|
||||
# http://www.laprensahn.com/pais_nota.php?id04962=7386
|
||||
# So it seems that Honduras will not enter DST this year....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
|
||||
Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
|
||||
@@ -3522,7 +3534,7 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
|
||||
# The natural sun time is restored in all the national territory, in that the
|
||||
# time is returned one hour at 01:00 am of October 1 of 2006.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
|
||||
Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
|
||||
Rule Nic 2005 only - Apr 10 0:00 1:00 D
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# From Arthur David Olson (1989-04-05):
|
||||
# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
|
||||
# establishing "Pacific Presidential Election Time"; it was not acted on
|
||||
# by the Senate or signed into law by the President.
|
||||
# You might want to change the "PE" (Presidential Election) below to
|
||||
# "Q" (Quadrennial) to maintain three-character zone abbreviations.
|
||||
# If you're really conservative, you might want to change it to "D".
|
||||
# Avoid "L" (Leap Year), which won't be true in 2100.
|
||||
|
||||
# If Presidential Election Time is ever established, replace "XXXX" below
|
||||
# with the year the law takes effect and uncomment the "##" lines.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
|
||||
## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
|
||||
## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
|
||||
## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
|
||||
## -8:00 Twilite P%sT
|
||||
|
||||
# For now...
|
||||
Link America/Los_Angeles US/Pacific-New ##
|
||||
@@ -71,7 +71,7 @@
|
||||
# I am sending modifications to the Argentine time zone table...
|
||||
# AR was chosen because they are the ISO letters that represent Argentina.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Arg 1930 only - Dec 1 0:00 1:00 -
|
||||
Rule Arg 1931 only - Apr 1 0:00 0 -
|
||||
Rule Arg 1931 only - Oct 15 0:00 1:00 -
|
||||
@@ -792,7 +792,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890
|
||||
# From Paul Eggert (2013-10-17):
|
||||
# For now, assume western Amazonas will change as well.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
|
||||
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
|
||||
Rule Brazil 1931 only - Oct 3 11:00 1:00 -
|
||||
@@ -1281,7 +1281,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# For now, assume that they will not revert,
|
||||
# since they have extended the expiration date once already.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - 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 -
|
||||
Rule Chile 1968 only - Nov 3 4:00u 1:00 -
|
||||
@@ -1381,7 +1381,7 @@ Zone Antarctica/Palmer 0 - -00 1965
|
||||
# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
|
||||
# "A variation of fifteen minutes in the public clocks of Bogota is not rare."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CO 1992 only - May 3 0:00 1:00 -
|
||||
Rule CO 1993 only - Apr 4 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1441,7 +1441,7 @@ Link America/Curacao America/Kralendijk # Caribbean Netherlands
|
||||
# (Not one step back), the clocks went back in 1993 and the experiment was not
|
||||
# repeated. For now, assume transitions were at 00:00 local time country-wide.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
|
||||
Rule Ecuador 1993 only - Feb 5 0:00 0 -
|
||||
#
|
||||
@@ -1535,7 +1535,7 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
|
||||
# For now we will assume permanent -03 for the Falklands
|
||||
# until advised differently (to apply for 2012 and beyond, after the 2011
|
||||
# experiment was apparently successful.)
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
|
||||
Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
|
||||
Rule Falk 1939 only - Oct 1 0:00 1:00 -
|
||||
@@ -1581,7 +1581,7 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
|
||||
# No time of the day is established for the adjustment, so people normally
|
||||
# adjust their clocks at 0 hour of the given dates.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Para 1975 1988 - Oct 1 0:00 1:00 -
|
||||
Rule Para 1975 1978 - Mar 1 0:00 0 -
|
||||
Rule Para 1979 1991 - Apr 1 0:00 0 -
|
||||
@@ -1674,7 +1674,7 @@ Zone America/Asuncion -3:50:40 - LMT 1890
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Peru 1938 only - Jan 1 0:00 1:00 -
|
||||
Rule Peru 1938 only - Apr 1 0:00 0 -
|
||||
Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
|
||||
@@ -1770,7 +1770,7 @@ Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/10/2
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/18/2
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
|
||||
Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
|
||||
# From Tim Parenti (2018-02-15):
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
|
||||
# Old rules, should the need arise.
|
||||
# No attempt is made to handle Newfoundland, since it cannot be expressed
|
||||
# using the System V "TZ" scheme (half-hour offset), or anything outside
|
||||
# North America (no support for non-standard DST start/end dates), nor
|
||||
# the changes in the DST rules in the US after 1976 (which occurred after
|
||||
# the old rules were written).
|
||||
#
|
||||
# If you need the old rules, uncomment ## lines.
|
||||
# Compile this *without* leap second correction for true conformance.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV min 1973 - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1974 only - Jan 6 2:00 1:00 D
|
||||
Rule SystemV 1974 only - Nov lastSun 2:00 0 S
|
||||
Rule SystemV 1975 only - Feb 23 2:00 1:00 D
|
||||
Rule SystemV 1975 only - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV 1976 max - Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone SystemV/AST4ADT -4:00 SystemV A%sT
|
||||
## Zone SystemV/EST5EDT -5:00 SystemV E%sT
|
||||
## Zone SystemV/CST6CDT -6:00 SystemV C%sT
|
||||
## Zone SystemV/MST7MDT -7:00 SystemV M%sT
|
||||
## Zone SystemV/PST8PDT -8:00 SystemV P%sT
|
||||
## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
|
||||
## Zone SystemV/AST4 -4:00 - AST
|
||||
## Zone SystemV/EST5 -5:00 - EST
|
||||
## Zone SystemV/CST6 -6:00 - CST
|
||||
## Zone SystemV/MST7 -7:00 - MST
|
||||
## Zone SystemV/PST8 -8:00 - PST
|
||||
## Zone SystemV/YST9 -9:00 - YST
|
||||
## Zone SystemV/HST10 -10:00 - HST
|
||||
@@ -87,11 +87,20 @@ endif
|
||||
# Define external dependencies
|
||||
|
||||
# Latest that could be made to work.
|
||||
GCC_VER := 9.2.0
|
||||
ifeq ($(GCC_VER), 9.2.0)
|
||||
GCC_VER := 10.2.0
|
||||
ifeq ($(GCC_VER), 10.2.0)
|
||||
gcc_ver := gcc-10.2.0
|
||||
binutils_ver := binutils-2.35
|
||||
ccache_ver := ccache-3.7.11
|
||||
mpfr_ver := mpfr-4.1.0
|
||||
gmp_ver := gmp-6.2.0
|
||||
mpc_ver := mpc-1.1.0
|
||||
gdb_ver := gdb-9.2
|
||||
REQUIRED_MIN_MAKE_MAJOR_VERSION := 4
|
||||
else ifeq ($(GCC_VER), 9.2.0)
|
||||
gcc_ver := gcc-9.2.0
|
||||
binutils_ver := binutils-2.34
|
||||
ccache_ver := 3.7.3
|
||||
ccache_ver := ccache-3.7.3
|
||||
mpfr_ver := mpfr-3.1.5
|
||||
gmp_ver := gmp-6.1.2
|
||||
mpc_ver := mpc-1.0.3
|
||||
@@ -99,7 +108,7 @@ ifeq ($(GCC_VER), 9.2.0)
|
||||
else ifeq ($(GCC_VER), 8.3.0)
|
||||
gcc_ver := gcc-8.3.0
|
||||
binutils_ver := binutils-2.32
|
||||
ccache_ver := 3.7.3
|
||||
ccache_ver := ccache-3.7.3
|
||||
mpfr_ver := mpfr-3.1.5
|
||||
gmp_ver := gmp-6.1.2
|
||||
mpc_ver := mpc-1.0.3
|
||||
@@ -107,7 +116,7 @@ else ifeq ($(GCC_VER), 8.3.0)
|
||||
else ifeq ($(GCC_VER), 7.3.0)
|
||||
gcc_ver := gcc-7.3.0
|
||||
binutils_ver := binutils-2.30
|
||||
ccache_ver := 3.3.6
|
||||
ccache_ver := ccache-3.3.6
|
||||
mpfr_ver := mpfr-3.1.5
|
||||
gmp_ver := gmp-6.1.2
|
||||
mpc_ver := mpc-1.0.3
|
||||
@@ -115,7 +124,7 @@ else ifeq ($(GCC_VER), 7.3.0)
|
||||
else ifeq ($(GCC_VER), 4.9.2)
|
||||
gcc_ver := gcc-4.9.2
|
||||
binutils_ver := binutils-2.25
|
||||
ccache_ver := 3.2.1
|
||||
ccache_ver := ccache-3.2.1
|
||||
mpfr_ver := mpfr-3.0.1
|
||||
gmp_ver := gmp-4.3.2
|
||||
mpc_ver := mpc-1.0.1
|
||||
@@ -124,9 +133,20 @@ else
|
||||
$(error Unsupported GCC version)
|
||||
endif
|
||||
|
||||
ifneq ($(REQUIRED_MIN_MAKE_MAJOR_VERSION),)
|
||||
MAKE_MAJOR_VERSION := $(word 1,$(subst ., ,$(MAKE_VERSION)))
|
||||
SUPPORTED_MAKE_VERSION := $(shell [ $(MAKE_MAJOR_VERSION) -ge $(REQUIRED_MIN_MAKE_MAJOR_VERSION) ] && echo true)
|
||||
ifneq ($(SUPPORTED_MAKE_VERSION),true)
|
||||
$(error "Make v$(MAKE_VERSION) is too old, must use v$(REQUIRED_MIN_MAKE_MAJOR_VERSION) or above")
|
||||
endif
|
||||
endif
|
||||
|
||||
ccache_ver_only := $(patsubst ccache-%,%,$(ccache_ver))
|
||||
|
||||
|
||||
GCC := http://ftp.gnu.org/pub/gnu/gcc/$(gcc_ver)/$(gcc_ver).tar.xz
|
||||
BINUTILS := http://ftp.gnu.org/pub/gnu/binutils/$(binutils_ver).tar.xz
|
||||
CCACHE := https://github.com/ccache/ccache/releases/download/v$(ccache_ver)/ccache-$(ccache_ver).tar.xz
|
||||
BINUTILS := http://ftp.gnu.org/pub/gnu/binutils/$(binutils_ver).tar.gz
|
||||
CCACHE := https://github.com/ccache/ccache/releases/download/v$(ccache_ver_only)/$(ccache_ver).tar.xz
|
||||
MPFR := https://www.mpfr.org/${mpfr_ver}/${mpfr_ver}.tar.bz2
|
||||
GMP := http://ftp.gnu.org/pub/gnu/gmp/${gmp_ver}.tar.bz2
|
||||
MPC := http://ftp.gnu.org/pub/gnu/mpc/${mpc_ver}.tar.gz
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# Create a bundle in the build directory, containing what's needed to
|
||||
# build and run JMH microbenchmarks from the OpenJDK build.
|
||||
|
||||
JMH_VERSION=1.21
|
||||
JMH_VERSION=1.26
|
||||
COMMONS_MATH3_VERSION=3.2
|
||||
JOPT_SIMPLE_VERSION=4.6
|
||||
|
||||
|
||||
@@ -91,7 +91,6 @@ EXCLUDE_DIRS=" \
|
||||
Platforms/AppleTVSimulator.platform \
|
||||
Platforms/iPhoneSimulator.platform \
|
||||
Platforms/WatchSimulator.platform \
|
||||
Contents/SharedFrameworks/LLDB.framework \
|
||||
Contents/SharedFrameworks/ModelIO.framework \
|
||||
Contents/SharedFrameworks/XCSUI.framework \
|
||||
Contents/SharedFrameworks/SceneKit.framework \
|
||||
|
||||
@@ -113,19 +113,23 @@ REDIST_SUBDIR="VC/Redist/MSVC/$REDIST_VERSION"
|
||||
echo "Copying VC..."
|
||||
rm -rf $DEVKIT_ROOT/VC
|
||||
mkdir -p $DEVKIT_ROOT/VC/bin
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/arm64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/x64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx86/x86" $DEVKIT_ROOT/VC/bin/
|
||||
mkdir -p $DEVKIT_ROOT/VC/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/arm64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x86" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/include" $DEVKIT_ROOT/VC/
|
||||
mkdir -p $DEVKIT_ROOT/VC/atlmfc/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/arm64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x86" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/include" $DEVKIT_ROOT/VC/atlmfc/
|
||||
mkdir -p $DEVKIT_ROOT/VC/Auxiliary
|
||||
cp -r "$VS_INSTALL_DIR/VC/Auxiliary/Build" $DEVKIT_ROOT/VC/Auxiliary/
|
||||
mkdir -p $DEVKIT_ROOT/VC/redist
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/arm64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x86" $DEVKIT_ROOT/VC/redist/
|
||||
|
||||
@@ -135,6 +139,8 @@ cp $DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x86
|
||||
cp $DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x86
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
|
||||
################################################################################
|
||||
# Copy SDK files
|
||||
@@ -152,8 +158,10 @@ mkdir -p $DEVKIT_ROOT/$SDK_VERSION/bin
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x64" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x86" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/lib
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/Redist
|
||||
@@ -188,6 +196,13 @@ echo-info "DEVKIT_MSVCR_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL\""
|
||||
echo-info "DEVKIT_MSVCP_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_x86_64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/x64\""
|
||||
echo-info ""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH_aarch64=\"\$DEVKIT_ROOT/VC/bin/arm64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
|
||||
echo-info "DEVKIT_VS_INCLUDE_aarch64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
|
||||
echo-info "DEVKIT_VS_LIB_aarch64=\"\$DEVKIT_ROOT/VC/lib/arm64;\$DEVKIT_ROOT/VC/atlmfc/lib/arm64;\$DEVKIT_ROOT/$SDK_VERSION/lib/arm64\""
|
||||
echo-info "DEVKIT_MSVCR_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL\""
|
||||
echo-info "DEVKIT_MSVCP_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_aarch64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/arm64\""
|
||||
echo-info ""
|
||||
echo-info "DEVKIT_TOOLS_VERSION=\"$TOOLS_VERSION\""
|
||||
echo-info "DEVKIT_REDIST_VERSION=\"$REDIST_VERSION\""
|
||||
echo-info "DEVKIT_SDK_VERSION=\"$SDK_FULL_VERSION\""
|
||||
|
||||
@@ -117,19 +117,23 @@ REDIST_SUBDIR="VC/Redist/MSVC/$REDIST_VERSION"
|
||||
echo "Copying VC..."
|
||||
rm -rf $DEVKIT_ROOT/VC
|
||||
mkdir -p $DEVKIT_ROOT/VC/bin
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/arm64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/x64" $DEVKIT_ROOT/VC/bin/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx86/x86" $DEVKIT_ROOT/VC/bin/
|
||||
mkdir -p $DEVKIT_ROOT/VC/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/arm64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x64" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x86" $DEVKIT_ROOT/VC/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/include" $DEVKIT_ROOT/VC/
|
||||
mkdir -p $DEVKIT_ROOT/VC/atlmfc/lib
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/arm64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x64" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x86" $DEVKIT_ROOT/VC/atlmfc/lib/
|
||||
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/include" $DEVKIT_ROOT/VC/atlmfc/
|
||||
mkdir -p $DEVKIT_ROOT/VC/Auxiliary
|
||||
cp -r "$VS_INSTALL_DIR/VC/Auxiliary/Build" $DEVKIT_ROOT/VC/Auxiliary/
|
||||
mkdir -p $DEVKIT_ROOT/VC/redist
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/arm64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x64" $DEVKIT_ROOT/VC/redist/
|
||||
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x86" $DEVKIT_ROOT/VC/redist/
|
||||
|
||||
@@ -139,6 +143,8 @@ cp $DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x86
|
||||
cp $DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x86
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/arm64
|
||||
|
||||
################################################################################
|
||||
# Copy SDK files
|
||||
@@ -156,8 +162,10 @@ mkdir -p $DEVKIT_ROOT/$SDK_VERSION/bin
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x64" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x86" $DEVKIT_ROOT/$SDK_VERSION/bin/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/lib
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
|
||||
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/Redist
|
||||
@@ -193,6 +201,14 @@ echo-info "DEVKIT_VCRUNTIME_1_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$VCRUNTIM
|
||||
echo-info "DEVKIT_MSVCP_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_x86_64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/x64\""
|
||||
echo-info ""
|
||||
echo-info "DEVKIT_TOOLCHAIN_PATH_aarch64=\"\$DEVKIT_ROOT/VC/bin/arm64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
|
||||
echo-info "DEVKIT_VS_INCLUDE_aarch64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
|
||||
echo-info "DEVKIT_VS_LIB_aarch64=\"\$DEVKIT_ROOT/VC/lib/arm64;\$DEVKIT_ROOT/VC/atlmfc/lib/arm64;\$DEVKIT_ROOT/$SDK_VERSION/lib/arm64\""
|
||||
echo-info "DEVKIT_MSVCR_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL\""
|
||||
echo-info "DEVKIT_VCRUNTIME_1_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$VCRUNTIME_1_DLL\""
|
||||
echo-info "DEVKIT_MSVCP_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL\""
|
||||
echo-info "DEVKIT_UCRT_DLL_DIR_aarch64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/arm64\""
|
||||
echo-info ""
|
||||
echo-info "DEVKIT_TOOLS_VERSION=\"$TOOLS_VERSION\""
|
||||
echo-info "DEVKIT_REDIST_VERSION=\"$REDIST_VERSION\""
|
||||
echo-info "DEVKIT_SDK_VERSION=\"$SDK_FULL_VERSION\""
|
||||
|
||||
@@ -88,6 +88,13 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
ADLCFLAGS += -DAIX=1
|
||||
else ifeq ($(call isTargetOs, macosx), true)
|
||||
ADLCFLAGS += -D_ALLBSD_SOURCE=1 -D_GNU_SOURCE=1
|
||||
else ifeq ($(call isTargetOs, windows), true)
|
||||
ifeq ($(call isTargetCpuBits, 64), true)
|
||||
ADLCFLAGS += -D_WIN64=1
|
||||
endif
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
ADLCFLAGS += -DR18_RESERVED
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, windows), false)
|
||||
@@ -131,6 +138,7 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
|
||||
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH)_neon.ad \
|
||||
$d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH)_sve.ad \
|
||||
)))
|
||||
endif
|
||||
|
||||
@@ -119,11 +119,14 @@ ifneq ($(call check-jvm-feature, cds), true)
|
||||
archiveBuilder.cpp \
|
||||
archiveUtils.cpp \
|
||||
classListParser.cpp \
|
||||
classLoaderDataShared.cpp \
|
||||
classLoaderExt.cpp \
|
||||
cppVtables.cpp \
|
||||
dumpAllocStats.cpp \
|
||||
dynamicArchive.cpp \
|
||||
filemap.cpp \
|
||||
heapShared.cpp \
|
||||
lambdaFormInvokers.cpp \
|
||||
metaspaceShared.cpp \
|
||||
metaspaceShared_$(HOTSPOT_TARGET_CPU).cpp \
|
||||
metaspaceShared_$(HOTSPOT_TARGET_CPU_ARCH).cpp \
|
||||
|
||||
@@ -123,7 +123,7 @@ JVM_GetPermittedSubclasses
|
||||
JVM_GetPrimitiveArrayElement
|
||||
JVM_GetProperties
|
||||
JVM_GetProtectionDomain
|
||||
JVM_GetRandomSeedForCDSDump
|
||||
JVM_GetRandomSeedForDumping
|
||||
JVM_GetRecordComponents
|
||||
JVM_GetSimpleBinaryName
|
||||
JVM_GetStackAccessControlContext
|
||||
@@ -144,13 +144,14 @@ JVM_Interrupt
|
||||
JVM_InvokeMethod
|
||||
JVM_IsArrayClass
|
||||
JVM_IsCDSDumpingEnabled
|
||||
JVM_IsCDSSharingEnabled
|
||||
JVM_IsConstructorIx
|
||||
JVM_IsDumpingClassList
|
||||
JVM_IsHiddenClass
|
||||
JVM_IsInterface
|
||||
JVM_IsPrimitiveClass
|
||||
JVM_IsRecord
|
||||
JVM_IsSameClassPackage
|
||||
JVM_IsSharingEnabled
|
||||
JVM_IsSupportedJNIVersion
|
||||
JVM_IsThreadAlive
|
||||
JVM_IsVMGeneratedMethodIx
|
||||
@@ -158,6 +159,7 @@ JVM_LatestUserDefinedLoader
|
||||
JVM_LoadLibrary
|
||||
JVM_LookupDefineClass
|
||||
JVM_LookupLambdaProxyClassFromArchive
|
||||
JVM_LogLambdaFormInvoker
|
||||
JVM_MaxMemory
|
||||
JVM_MaxObjectInspectionAge
|
||||
JVM_MonitorNotify
|
||||
@@ -198,5 +200,6 @@ JVM_AddModuleExports
|
||||
JVM_AddModuleExportsToAll
|
||||
JVM_AddModuleExportsToAllUnnamed
|
||||
JVM_AddReadsModule
|
||||
JVM_DefineArchivedModules
|
||||
JVM_DefineModule
|
||||
JVM_SetBootLoaderUnnamedModule
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -25,14 +25,24 @@
|
||||
|
||||
package build.tools.blacklistedcertsconverter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.PublicKey;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.security.interfaces.ECPublicKey;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import sun.security.util.DerInputStream;
|
||||
import sun.security.util.DerOutputStream;
|
||||
import sun.security.util.DerValue;
|
||||
|
||||
/**
|
||||
* Converts blacklisted.certs.pem from System.in to blacklisted.certs in
|
||||
@@ -75,8 +85,8 @@ public class BlacklistedCertsConverter {
|
||||
// Output sorted so that it's easy to locate an entry.
|
||||
Set<String> fingerprints = new TreeSet<>();
|
||||
for (Certificate cert: certs) {
|
||||
fingerprints.add(
|
||||
getCertificateFingerPrint(mdAlg, (X509Certificate)cert));
|
||||
fingerprints.addAll(
|
||||
getCertificateFingerPrints(mdAlg, (X509Certificate)cert));
|
||||
}
|
||||
|
||||
for (String s: fingerprints) {
|
||||
@@ -97,17 +107,90 @@ public class BlacklistedCertsConverter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the requested finger print of the certificate.
|
||||
* Computes the possible fingerprints of the certificate.
|
||||
*/
|
||||
private static String getCertificateFingerPrint(
|
||||
private static List<String> getCertificateFingerPrints(
|
||||
String mdAlg, X509Certificate cert) throws Exception {
|
||||
byte[] encCertInfo = cert.getEncoded();
|
||||
MessageDigest md = MessageDigest.getInstance(mdAlg);
|
||||
byte[] digest = md.digest(encCertInfo);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = 0; i < digest.length; i++) {
|
||||
byte2hex(digest[i], buf);
|
||||
List<String> fingerprints = new ArrayList<>();
|
||||
for (byte[] encoding : altEncodings(cert)) {
|
||||
MessageDigest md = MessageDigest.getInstance(mdAlg);
|
||||
byte[] digest = md.digest(encoding);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = 0; i < digest.length; i++) {
|
||||
byte2hex(digest[i], buf);
|
||||
}
|
||||
fingerprints.add(buf.toString());
|
||||
}
|
||||
return buf.toString();
|
||||
return fingerprints;
|
||||
}
|
||||
|
||||
private static List<byte[]> altEncodings(X509Certificate c)
|
||||
throws Exception {
|
||||
List<byte[]> result = new ArrayList<>();
|
||||
|
||||
DerValue d = new DerValue(c.getEncoded());
|
||||
DerValue[] seq = new DerValue[3];
|
||||
// tbsCertificate
|
||||
seq[0] = d.data.getDerValue();
|
||||
// signatureAlgorithm
|
||||
seq[1] = d.data.getDerValue();
|
||||
// signature
|
||||
seq[2] = d.data.getDerValue();
|
||||
|
||||
List<DerValue> algIds = Arrays.asList(seq[1], altAlgId(seq[1]));
|
||||
|
||||
List<DerValue> sigs;
|
||||
PublicKey p = c.getPublicKey();
|
||||
if (p instanceof ECPublicKey) {
|
||||
ECPublicKey ep = (ECPublicKey) p;
|
||||
BigInteger mod = ep.getParams().getOrder();
|
||||
sigs = Arrays.asList(seq[2], altSig(mod, seq[2]));
|
||||
} else {
|
||||
sigs = Arrays.asList(seq[2]);
|
||||
}
|
||||
|
||||
for (DerValue algId : algIds) {
|
||||
for (DerValue sig : sigs) {
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putDerValue(seq[0]);
|
||||
tmp.putDerValue(algId);
|
||||
tmp.putDerValue(sig);
|
||||
DerOutputStream tmp2 = new DerOutputStream();
|
||||
tmp2.write(DerValue.tag_Sequence, tmp);
|
||||
result.add(tmp2.toByteArray());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static DerValue altSig(BigInteger mod, DerValue sig)
|
||||
throws IOException {
|
||||
byte[] sigBits = sig.getBitString();
|
||||
DerInputStream in =
|
||||
new DerInputStream(sigBits, 0, sigBits.length, false);
|
||||
DerValue[] values = in.getSequence(2);
|
||||
BigInteger r = values[0].getBigInteger();
|
||||
BigInteger s = values[1].getBigInteger();
|
||||
BigInteger s2 = s.negate().mod(mod);
|
||||
DerOutputStream out = new DerOutputStream();
|
||||
out.putInteger(r);
|
||||
out.putInteger(s2);
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.putBitString(new DerValue(DerValue.tag_Sequence,
|
||||
out.toByteArray()).toByteArray());
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
|
||||
private static DerValue altAlgId(DerValue algId) throws IOException {
|
||||
DerInputStream in = algId.toDerInputStream();
|
||||
DerOutputStream bytes = new DerOutputStream();
|
||||
bytes.putOID(in.getOID());
|
||||
// encode parameters as NULL if not present or omit if NULL
|
||||
if (in.available() == 0) {
|
||||
bytes.putNull();
|
||||
}
|
||||
DerOutputStream tmp = new DerOutputStream();
|
||||
tmp.write(DerValue.tag_Sequence, bytes);
|
||||
return new DerValue(tmp.toByteArray());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ public class Spp {
|
||||
static final String LNSEP = System.getProperty("line.separator");
|
||||
static final String KEY = "([a-zA-Z0-9]+)";
|
||||
static final String VAR = "([a-zA-Z0-9_\\-]+)";
|
||||
static final String TEXT = "([a-zA-Z0-9&;,.<>/#() \\?\\[\\]\\$]+)"; // $ -- hack embedded $var$
|
||||
static final String TEXT = "([\\p{Print}&&[^{#:}]]+)";
|
||||
|
||||
static final int GN_NOT = 1;
|
||||
static final int GN_KEY = 2;
|
||||
@@ -140,6 +140,10 @@ public class Spp {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (repl == null) {
|
||||
System.err.println("Error: undefined variable in line " + ln);
|
||||
System.exit(-1);
|
||||
}
|
||||
vardef.appendReplacement(buf, repl);
|
||||
}
|
||||
vardef.appendTail(buf);
|
||||
|
||||
@@ -143,6 +143,7 @@ import com.sun.tools.javac.jvm.Target;
|
||||
import com.sun.tools.javac.util.Assert;
|
||||
import com.sun.tools.javac.util.Context;
|
||||
import com.sun.tools.javac.util.Pair;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* A tool for processing the .sym.txt files.
|
||||
@@ -3820,6 +3821,47 @@ public class CreateSymbols {
|
||||
}
|
||||
//</editor-fold>
|
||||
|
||||
/**Create sig files for ct.sym reading the classes description from the directory that contains
|
||||
* {@code ctDescriptionFile}, using the file as a recipe to create the sigfiles.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void createJavadocData(String ctDescriptionFileExtra, String ctDescriptionFile,
|
||||
String targetDir, int startVersion) throws IOException {
|
||||
LoadDescriptions data = load(ctDescriptionFileExtra != null ? Paths.get(ctDescriptionFileExtra)
|
||||
: null,
|
||||
Paths.get(ctDescriptionFile));
|
||||
|
||||
Path target = Paths.get(targetDir);
|
||||
|
||||
for (PlatformInput version : data.versions) {
|
||||
int versionNumber = Integer.parseInt(version.version, Character.MAX_RADIX);
|
||||
if (versionNumber < startVersion) {
|
||||
continue;
|
||||
}
|
||||
Path outputFile = target.resolve("element-list-" + versionNumber + ".txt");
|
||||
Files.createDirectories(outputFile.getParent());
|
||||
try (Writer w = Files.newBufferedWriter(outputFile, StandardCharsets.UTF_8)) {
|
||||
Set<ModuleDescription> modules = new TreeSet<>((m1, m2) -> m1.name.compareTo(m2.name));
|
||||
modules.addAll(data.modules.values());
|
||||
for (ModuleDescription module : modules) {
|
||||
if ("jdk.unsupported".equals(module.name)) {
|
||||
continue;
|
||||
}
|
||||
Optional<ModuleHeaderDescription> header = module.header.stream().filter(h -> h.versions.contains(version.version)).findAny();
|
||||
if (header.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
w.write("module:" + module.name);
|
||||
w.write("\n");
|
||||
for (String pack : header.get().exports) {
|
||||
w.write(pack.replace('/', '.'));
|
||||
w.write("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void help() {
|
||||
System.err.println("Help...");
|
||||
}
|
||||
@@ -3900,7 +3942,7 @@ public class CreateSymbols {
|
||||
new CreateSymbols().createIncrementalBaseLine(args[1], args[2], args);
|
||||
break;
|
||||
}
|
||||
case "build-ctsym":
|
||||
case "build-ctsym": {
|
||||
String ctDescriptionFileExtra;
|
||||
String ctDescriptionFile;
|
||||
String ctSymLocation;
|
||||
@@ -3939,6 +3981,39 @@ public class CreateSymbols {
|
||||
currentVersion,
|
||||
systemModules);
|
||||
break;
|
||||
}
|
||||
case "build-javadoc-data": {
|
||||
String ctDescriptionFileExtra;
|
||||
String ctDescriptionFile;
|
||||
String targetDir;
|
||||
int startVersion;
|
||||
|
||||
if (args.length == 4) {
|
||||
ctDescriptionFileExtra = null;
|
||||
ctDescriptionFile = args[1];
|
||||
targetDir = args[2];
|
||||
startVersion = Integer.parseInt(args[3]);
|
||||
} else if (args.length == 5) {
|
||||
ctDescriptionFileExtra = args[1];
|
||||
ctDescriptionFile = args[2];
|
||||
targetDir = args[3];
|
||||
startVersion = Integer.parseInt(args[4]);
|
||||
} else {
|
||||
help();
|
||||
return ;
|
||||
}
|
||||
|
||||
if (startVersion < 9) {
|
||||
System.err.println("The start version must be at least 9!");
|
||||
return ;
|
||||
}
|
||||
|
||||
new CreateSymbols().createJavadocData(ctDescriptionFileExtra,
|
||||
ctDescriptionFile,
|
||||
targetDir,
|
||||
startVersion);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* 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
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package build.tools.symbolgenerator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Arrays;
|
||||
import java.util.Deque;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.lang.model.element.ModuleElement.ExportsDirective;
|
||||
import javax.lang.model.util.Elements;
|
||||
import javax.tools.JavaCompiler;
|
||||
|
||||
import com.sun.tools.javac.api.JavacTaskImpl;
|
||||
import com.sun.tools.javac.api.JavacTool;
|
||||
import com.sun.tools.javac.code.Source;
|
||||
import com.sun.tools.javac.code.Symbol.ModuleSymbol;
|
||||
import com.sun.tools.javac.jvm.Target;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import javax.lang.model.element.ModuleElement;
|
||||
|
||||
/**
|
||||
* Generate list of modules and packages in the current release.
|
||||
* Used by the javadoc tool.
|
||||
*/
|
||||
public class JavadocElementList {
|
||||
|
||||
private static void help() {
|
||||
System.err.println("java JavadocElementList <target-file> <module-source-path> <root-modules>");
|
||||
}
|
||||
|
||||
public static void main(String... args) throws IOException {
|
||||
if (args.length < 2) {
|
||||
help();
|
||||
return ;
|
||||
}
|
||||
|
||||
JavaCompiler compiler = JavacTool.create();
|
||||
List<String> options = List.of("-source", Source.DEFAULT.name,
|
||||
"-target", Target.DEFAULT.name,
|
||||
"-proc:only",
|
||||
"--system", "none",
|
||||
"--module-source-path", args[1],
|
||||
"--add-modules", Arrays.stream(args)
|
||||
.skip(2)
|
||||
.collect(Collectors.joining(",")));
|
||||
List<String> jlObjectList = List.of("java.lang.Object");
|
||||
JavacTaskImpl task = (JavacTaskImpl) compiler.getTask(null, null, null, options, jlObjectList, null);
|
||||
task.enter();
|
||||
Elements elements = task.getElements();
|
||||
Deque<String> todo = new ArrayDeque<>();
|
||||
Arrays.stream(args).skip(2).forEach(todo::add);
|
||||
|
||||
todo.add("java.base");
|
||||
|
||||
Map<String, Set<String>> modulesAndExports = new TreeMap<>();
|
||||
|
||||
while (!todo.isEmpty()) {
|
||||
String current = todo.removeFirst();
|
||||
|
||||
if (modulesAndExports.containsKey(current))
|
||||
continue;
|
||||
|
||||
ModuleSymbol mod = (ModuleSymbol) elements.getModuleElement(current);
|
||||
|
||||
if (mod == null) {
|
||||
throw new IllegalStateException("Missing: " + current);
|
||||
}
|
||||
|
||||
//use the internal structure to avoid unnecesarily completing the symbol using the UsesProvidesVisitor:
|
||||
modulesAndExports.put(mod.getQualifiedName().toString(),
|
||||
mod.exports
|
||||
.stream()
|
||||
.filter((ExportsDirective ed) -> ed.getTargetModules() == null)
|
||||
.map((ExportsDirective ed) -> ed.getPackage().getQualifiedName().toString())
|
||||
.collect(Collectors.toCollection(() -> new TreeSet<>()))
|
||||
);
|
||||
for (ModuleElement.RequiresDirective rd : mod.requires) {
|
||||
if (rd.isTransitive()) {
|
||||
todo.offerLast(rd.getDependency().getQualifiedName().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Path targetFile = Paths.get(args[0]);
|
||||
|
||||
Files.createDirectories(targetFile.getParent());
|
||||
|
||||
try (Writer w = Files.newBufferedWriter(targetFile);
|
||||
PrintWriter out = new PrintWriter(w)) {
|
||||
for (Entry<String, Set<String>> moduleAndExports : modulesAndExports.entrySet()) {
|
||||
out.write("module:" + moduleAndExports.getKey());
|
||||
out.write("\n");
|
||||
for (String pack : moduleAndExports.getValue()) {
|
||||
out.write(pack);
|
||||
out.write("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -182,12 +182,16 @@ endif
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_NET_PROPERTIES, \
|
||||
FILES := $(TOPDIR)/src/java.base/share/conf/net.properties, \
|
||||
DEST := $(CONF_DST_DIR), \
|
||||
))
|
||||
NET_PROPERTIES_SRCS := $(TOPDIR)/src/java.base/share/conf/net.properties \
|
||||
$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/net.properties
|
||||
|
||||
TARGETS += $(COPY_NET_PROPERTIES)
|
||||
NET_PROPERTIES_DST := $(CONF_DST_DIR)/net.properties
|
||||
|
||||
$(NET_PROPERTIES_DST): $(NET_PROPERTIES_SRCS)
|
||||
$(call MakeTargetDir)
|
||||
$(CAT) $(NET_PROPERTIES_SRCS) > $@
|
||||
|
||||
TARGETS += $(NET_PROPERTIES_DST)
|
||||
|
||||
ifeq ($(call isTargetOs, linux), true)
|
||||
$(eval $(call SetupCopyFiles, COPY_SDP_CONF, \
|
||||
|
||||
@@ -29,7 +29,7 @@ GENDATA_TZDB :=
|
||||
# Time zone data file creation
|
||||
#
|
||||
TZDATA_DIR := $(TOPDIR)/make/data/tzdata
|
||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera gmt jdk11_backward
|
||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
|
||||
TZDATA_TZFILES := $(addprefix $(TZDATA_DIR)/,$(TZDATA_TZFILE))
|
||||
|
||||
GENDATA_TZDB_DAT := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/tzdb.dat
|
||||
|
||||
@@ -60,6 +60,12 @@ ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )
|
||||
CPP_FLAGS += -x c
|
||||
else ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||
CPP_FLAGS += -nologo
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU),aarch64)
|
||||
# cl.exe does only recognize few file extensions as valid (ex: .c, .h, .cpp), so
|
||||
# make sure *.java.template files are recognized as valid input files
|
||||
CPP_FILEPREFIX = -Tc
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generate a java source file from a template through the C preprocessor for the
|
||||
@@ -73,7 +79,7 @@ define generate-preproc-src
|
||||
$(call MakeDir, $(@D))
|
||||
$(call ExecuteWithLog, $(SUPPORT_OUTPUTDIR)/gensrc/java.base/_$(@F), \
|
||||
( $(NAWK) '/@@END_COPYRIGHT@@/{exit}1' $< && \
|
||||
$(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $< \
|
||||
$(CPP) $(CPP_FLAGS) $(SYSROOT_CFLAGS) $(CFLAGS_JDKLIB) $(CPP_FILEPREFIX) $< \
|
||||
2> >($(GREP) -v '^$(<F)$$' >&2) \
|
||||
| $(NAWK) '/@@START_HERE@@/,0' \
|
||||
| $(SED) -e 's/@@START_HERE@@/\/\/ AUTOMATICALLY GENERATED FILE - DO NOT EDIT/' \
|
||||
|
||||
97
make/modules/jdk.javadoc/Gendata.gmk
Normal file
97
make/modules/jdk.javadoc/Gendata.gmk
Normal file
@@ -0,0 +1,97 @@
|
||||
#
|
||||
# Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# 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.
|
||||
#
|
||||
|
||||
include JavaCompilation.gmk
|
||||
include Modules.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
$(eval $(call IncludeCustomExtension, modules/jdk.javadoc/Gendata.gmk))
|
||||
|
||||
# This is needed to properly setup DOCS_MODULES.
|
||||
$(eval $(call ReadImportMetaData))
|
||||
|
||||
JAVADOC_MODULES := $(DOCS_MODULES)
|
||||
|
||||
# Get the complete module source path:
|
||||
JAVADOC_MODULESOURCEPATH := $(call GetModuleSrcPath)
|
||||
|
||||
CT_DATA_DESCRIPTION += $(TOPDIR)/make/data/symbols/symbols
|
||||
|
||||
COMPILECREATESYMBOLS_ADD_EXPORTS := \
|
||||
--add-exports java.base/jdk.internal=java.compiler.interim,jdk.compiler.interim \
|
||||
--add-exports jdk.compiler.interim/com.sun.tools.javac.api=ALL-UNNAMED \
|
||||
--add-exports jdk.compiler.interim/com.sun.tools.javac.code=ALL-UNNAMED \
|
||||
--add-exports jdk.compiler.interim/com.sun.tools.javac.util=ALL-UNNAMED \
|
||||
--add-exports jdk.compiler.interim/com.sun.tools.javac.jvm=ALL-UNNAMED \
|
||||
#
|
||||
|
||||
$(eval $(call SetupJavaCompilation, COMPILE_CREATE_SYMBOLS, \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \
|
||||
SRC := $(TOPDIR)/make/langtools/src/classes \
|
||||
$(TOPDIR)/src/jdk.jdeps/share/classes, \
|
||||
INCLUDES := build/tools/symbolgenerator com/sun/tools/classfile, \
|
||||
BIN := $(BUILDTOOLS_OUTPUTDIR)/create_symbols, \
|
||||
DISABLED_WARNINGS := options, \
|
||||
JAVAC_FLAGS := \
|
||||
$(INTERIM_LANGTOOLS_ARGS) \
|
||||
--patch-module java.base=$(BUILDTOOLS_OUTPUTDIR)/gensrc/java.base.interim \
|
||||
$(COMPILECREATESYMBOLS_ADD_EXPORTS), \
|
||||
))
|
||||
|
||||
$(SUPPORT_OUTPUTDIR)/javadoc-symbols/symbols: \
|
||||
$(COMPILE_CREATE_SYMBOLS) \
|
||||
$(wildcard $(TOPDIR)/make/data/symbols/*) \
|
||||
$(MODULE_INFOS)
|
||||
$(RM) -r $(@D)
|
||||
$(MKDIR) -p $(@D)
|
||||
$(ECHO) Creating javadoc element list
|
||||
$(JAVA_SMALL) $(INTERIM_LANGTOOLS_ARGS) \
|
||||
$(COMPILECREATESYMBOLS_ADD_EXPORTS) \
|
||||
-classpath $(BUILDTOOLS_OUTPUTDIR)/create_symbols \
|
||||
build.tools.symbolgenerator.CreateSymbols \
|
||||
build-javadoc-data \
|
||||
$(CT_DATA_DESCRIPTION) \
|
||||
$(JDK_OUTPUTDIR)/modules/jdk.javadoc/jdk/javadoc/internal/doclets/toolkit/resources/releases \
|
||||
11
|
||||
$(JAVA_SMALL) $(INTERIM_LANGTOOLS_ARGS) \
|
||||
$(COMPILECREATESYMBOLS_ADD_EXPORTS) \
|
||||
-classpath $(BUILDTOOLS_OUTPUTDIR)/create_symbols \
|
||||
build.tools.symbolgenerator.JavadocElementList \
|
||||
$(JDK_OUTPUTDIR)/modules/jdk.javadoc/jdk/javadoc/internal/doclets/toolkit/resources/releases/element-list-$(JDK_SOURCE_TARGET_VERSION).txt \
|
||||
$(JAVADOC_MODULESOURCEPATH) \
|
||||
$(JAVADOC_MODULES)
|
||||
$(TOUCH) $@
|
||||
|
||||
# Copy ct.sym to the modules libs dir
|
||||
$(eval $(call SetupCopyFiles, COPY_TO_LIBS, \
|
||||
FILES := $(SUPPORT_OUTPUTDIR)/javadoc-symbols/*.txt, \
|
||||
DEST := $(JDK_OUTPUTDIR)/modules/jdk.javadoc/jdk/javadoc/internal/doclets/toolkit/resources/releases, \
|
||||
))
|
||||
|
||||
TARGETS += $(SUPPORT_OUTPUTDIR)/javadoc-symbols/symbols
|
||||
|
||||
################################################################################
|
||||
@@ -63,7 +63,7 @@ if [ ! -f symbols ] ; then
|
||||
exit 1
|
||||
fi;
|
||||
|
||||
if [ "`hg status .`x" != "x" ] ; then
|
||||
if [ "`git status --porcelain=v1 .`x" != "x" ] ; then
|
||||
echo "The make/data/symbols directory contains local changes!" >&2
|
||||
exit 1
|
||||
fi;
|
||||
|
||||
@@ -90,11 +90,10 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
|
||||
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
|
||||
SMALL_JAVA := false, \
|
||||
CLASSPATH := $(MICROBENCHMARK_CLASSPATH), \
|
||||
DISABLED_WARNINGS := processing rawtypes cast serial preview, \
|
||||
DISABLED_WARNINGS := processing rawtypes cast serial, \
|
||||
SRC := $(MICROBENCHMARK_SRC), \
|
||||
BIN := $(MICROBENCHMARK_CLASSES), \
|
||||
JAVA_FLAGS := --add-modules jdk.unsupported --limit-modules java.management, \
|
||||
JAVAC_FLAGS := --enable-preview, \
|
||||
))
|
||||
|
||||
$(BUILD_JDK_MICROBENCHMARK): $(JMH_COMPILE_JARS)
|
||||
|
||||
53
modules.list
Normal file
53
modules.list
Normal file
@@ -0,0 +1,53 @@
|
||||
java.base,
|
||||
java.compiler,
|
||||
java.datatransfer,
|
||||
java.desktop,
|
||||
java.instrument,
|
||||
java.logging,
|
||||
java.management,
|
||||
java.management.rmi,
|
||||
java.naming,
|
||||
java.net.http,
|
||||
java.prefs,
|
||||
java.rmi,
|
||||
java.scripting,
|
||||
java.se,
|
||||
java.security.jgss,
|
||||
java.security.sasl,
|
||||
java.smartcardio,
|
||||
java.sql,
|
||||
java.sql.rowset,
|
||||
java.transaction.xa,
|
||||
java.xml,
|
||||
java.xml.crypto,
|
||||
jdk.accessibility,
|
||||
jdk.aot,
|
||||
jdk.charsets,
|
||||
jdk.compiler,
|
||||
jdk.crypto.cryptoki,
|
||||
jdk.crypto.ec,
|
||||
jdk.dynalink,
|
||||
jdk.httpserver,
|
||||
jdk.internal.ed,
|
||||
jdk.internal.le,
|
||||
jdk.internal.vm.ci,
|
||||
jdk.internal.vm.compiler,
|
||||
jdk.internal.vm.compiler.management,
|
||||
jdk.jdi,
|
||||
jdk.jdwp.agent,
|
||||
jdk.jfr,
|
||||
jdk.jsobject,
|
||||
jdk.localedata,
|
||||
jdk.management,
|
||||
jdk.management.agent,
|
||||
jdk.management.jfr,
|
||||
jdk.naming.dns,
|
||||
jdk.naming.rmi,
|
||||
jdk.net,
|
||||
jdk.sctp,
|
||||
jdk.security.auth,
|
||||
jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs,
|
||||
jdk.hotspot.agent
|
||||
@@ -1,4 +1,7 @@
|
||||
import os
|
||||
import random
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
AARCH64_AS = "as"
|
||||
AARCH64_OBJDUMP = "objdump"
|
||||
@@ -13,6 +16,8 @@ class Register(Operand):
|
||||
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 30)
|
||||
if self.number == 18:
|
||||
self.number = 17
|
||||
return self
|
||||
|
||||
def astr(self, prefix):
|
||||
@@ -37,6 +42,8 @@ class GeneralRegisterOrZr(Register):
|
||||
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 31)
|
||||
if self.number == 18:
|
||||
self.number = 16
|
||||
return self
|
||||
|
||||
def astr(self, prefix = ""):
|
||||
@@ -54,6 +61,8 @@ class GeneralRegisterOrZr(Register):
|
||||
class GeneralRegisterOrSp(Register):
|
||||
def generate(self):
|
||||
self.number = random.randint(0, 31)
|
||||
if self.number == 18:
|
||||
self.number = 15
|
||||
return self
|
||||
|
||||
def astr(self, prefix = ""):
|
||||
@@ -123,6 +132,8 @@ class OperandFactory:
|
||||
|
||||
_modes = {'x' : GeneralRegister,
|
||||
'w' : GeneralRegister,
|
||||
'b' : FloatRegister,
|
||||
'h' : FloatRegister,
|
||||
's' : FloatRegister,
|
||||
'd' : FloatRegister,
|
||||
'z' : FloatZero,
|
||||
@@ -192,16 +203,16 @@ class InstructionWithModes(Instruction):
|
||||
self.isFloat = (mode == 'd') | (mode == 's')
|
||||
if self.isFloat:
|
||||
self.isWord = mode != 'd'
|
||||
self.asmRegPrefix = ["d", "s"][self.isWord]
|
||||
self.asmRegPrefix = ["d", "s"][self.isWord]
|
||||
else:
|
||||
self.isWord = mode != 'x'
|
||||
self.asmRegPrefix = ["x", "w"][self.isWord]
|
||||
|
||||
|
||||
def name(self):
|
||||
return self._name + (self.mode if self.mode != 'x' else '')
|
||||
|
||||
|
||||
def aname(self):
|
||||
return (self._name+mode if (mode == 'b' or mode == 'h')
|
||||
return (self._name+mode if (mode == 'b' or mode == 'h')
|
||||
else self._name)
|
||||
|
||||
class ThreeRegInstruction(Instruction):
|
||||
@@ -214,17 +225,17 @@ class ThreeRegInstruction(Instruction):
|
||||
|
||||
def cstr(self):
|
||||
return (super(ThreeRegInstruction, self).cstr()
|
||||
+ ('%s, %s, %s'
|
||||
+ ('%s, %s, %s'
|
||||
% (self.reg[0],
|
||||
self.reg[1], self.reg[2])))
|
||||
|
||||
|
||||
def astr(self):
|
||||
prefix = self.asmRegPrefix
|
||||
return (super(ThreeRegInstruction, self).astr()
|
||||
+ ('%s, %s, %s'
|
||||
+ ('%s, %s, %s'
|
||||
% (self.reg[0].astr(prefix),
|
||||
self.reg[1].astr(prefix), self.reg[2].astr(prefix))))
|
||||
|
||||
|
||||
class FourRegInstruction(ThreeRegInstruction):
|
||||
|
||||
def generate(self):
|
||||
@@ -235,12 +246,12 @@ class FourRegInstruction(ThreeRegInstruction):
|
||||
def cstr(self):
|
||||
return (super(FourRegInstruction, self).cstr()
|
||||
+ (', %s' % self.reg[3]))
|
||||
|
||||
|
||||
def astr(self):
|
||||
prefix = self.asmRegPrefix
|
||||
return (super(FourRegInstruction, self).astr()
|
||||
+ (', %s' % self.reg[3].astr(prefix)))
|
||||
|
||||
|
||||
class TwoRegInstruction(Instruction):
|
||||
|
||||
def generate(self):
|
||||
@@ -255,17 +266,17 @@ class TwoRegInstruction(Instruction):
|
||||
def astr(self):
|
||||
prefix = self.asmRegPrefix
|
||||
return (super(TwoRegInstruction, self).astr()
|
||||
+ ('%s, %s'
|
||||
+ ('%s, %s'
|
||||
% (self.reg[0].astr(prefix),
|
||||
self.reg[1].astr(prefix))))
|
||||
|
||||
|
||||
class TwoRegImmedInstruction(TwoRegInstruction):
|
||||
|
||||
def generate(self):
|
||||
super(TwoRegImmedInstruction, self).generate()
|
||||
self.immed = random.randint(0, 1<<11 -1)
|
||||
return self
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return (super(TwoRegImmedInstruction, self).cstr()
|
||||
+ ', %su' % self.immed)
|
||||
@@ -295,9 +306,9 @@ class ArithOp(ThreeRegInstruction):
|
||||
self.kind = ShiftKind().generate()
|
||||
self.distance = random.randint(0, (1<<5)-1 if self.isWord else (1<<6)-1)
|
||||
return self
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return ('%s, Assembler::%s, %s);'
|
||||
return ('%s, Assembler::%s, %s);'
|
||||
% (ThreeRegInstruction.cstr(self),
|
||||
self.kind.cstr(), self.distance))
|
||||
|
||||
@@ -308,9 +319,9 @@ class ArithOp(ThreeRegInstruction):
|
||||
self.distance))
|
||||
|
||||
class AddSubCarryOp(ThreeRegInstruction):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return ('%s);'
|
||||
return ('%s);'
|
||||
% (ThreeRegInstruction.cstr(self)))
|
||||
|
||||
class AddSubExtendedOp(ThreeRegInstruction):
|
||||
@@ -326,76 +337,75 @@ class AddSubExtendedOp(ThreeRegInstruction):
|
||||
|
||||
def cstr(self):
|
||||
return (super(AddSubExtendedOp, self).cstr()
|
||||
+ (", ext::" + AddSubExtendedOp.optNames[self.option]
|
||||
+ (", ext::" + AddSubExtendedOp.optNames[self.option]
|
||||
+ ", " + str(self.amount) + ");"))
|
||||
|
||||
|
||||
def astr(self):
|
||||
return (super(AddSubExtendedOp, self).astr()
|
||||
+ (", " + AddSubExtendedOp.optNames[self.option]
|
||||
+ (", " + AddSubExtendedOp.optNames[self.option]
|
||||
+ " #" + str(self.amount)))
|
||||
|
||||
class AddSubImmOp(TwoRegImmedInstruction):
|
||||
|
||||
def cstr(self):
|
||||
return super(AddSubImmOp, self).cstr() + ");"
|
||||
|
||||
|
||||
class LogicalImmOp(AddSubImmOp):
|
||||
|
||||
# These tables are legal immediate logical operands
|
||||
immediates32 \
|
||||
= [0x1, 0x3f, 0x1f0, 0x7e0,
|
||||
0x1c00, 0x3ff0, 0x8000, 0x1e000,
|
||||
0x3e000, 0x78000, 0xe0000, 0x100000,
|
||||
0x1fffe0, 0x3fe000, 0x780000, 0x7ffff8,
|
||||
0xff8000, 0x1800180, 0x1fffc00, 0x3c003c0,
|
||||
0x3ffff00, 0x7c00000, 0x7fffe00, 0xf000f00,
|
||||
0xfffe000, 0x18181818, 0x1ffc0000, 0x1ffffffe,
|
||||
0x3f003f00, 0x3fffe000, 0x60006000, 0x7f807f80,
|
||||
0x7ffffc00, 0x800001ff, 0x803fffff, 0x9f9f9f9f,
|
||||
0xc0000fff, 0xc0c0c0c0, 0xe0000000, 0xe003e003,
|
||||
0xe3ffffff, 0xf0000fff, 0xf0f0f0f0, 0xf80000ff,
|
||||
0xf83ff83f, 0xfc00007f, 0xfc1fffff, 0xfe0001ff,
|
||||
0xfe3fffff, 0xff003fff, 0xff800003, 0xff87ff87,
|
||||
0xffc00fff, 0xffe0000f, 0xffefffef, 0xfff1fff1,
|
||||
0xfff83fff, 0xfffc0fff, 0xfffe0fff, 0xffff3fff,
|
||||
0xffffc007, 0xffffe1ff, 0xfffff80f, 0xfffffe07,
|
||||
= [0x1, 0x3f, 0x1f0, 0x7e0,
|
||||
0x1c00, 0x3ff0, 0x8000, 0x1e000,
|
||||
0x3e000, 0x78000, 0xe0000, 0x100000,
|
||||
0x1fffe0, 0x3fe000, 0x780000, 0x7ffff8,
|
||||
0xff8000, 0x1800180, 0x1fffc00, 0x3c003c0,
|
||||
0x3ffff00, 0x7c00000, 0x7fffe00, 0xf000f00,
|
||||
0xfffe000, 0x18181818, 0x1ffc0000, 0x1ffffffe,
|
||||
0x3f003f00, 0x3fffe000, 0x60006000, 0x7f807f80,
|
||||
0x7ffffc00, 0x800001ff, 0x803fffff, 0x9f9f9f9f,
|
||||
0xc0000fff, 0xc0c0c0c0, 0xe0000000, 0xe003e003,
|
||||
0xe3ffffff, 0xf0000fff, 0xf0f0f0f0, 0xf80000ff,
|
||||
0xf83ff83f, 0xfc00007f, 0xfc1fffff, 0xfe0001ff,
|
||||
0xfe3fffff, 0xff003fff, 0xff800003, 0xff87ff87,
|
||||
0xffc00fff, 0xffe0000f, 0xffefffef, 0xfff1fff1,
|
||||
0xfff83fff, 0xfffc0fff, 0xfffe0fff, 0xffff3fff,
|
||||
0xffffc007, 0xffffe1ff, 0xfffff80f, 0xfffffe07,
|
||||
0xffffffbf, 0xfffffffd]
|
||||
|
||||
immediates \
|
||||
= [0x1, 0x1f80, 0x3fff0, 0x3ffffc,
|
||||
0x3fe0000, 0x1ffc0000, 0xf8000000, 0x3ffffc000,
|
||||
0xffffffe00, 0x3ffffff800, 0xffffc00000, 0x3f000000000,
|
||||
0x7fffffff800, 0x1fe000001fe0, 0x3ffffff80000, 0xc00000000000,
|
||||
0x1ffc000000000, 0x3ffff0003ffff, 0x7ffffffe00000, 0xfffffffffc000,
|
||||
0x1ffffffffffc00, 0x3fffffffffff00, 0x7ffffffffffc00, 0xffffffffff8000,
|
||||
0x1ffffffff800000, 0x3fffffc03fffffc, 0x7fffc0000000000, 0xff80ff80ff80ff8,
|
||||
0x1c00000000000000, 0x1fffffffffff0000, 0x3fffff803fffff80, 0x7fc000007fc00000,
|
||||
0x8000000000000000, 0x803fffff803fffff, 0xc000007fc000007f, 0xe00000000000ffff,
|
||||
0xe3ffffffffffffff, 0xf007f007f007f007, 0xf80003ffffffffff, 0xfc000003fc000003,
|
||||
0xfe000000007fffff, 0xff00000000007fff, 0xff800000000003ff, 0xffc00000000000ff,
|
||||
0xffe00000000003ff, 0xfff0000000003fff, 0xfff80000001fffff, 0xfffc0000fffc0000,
|
||||
0xfffe003fffffffff, 0xffff3fffffffffff, 0xffffc0000007ffff, 0xffffe01fffffe01f,
|
||||
0xfffff800000007ff, 0xfffffc0fffffffff, 0xffffff00003fffff, 0xffffffc0000007ff,
|
||||
0xfffffff0000001ff, 0xfffffffc00003fff, 0xffffffff07ffffff, 0xffffffffe003ffff,
|
||||
= [0x1, 0x1f80, 0x3fff0, 0x3ffffc,
|
||||
0x3fe0000, 0x1ffc0000, 0xf8000000, 0x3ffffc000,
|
||||
0xffffffe00, 0x3ffffff800, 0xffffc00000, 0x3f000000000,
|
||||
0x7fffffff800, 0x1fe000001fe0, 0x3ffffff80000, 0xc00000000000,
|
||||
0x1ffc000000000, 0x3ffff0003ffff, 0x7ffffffe00000, 0xfffffffffc000,
|
||||
0x1ffffffffffc00, 0x3fffffffffff00, 0x7ffffffffffc00, 0xffffffffff8000,
|
||||
0x1ffffffff800000, 0x3fffffc03fffffc, 0x7fffc0000000000, 0xff80ff80ff80ff8,
|
||||
0x1c00000000000000, 0x1fffffffffff0000, 0x3fffff803fffff80, 0x7fc000007fc00000,
|
||||
0x8000000000000000, 0x803fffff803fffff, 0xc000007fc000007f, 0xe00000000000ffff,
|
||||
0xe3ffffffffffffff, 0xf007f007f007f007, 0xf80003ffffffffff, 0xfc000003fc000003,
|
||||
0xfe000000007fffff, 0xff00000000007fff, 0xff800000000003ff, 0xffc00000000000ff,
|
||||
0xffe00000000003ff, 0xfff0000000003fff, 0xfff80000001fffff, 0xfffc0000fffc0000,
|
||||
0xfffe003fffffffff, 0xffff3fffffffffff, 0xffffc0000007ffff, 0xffffe01fffffe01f,
|
||||
0xfffff800000007ff, 0xfffffc0fffffffff, 0xffffff00003fffff, 0xffffffc0000007ff,
|
||||
0xfffffff0000001ff, 0xfffffffc00003fff, 0xffffffff07ffffff, 0xffffffffe003ffff,
|
||||
0xfffffffffc01ffff, 0xffffffffffc00003, 0xfffffffffffc000f, 0xffffffffffffe07f]
|
||||
|
||||
def generate(self):
|
||||
AddSubImmOp.generate(self)
|
||||
self.immed = \
|
||||
self.immediates32[random.randint(0, len(self.immediates32)-1)] \
|
||||
if self.isWord \
|
||||
else \
|
||||
self.immediates[random.randint(0, len(self.immediates)-1)]
|
||||
|
||||
if self.isWord else \
|
||||
self.immediates[random.randint(0, len(self.immediates)-1)]
|
||||
|
||||
return self
|
||||
|
||||
|
||||
def astr(self):
|
||||
return (super(TwoRegImmedInstruction, self).astr()
|
||||
+ ', #0x%x' % self.immed)
|
||||
|
||||
def cstr(self):
|
||||
return super(AddSubImmOp, self).cstr() + "ll);"
|
||||
|
||||
|
||||
class MultiOp():
|
||||
|
||||
def multipleForms(self):
|
||||
@@ -416,9 +426,9 @@ class AbsOp(MultiOp, Instruction):
|
||||
return Instruction.astr(self) + "%s"
|
||||
|
||||
class RegAndAbsOp(MultiOp, Instruction):
|
||||
|
||||
|
||||
def multipleForms(self):
|
||||
if self.name() == "adrp":
|
||||
if self.name() == "adrp":
|
||||
# We can only test one form of adrp because anything other
|
||||
# than "adrp ." requires relocs in the assembler output
|
||||
return 1
|
||||
@@ -428,11 +438,11 @@ class RegAndAbsOp(MultiOp, Instruction):
|
||||
Instruction.generate(self)
|
||||
self.reg = GeneralRegister().generate()
|
||||
return self
|
||||
|
||||
|
||||
def cstr(self):
|
||||
if self.name() == "adrp":
|
||||
return "__ _adrp(" + "%s, %s);" % (self.reg, "%s")
|
||||
return (super(RegAndAbsOp, self).cstr()
|
||||
return (super(RegAndAbsOp, self).cstr()
|
||||
+ "%s, %s);" % (self.reg, "%s"))
|
||||
|
||||
def astr(self):
|
||||
@@ -440,14 +450,14 @@ class RegAndAbsOp(MultiOp, Instruction):
|
||||
+ self.reg.astr(self.asmRegPrefix) + ", %s")
|
||||
|
||||
class RegImmAbsOp(RegAndAbsOp):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return (Instruction.cstr(self)
|
||||
+ "%s, %s, %s);" % (self.reg, self.immed, "%s"))
|
||||
|
||||
def astr(self):
|
||||
return (Instruction.astr(self)
|
||||
+ ("%s, #%s, %s"
|
||||
+ ("%s, #%s, %s"
|
||||
% (self.reg.astr(self.asmRegPrefix), self.immed, "%s")))
|
||||
|
||||
def generate(self):
|
||||
@@ -456,7 +466,7 @@ class RegImmAbsOp(RegAndAbsOp):
|
||||
return self
|
||||
|
||||
class MoveWideImmOp(RegImmAbsOp):
|
||||
|
||||
|
||||
def multipleForms(self):
|
||||
return 0
|
||||
|
||||
@@ -466,8 +476,8 @@ class MoveWideImmOp(RegImmAbsOp):
|
||||
|
||||
def astr(self):
|
||||
return (Instruction.astr(self)
|
||||
+ ("%s, #%s, lsl %s"
|
||||
% (self.reg.astr(self.asmRegPrefix),
|
||||
+ ("%s, #%s, lsl %s"
|
||||
% (self.reg.astr(self.asmRegPrefix),
|
||||
self.immed, self.shift)))
|
||||
|
||||
def generate(self):
|
||||
@@ -480,7 +490,7 @@ class MoveWideImmOp(RegImmAbsOp):
|
||||
return self
|
||||
|
||||
class BitfieldOp(TwoRegInstruction):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return (Instruction.cstr(self)
|
||||
+ ("%s, %s, %s, %s);"
|
||||
@@ -507,16 +517,16 @@ class ExtractOp(ThreeRegInstruction):
|
||||
def cstr(self):
|
||||
return (ThreeRegInstruction.cstr(self)
|
||||
+ (", %s);" % self.lsb))
|
||||
|
||||
|
||||
def astr(self):
|
||||
return (ThreeRegInstruction.astr(self)
|
||||
+ (", #%s" % self.lsb))
|
||||
|
||||
|
||||
class CondBranchOp(MultiOp, Instruction):
|
||||
|
||||
def cstr(self):
|
||||
return "__ br(Assembler::" + self.name() + ", %s);"
|
||||
|
||||
|
||||
def astr(self):
|
||||
return "b." + self.name() + "\t%s"
|
||||
|
||||
@@ -524,10 +534,10 @@ class ImmOp(Instruction):
|
||||
|
||||
def cstr(self):
|
||||
return "%s%s);" % (Instruction.cstr(self), self.immed)
|
||||
|
||||
|
||||
def astr(self):
|
||||
return Instruction.astr(self) + "#" + str(self.immed)
|
||||
|
||||
|
||||
def generate(self):
|
||||
self.immed = random.randint(0, 1<<16 -1)
|
||||
return self
|
||||
@@ -536,6 +546,8 @@ class Op(Instruction):
|
||||
|
||||
def cstr(self):
|
||||
return Instruction.cstr(self) + ");"
|
||||
def astr(self):
|
||||
return self.aname();
|
||||
|
||||
class SystemOp(Instruction):
|
||||
|
||||
@@ -567,11 +579,11 @@ class ConditionalCompareOp(TwoRegImmedInstruction):
|
||||
return self
|
||||
|
||||
def cstr(self):
|
||||
return (super(ConditionalCompareOp, self).cstr() + ", "
|
||||
return (super(ConditionalCompareOp, self).cstr() + ", "
|
||||
+ "Assembler::" + conditionCodes[self.cond] + ");")
|
||||
|
||||
def astr(self):
|
||||
return (super(ConditionalCompareOp, self).astr() +
|
||||
return (super(ConditionalCompareOp, self).astr() +
|
||||
", " + conditionCodes[self.cond])
|
||||
|
||||
class ConditionalCompareImmedOp(Instruction):
|
||||
@@ -590,33 +602,33 @@ class ConditionalCompareImmedOp(Instruction):
|
||||
+ "Assembler::" + conditionCodes[self.cond] + ");")
|
||||
|
||||
def astr(self):
|
||||
return (Instruction.astr(self)
|
||||
+ self.reg.astr(self.asmRegPrefix)
|
||||
return (Instruction.astr(self)
|
||||
+ self.reg.astr(self.asmRegPrefix)
|
||||
+ ", #" + str(self.immed)
|
||||
+ ", #" + str(self.immed2)
|
||||
+ ", " + conditionCodes[self.cond])
|
||||
|
||||
class TwoRegOp(TwoRegInstruction):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return TwoRegInstruction.cstr(self) + ");"
|
||||
|
||||
class ThreeRegOp(ThreeRegInstruction):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return ThreeRegInstruction.cstr(self) + ");"
|
||||
|
||||
class FourRegMulOp(FourRegInstruction):
|
||||
|
||||
|
||||
def cstr(self):
|
||||
return FourRegInstruction.cstr(self) + ");"
|
||||
|
||||
def astr(self):
|
||||
isMaddsub = self.name().startswith("madd") | self.name().startswith("msub")
|
||||
midPrefix = self.asmRegPrefix if isMaddsub else "w"
|
||||
return (Instruction.astr(self)
|
||||
+ self.reg[0].astr(self.asmRegPrefix)
|
||||
+ ", " + self.reg[1].astr(midPrefix)
|
||||
return (Instruction.astr(self)
|
||||
+ self.reg[0].astr(self.asmRegPrefix)
|
||||
+ ", " + self.reg[1].astr(midPrefix)
|
||||
+ ", " + self.reg[2].astr(midPrefix)
|
||||
+ ", " + self.reg[3].astr(self.asmRegPrefix))
|
||||
|
||||
@@ -632,8 +644,8 @@ class ConditionalSelectOp(ThreeRegInstruction):
|
||||
+ "Assembler::" + conditionCodes[self.cond] + ");")
|
||||
|
||||
def astr(self):
|
||||
return (ThreeRegInstruction.astr(self)
|
||||
+ ", " + conditionCodes[self.cond])
|
||||
return (ThreeRegInstruction.astr(self)
|
||||
+ ", " + conditionCodes[self.cond])
|
||||
|
||||
class LoadStoreExclusiveOp(InstructionWithModes):
|
||||
|
||||
@@ -645,7 +657,7 @@ class LoadStoreExclusiveOp(InstructionWithModes):
|
||||
result = self.aname() + '\t'
|
||||
regs = list(self.regs)
|
||||
index = regs.pop() # The last reg is the index register
|
||||
prefix = ('x' if (self.mode == 'x')
|
||||
prefix = ('x' if (self.mode == 'x')
|
||||
& ((self.name().startswith("ld"))
|
||||
| (self.name().startswith("stlr"))) # Ewww :-(
|
||||
else 'w')
|
||||
@@ -692,17 +704,17 @@ class LoadStoreExclusiveOp(InstructionWithModes):
|
||||
return self._name
|
||||
|
||||
class Address(object):
|
||||
|
||||
|
||||
base_plus_unscaled_offset, pre, post, base_plus_reg, \
|
||||
base_plus_scaled_offset, pcrel, post_reg, base_only = range(8)
|
||||
kinds = ["base_plus_unscaled_offset", "pre", "post", "base_plus_reg",
|
||||
kinds = ["base_plus_unscaled_offset", "pre", "post", "base_plus_reg",
|
||||
"base_plus_scaled_offset", "pcrel", "post_reg", "base_only"]
|
||||
extend_kinds = ["uxtw", "lsl", "sxtw", "sxtx"]
|
||||
|
||||
@classmethod
|
||||
def kindToStr(cls, i):
|
||||
return cls.kinds[i]
|
||||
|
||||
|
||||
def generate(self, kind, shift_distance):
|
||||
self.kind = kind
|
||||
self.base = GeneralRegister().generate()
|
||||
@@ -732,7 +744,7 @@ class Address(object):
|
||||
Address.pcrel: "",
|
||||
Address.base_plus_reg: "Address(%s, %s, Address::%s(%s))" \
|
||||
% (self.base, self.index, self.extend_kind, self.shift_distance),
|
||||
Address.base_plus_scaled_offset:
|
||||
Address.base_plus_scaled_offset:
|
||||
"Address(%s, %s)" % (self.base, self.offset) } [self.kind]
|
||||
if (self.kind == Address.pcrel):
|
||||
result = ["__ pc()", "back", "forth"][self.offset]
|
||||
@@ -752,7 +764,7 @@ class Address(object):
|
||||
Address.base_only: "[%s]" % (self.base.astr(prefix)),
|
||||
Address.pcrel: "",
|
||||
Address.base_plus_reg: "[%s, %s, %s #%s]" \
|
||||
% (self.base.astr(prefix), self.index.astr(extend_prefix),
|
||||
% (self.base.astr(prefix), self.index.astr(extend_prefix),
|
||||
self.extend_kind, self.shift_distance),
|
||||
Address.base_plus_scaled_offset: \
|
||||
"[%s, %s]" \
|
||||
@@ -761,7 +773,7 @@ class Address(object):
|
||||
if (self.kind == Address.pcrel):
|
||||
result = [".", "back", "forth"][self.offset]
|
||||
return result
|
||||
|
||||
|
||||
class LoadStoreOp(InstructionWithModes):
|
||||
|
||||
def __init__(self, args):
|
||||
@@ -816,14 +828,14 @@ class LoadStoreOp(InstructionWithModes):
|
||||
class LoadStorePairOp(InstructionWithModes):
|
||||
|
||||
numRegs = 2
|
||||
|
||||
|
||||
def __init__(self, args):
|
||||
name, self.asmname, self.kind, mode = args
|
||||
InstructionWithModes.__init__(self, name, mode)
|
||||
self.offset = random.randint(-1<<4, 1<<4-1) << 4
|
||||
|
||||
|
||||
def generate(self):
|
||||
self.reg = [OperandFactory.create(self.mode).generate()
|
||||
self.reg = [OperandFactory.create(self.mode).generate()
|
||||
for i in range(self.numRegs)]
|
||||
self.base = OperandFactory.create('x').generate()
|
||||
kindStr = Address.kindToStr(self.kind);
|
||||
@@ -840,8 +852,8 @@ class LoadStorePairOp(InstructionWithModes):
|
||||
address = ["[%s, #%s]", "[%s, #%s]!", "[%s], #%s"][self.kind]
|
||||
address = address % (self.base.astr('x'), self.offset)
|
||||
result = "%s\t%s, %s, %s" \
|
||||
% (self.asmname,
|
||||
self.reg[0].astr(self.asmRegPrefix),
|
||||
% (self.asmname,
|
||||
self.reg[0].astr(self.asmRegPrefix),
|
||||
self.reg[1].astr(self.asmRegPrefix), address)
|
||||
return result
|
||||
|
||||
@@ -869,7 +881,7 @@ class FloatInstruction(Instruction):
|
||||
Instruction.__init__(self, name)
|
||||
|
||||
def generate(self):
|
||||
self.reg = [OperandFactory.create(self.modes[i]).generate()
|
||||
self.reg = [OperandFactory.create(self.modes[i]).generate()
|
||||
for i in range(self.numRegs)]
|
||||
return self
|
||||
|
||||
@@ -878,7 +890,7 @@ class FloatInstruction(Instruction):
|
||||
return (formatStr
|
||||
% tuple([Instruction.cstr(self)] +
|
||||
[str(self.reg[i]) for i in range(self.numRegs)])) # Yowza
|
||||
|
||||
|
||||
def astr(self):
|
||||
formatStr = "%s%s" + ''.join([", %s" for i in range(1, self.numRegs)])
|
||||
return (formatStr
|
||||
@@ -979,7 +991,7 @@ class SVEReductionOp(Instruction):
|
||||
moreReg +
|
||||
[str(self.reg[2]) + self._width.astr()])
|
||||
|
||||
class LdStSIMDOp(Instruction):
|
||||
class LdStNEONOp(Instruction):
|
||||
def __init__(self, args):
|
||||
self._name, self.regnum, self.arrangement, self.addresskind = args
|
||||
|
||||
@@ -998,7 +1010,7 @@ class LdStSIMDOp(Instruction):
|
||||
return self
|
||||
|
||||
def cstr(self):
|
||||
buf = super(LdStSIMDOp, self).cstr() + str(self._firstSIMDreg)
|
||||
buf = super(LdStNEONOp, self).cstr() + str(self._firstSIMDreg)
|
||||
current = self._firstSIMDreg
|
||||
for cnt in range(1, self.regnum):
|
||||
buf = '%s, %s' % (buf, current.nextReg())
|
||||
@@ -1016,6 +1028,57 @@ class LdStSIMDOp(Instruction):
|
||||
def aname(self):
|
||||
return self._name
|
||||
|
||||
class NEONReduceInstruction(Instruction):
|
||||
def __init__(self, args):
|
||||
self._name, self.insname, self.arrangement = args
|
||||
|
||||
def generate(self):
|
||||
current = FloatRegister().generate()
|
||||
self.dstSIMDreg = current
|
||||
self.srcSIMDreg = current.nextReg()
|
||||
return self
|
||||
|
||||
def cstr(self):
|
||||
buf = Instruction.cstr(self) + str(self.dstSIMDreg)
|
||||
buf = '%s, __ T%s, %s);' % (buf, self.arrangement, self.srcSIMDreg)
|
||||
return buf
|
||||
|
||||
def astr(self):
|
||||
buf = '%s\t%s' % (self.insname, self.dstSIMDreg.astr(self.arrangement[-1].lower()))
|
||||
buf = '%s, %s.%s' % (buf, self.srcSIMDreg, self.arrangement)
|
||||
return buf
|
||||
|
||||
def aname(self):
|
||||
return self._name
|
||||
|
||||
class CommonNEONInstruction(Instruction):
|
||||
def __init__(self, args):
|
||||
self._name, self.insname, self.arrangement = args
|
||||
|
||||
def generate(self):
|
||||
self._firstSIMDreg = FloatRegister().generate()
|
||||
return self
|
||||
|
||||
def cstr(self):
|
||||
buf = Instruction.cstr(self) + str(self._firstSIMDreg)
|
||||
buf = '%s, __ T%s' % (buf, self.arrangement)
|
||||
current = self._firstSIMDreg
|
||||
for cnt in range(1, self.numRegs):
|
||||
buf = '%s, %s' % (buf, current.nextReg())
|
||||
current = current.nextReg()
|
||||
return '%s);' % (buf)
|
||||
|
||||
def astr(self):
|
||||
buf = '%s\t%s.%s' % (self.insname, self._firstSIMDreg, self.arrangement)
|
||||
current = self._firstSIMDreg
|
||||
for cnt in range(1, self.numRegs):
|
||||
buf = '%s, %s.%s' % (buf, current.nextReg(), self.arrangement)
|
||||
current = current.nextReg()
|
||||
return buf
|
||||
|
||||
def aname(self):
|
||||
return self._name
|
||||
|
||||
class SHA512SIMDOp(Instruction):
|
||||
|
||||
def generate(self):
|
||||
@@ -1047,6 +1110,44 @@ class SHA512SIMDOp(Instruction):
|
||||
+ ('\t%s, %s, %s.2D' % (self.reg[0].astr("q"),
|
||||
self.reg[1].astr("q"), self.reg[2].astr("v"))))
|
||||
|
||||
class SHA3SIMDOp(Instruction):
|
||||
|
||||
def generate(self):
|
||||
if ((self._name == 'eor3') or (self._name == 'bcax')):
|
||||
self.reg = [FloatRegister().generate(), FloatRegister().generate(),
|
||||
FloatRegister().generate(), FloatRegister().generate()]
|
||||
else:
|
||||
self.reg = [FloatRegister().generate(), FloatRegister().generate(),
|
||||
FloatRegister().generate()]
|
||||
if (self._name == 'xar'):
|
||||
self.imm6 = random.randint(0, 63)
|
||||
return self
|
||||
|
||||
def cstr(self):
|
||||
if ((self._name == 'eor3') or (self._name == 'bcax')):
|
||||
return (super(SHA3SIMDOp, self).cstr()
|
||||
+ ('%s, __ T16B, %s, %s, %s);' % (self.reg[0], self.reg[1], self.reg[2], self.reg[3])))
|
||||
elif (self._name == 'rax1'):
|
||||
return (super(SHA3SIMDOp, self).cstr()
|
||||
+ ('%s, __ T2D, %s, %s);' % (self.reg[0], self.reg[1], self.reg[2])))
|
||||
else:
|
||||
return (super(SHA3SIMDOp, self).cstr()
|
||||
+ ('%s, __ T2D, %s, %s, %s);' % (self.reg[0], self.reg[1], self.reg[2], self.imm6)))
|
||||
|
||||
def astr(self):
|
||||
if ((self._name == 'eor3') or (self._name == 'bcax')):
|
||||
return (super(SHA3SIMDOp, self).astr()
|
||||
+ ('\t%s.16B, %s.16B, %s.16B, %s.16B' % (self.reg[0].astr("v"), self.reg[1].astr("v"),
|
||||
self.reg[2].astr("v"), self.reg[3].astr("v"))))
|
||||
elif (self._name == 'rax1'):
|
||||
return (super(SHA3SIMDOp, self).astr()
|
||||
+ ('\t%s.2D, %s.2D, %s.2D') % (self.reg[0].astr("v"), self.reg[1].astr("v"),
|
||||
self.reg[2].astr("v")))
|
||||
else:
|
||||
return (super(SHA3SIMDOp, self).astr()
|
||||
+ ('\t%s.2D, %s.2D, %s.2D, #%s') % (self.reg[0].astr("v"), self.reg[1].astr("v"),
|
||||
self.reg[2].astr("v"), self.imm6))
|
||||
|
||||
class LSEOp(Instruction):
|
||||
def __init__(self, args):
|
||||
self._name, self.asmname, self.size, self.suffix = args
|
||||
@@ -1091,6 +1192,12 @@ class FloatConvertOp(TwoRegFloatOp):
|
||||
def cname(self):
|
||||
return self._cname
|
||||
|
||||
class TwoRegNEONOp(CommonNEONInstruction):
|
||||
numRegs = 2
|
||||
|
||||
class ThreeRegNEONOp(TwoRegNEONOp):
|
||||
numRegs = 3
|
||||
|
||||
class SpecialCases(Instruction):
|
||||
def __init__(self, data):
|
||||
self._name = data[0]
|
||||
@@ -1123,6 +1230,7 @@ def generate(kind, names):
|
||||
|
||||
outfile = open("aarch64ops.s", "w")
|
||||
|
||||
# To minimize the changes of assembler test code
|
||||
random.seed(0)
|
||||
|
||||
print "// BEGIN Generated code -- do not edit"
|
||||
@@ -1133,18 +1241,18 @@ print " __ bind(back);"
|
||||
|
||||
outfile.write("back:\n")
|
||||
|
||||
generate (ArithOp,
|
||||
generate (ArithOp,
|
||||
[ "add", "sub", "adds", "subs",
|
||||
"addw", "subw", "addsw", "subsw",
|
||||
"and", "orr", "eor", "ands",
|
||||
"andw", "orrw", "eorw", "andsw",
|
||||
"bic", "orn", "eon", "bics",
|
||||
"andw", "orrw", "eorw", "andsw",
|
||||
"bic", "orn", "eon", "bics",
|
||||
"bicw", "ornw", "eonw", "bicsw" ])
|
||||
|
||||
generate (AddSubImmOp,
|
||||
generate (AddSubImmOp,
|
||||
[ "addw", "addsw", "subw", "subsw",
|
||||
"add", "adds", "sub", "subs"])
|
||||
generate (LogicalImmOp,
|
||||
generate (LogicalImmOp,
|
||||
[ "andw", "orrw", "eorw", "andsw",
|
||||
"and", "orr", "eor", "ands"])
|
||||
|
||||
@@ -1185,26 +1293,26 @@ for mode in 'xw':
|
||||
["stxp", mode, 4], ["stlxp", mode, 4]])
|
||||
|
||||
for kind in range(6):
|
||||
print "\n// " + Address.kindToStr(kind),
|
||||
sys.stdout.write("\n// " + Address.kindToStr(kind))
|
||||
if kind != Address.pcrel:
|
||||
generate (LoadStoreOp,
|
||||
[["str", "str", kind, "x"], ["str", "str", kind, "w"],
|
||||
generate (LoadStoreOp,
|
||||
[["str", "str", kind, "x"], ["str", "str", kind, "w"],
|
||||
["str", "strb", kind, "b"], ["str", "strh", kind, "h"],
|
||||
["ldr", "ldr", kind, "x"], ["ldr", "ldr", kind, "w"],
|
||||
["ldr", "ldr", kind, "x"], ["ldr", "ldr", kind, "w"],
|
||||
["ldr", "ldrb", kind, "b"], ["ldr", "ldrh", kind, "h"],
|
||||
["ldrsb", "ldrsb", kind, "x"], ["ldrsh", "ldrsh", kind, "x"],
|
||||
["ldrsb", "ldrsb", kind, "x"], ["ldrsh", "ldrsh", kind, "x"],
|
||||
["ldrsh", "ldrsh", kind, "w"], ["ldrsw", "ldrsw", kind, "x"],
|
||||
["ldr", "ldr", kind, "d"], ["ldr", "ldr", kind, "s"],
|
||||
["str", "str", kind, "d"], ["str", "str", kind, "s"],
|
||||
["ldr", "ldr", kind, "d"], ["ldr", "ldr", kind, "s"],
|
||||
["str", "str", kind, "d"], ["str", "str", kind, "s"],
|
||||
])
|
||||
else:
|
||||
generate (LoadStoreOp,
|
||||
generate (LoadStoreOp,
|
||||
[["ldr", "ldr", kind, "x"], ["ldr", "ldr", kind, "w"]])
|
||||
|
||||
|
||||
|
||||
for kind in (Address.base_plus_unscaled_offset, Address.pcrel, Address.base_plus_reg, \
|
||||
Address.base_plus_scaled_offset):
|
||||
generate (LoadStoreOp,
|
||||
generate (LoadStoreOp,
|
||||
[["prfm", "prfm\tPLDL1KEEP,", kind, "x"]])
|
||||
|
||||
generate(AddSubCarryOp, ["adcw", "adcsw", "sbcw", "sbcsw", "adc", "adcs", "sbc", "sbcs"])
|
||||
@@ -1213,32 +1321,32 @@ generate(AddSubExtendedOp, ["addw", "addsw", "sub", "subsw", "add", "adds", "sub
|
||||
|
||||
generate(ConditionalCompareOp, ["ccmnw", "ccmpw", "ccmn", "ccmp"])
|
||||
generate(ConditionalCompareImmedOp, ["ccmnw", "ccmpw", "ccmn", "ccmp"])
|
||||
generate(ConditionalSelectOp,
|
||||
generate(ConditionalSelectOp,
|
||||
["cselw", "csincw", "csinvw", "csnegw", "csel", "csinc", "csinv", "csneg"])
|
||||
|
||||
generate(TwoRegOp,
|
||||
["rbitw", "rev16w", "revw", "clzw", "clsw", "rbit",
|
||||
generate(TwoRegOp,
|
||||
["rbitw", "rev16w", "revw", "clzw", "clsw", "rbit",
|
||||
"rev16", "rev32", "rev", "clz", "cls"])
|
||||
generate(ThreeRegOp,
|
||||
["udivw", "sdivw", "lslvw", "lsrvw", "asrvw", "rorvw", "udiv", "sdiv",
|
||||
generate(ThreeRegOp,
|
||||
["udivw", "sdivw", "lslvw", "lsrvw", "asrvw", "rorvw", "udiv", "sdiv",
|
||||
"lslv", "lsrv", "asrv", "rorv", "umulh", "smulh"])
|
||||
generate(FourRegMulOp,
|
||||
generate(FourRegMulOp,
|
||||
["maddw", "msubw", "madd", "msub", "smaddl", "smsubl", "umaddl", "umsubl"])
|
||||
|
||||
generate(ThreeRegFloatOp,
|
||||
[["fmuls", "sss"], ["fdivs", "sss"], ["fadds", "sss"], ["fsubs", "sss"],
|
||||
generate(ThreeRegFloatOp,
|
||||
[["fmuls", "sss"], ["fdivs", "sss"], ["fadds", "sss"], ["fsubs", "sss"],
|
||||
["fmuls", "sss"],
|
||||
["fmuld", "ddd"], ["fdivd", "ddd"], ["faddd", "ddd"], ["fsubd", "ddd"],
|
||||
["fmuld", "ddd"], ["fdivd", "ddd"], ["faddd", "ddd"], ["fsubd", "ddd"],
|
||||
["fmuld", "ddd"]])
|
||||
|
||||
generate(FourRegFloatOp,
|
||||
[["fmadds", "ssss"], ["fmsubs", "ssss"], ["fnmadds", "ssss"], ["fnmadds", "ssss"],
|
||||
generate(FourRegFloatOp,
|
||||
[["fmadds", "ssss"], ["fmsubs", "ssss"], ["fnmadds", "ssss"], ["fnmadds", "ssss"],
|
||||
["fmaddd", "dddd"], ["fmsubd", "dddd"], ["fnmaddd", "dddd"], ["fnmaddd", "dddd"],])
|
||||
|
||||
generate(TwoRegFloatOp,
|
||||
[["fmovs", "ss"], ["fabss", "ss"], ["fnegs", "ss"], ["fsqrts", "ss"],
|
||||
generate(TwoRegFloatOp,
|
||||
[["fmovs", "ss"], ["fabss", "ss"], ["fnegs", "ss"], ["fsqrts", "ss"],
|
||||
["fcvts", "ds"],
|
||||
["fmovd", "dd"], ["fabsd", "dd"], ["fnegd", "dd"], ["fsqrtd", "dd"],
|
||||
["fmovd", "dd"], ["fabsd", "dd"], ["fnegd", "dd"], ["fsqrtd", "dd"],
|
||||
["fcvtd", "sd"],
|
||||
])
|
||||
|
||||
@@ -1249,18 +1357,18 @@ generate(FloatConvertOp, [["fcvtzsw", "fcvtzs", "ws"], ["fcvtzs", "fcvtzs", "xs"
|
||||
["fmovs", "fmov", "ws"], ["fmovd", "fmov", "xd"],
|
||||
["fmovs", "fmov", "sw"], ["fmovd", "fmov", "dx"]])
|
||||
|
||||
generate(TwoRegFloatOp, [["fcmps", "ss"], ["fcmpd", "dd"],
|
||||
generate(TwoRegFloatOp, [["fcmps", "ss"], ["fcmpd", "dd"],
|
||||
["fcmps", "sz"], ["fcmpd", "dz"]])
|
||||
|
||||
for kind in range(3):
|
||||
generate(LoadStorePairOp, [["stp", "stp", kind, "w"], ["ldp", "ldp", kind, "w"],
|
||||
["ldpsw", "ldpsw", kind, "x"],
|
||||
["ldpsw", "ldpsw", kind, "x"],
|
||||
["stp", "stp", kind, "x"], ["ldp", "ldp", kind, "x"]
|
||||
])
|
||||
generate(LoadStorePairOp, [["stnp", "stnp", 0, "w"], ["ldnp", "ldnp", 0, "w"],
|
||||
["stnp", "stnp", 0, "x"], ["ldnp", "ldnp", 0, "x"]])
|
||||
|
||||
generate(LdStSIMDOp, [["ld1", 1, "8B", Address.base_only],
|
||||
generate(LdStNEONOp, [["ld1", 1, "8B", Address.base_only],
|
||||
["ld1", 2, "16B", Address.post],
|
||||
["ld1", 3, "1D", Address.post_reg],
|
||||
["ld1", 4, "8H", Address.post],
|
||||
@@ -1284,7 +1392,92 @@ generate(LdStSIMDOp, [["ld1", 1, "8B", Address.base_only],
|
||||
["ld4r", 4, "2S", Address.post_reg],
|
||||
])
|
||||
|
||||
generate(SHA512SIMDOp, ["sha512h", "sha512h2", "sha512su0", "sha512su1"])
|
||||
generate(NEONReduceInstruction,
|
||||
[["addv", "addv", "8B"], ["addv", "addv", "16B"],
|
||||
["addv", "addv", "4H"], ["addv", "addv", "8H"],
|
||||
["addv", "addv", "4S"],
|
||||
["smaxv", "smaxv", "8B"], ["smaxv", "smaxv", "16B"],
|
||||
["smaxv", "smaxv", "4H"], ["smaxv", "smaxv", "8H"],
|
||||
["smaxv", "smaxv", "4S"], ["fmaxv", "fmaxv", "4S"],
|
||||
["sminv", "sminv", "8B"], ["sminv", "sminv", "16B"],
|
||||
["sminv", "sminv", "4H"], ["sminv", "sminv", "8H"],
|
||||
["sminv", "sminv", "4S"], ["fminv", "fminv", "4S"],
|
||||
])
|
||||
|
||||
generate(TwoRegNEONOp,
|
||||
[["absr", "abs", "8B"], ["absr", "abs", "16B"],
|
||||
["absr", "abs", "4H"], ["absr", "abs", "8H"],
|
||||
["absr", "abs", "2S"], ["absr", "abs", "4S"],
|
||||
["absr", "abs", "2D"],
|
||||
["fabs", "fabs", "2S"], ["fabs", "fabs", "4S"],
|
||||
["fabs", "fabs", "2D"],
|
||||
["fneg", "fneg", "2S"], ["fneg", "fneg", "4S"],
|
||||
["fneg", "fneg", "2D"],
|
||||
["fsqrt", "fsqrt", "2S"], ["fsqrt", "fsqrt", "4S"],
|
||||
["fsqrt", "fsqrt", "2D"],
|
||||
["notr", "not", "8B"], ["notr", "not", "16B"],
|
||||
])
|
||||
|
||||
generate(ThreeRegNEONOp,
|
||||
[["andr", "and", "8B"], ["andr", "and", "16B"],
|
||||
["orr", "orr", "8B"], ["orr", "orr", "16B"],
|
||||
["eor", "eor", "8B"], ["eor", "eor", "16B"],
|
||||
["addv", "add", "8B"], ["addv", "add", "16B"],
|
||||
["addv", "add", "4H"], ["addv", "add", "8H"],
|
||||
["addv", "add", "2S"], ["addv", "add", "4S"],
|
||||
["addv", "add", "2D"],
|
||||
["fadd", "fadd", "2S"], ["fadd", "fadd", "4S"],
|
||||
["fadd", "fadd", "2D"],
|
||||
["subv", "sub", "8B"], ["subv", "sub", "16B"],
|
||||
["subv", "sub", "4H"], ["subv", "sub", "8H"],
|
||||
["subv", "sub", "2S"], ["subv", "sub", "4S"],
|
||||
["subv", "sub", "2D"],
|
||||
["fsub", "fsub", "2S"], ["fsub", "fsub", "4S"],
|
||||
["fsub", "fsub", "2D"],
|
||||
["mulv", "mul", "8B"], ["mulv", "mul", "16B"],
|
||||
["mulv", "mul", "4H"], ["mulv", "mul", "8H"],
|
||||
["mulv", "mul", "2S"], ["mulv", "mul", "4S"],
|
||||
["fmul", "fmul", "2S"], ["fmul", "fmul", "4S"],
|
||||
["fmul", "fmul", "2D"],
|
||||
["mlav", "mla", "4H"], ["mlav", "mla", "8H"],
|
||||
["mlav", "mla", "2S"], ["mlav", "mla", "4S"],
|
||||
["fmla", "fmla", "2S"], ["fmla", "fmla", "4S"],
|
||||
["fmla", "fmla", "2D"],
|
||||
["mlsv", "mls", "4H"], ["mlsv", "mls", "8H"],
|
||||
["mlsv", "mls", "2S"], ["mlsv", "mls", "4S"],
|
||||
["fmls", "fmls", "2S"], ["fmls", "fmls", "4S"],
|
||||
["fmls", "fmls", "2D"],
|
||||
["fdiv", "fdiv", "2S"], ["fdiv", "fdiv", "4S"],
|
||||
["fdiv", "fdiv", "2D"],
|
||||
["maxv", "smax", "8B"], ["maxv", "smax", "16B"],
|
||||
["maxv", "smax", "4H"], ["maxv", "smax", "8H"],
|
||||
["maxv", "smax", "2S"], ["maxv", "smax", "4S"],
|
||||
["fmax", "fmax", "2S"], ["fmax", "fmax", "4S"],
|
||||
["fmax", "fmax", "2D"],
|
||||
["minv", "smin", "8B"], ["minv", "smin", "16B"],
|
||||
["minv", "smin", "4H"], ["minv", "smin", "8H"],
|
||||
["minv", "smin", "2S"], ["minv", "smin", "4S"],
|
||||
["fmin", "fmin", "2S"], ["fmin", "fmin", "4S"],
|
||||
["fmin", "fmin", "2D"],
|
||||
["cmeq", "cmeq", "8B"], ["cmeq", "cmeq", "16B"],
|
||||
["cmeq", "cmeq", "4H"], ["cmeq", "cmeq", "8H"],
|
||||
["cmeq", "cmeq", "2S"], ["cmeq", "cmeq", "4S"],
|
||||
["cmeq", "cmeq", "2D"],
|
||||
["fcmeq", "fcmeq", "2S"], ["fcmeq", "fcmeq", "4S"],
|
||||
["fcmeq", "fcmeq", "2D"],
|
||||
["cmgt", "cmgt", "8B"], ["cmgt", "cmgt", "16B"],
|
||||
["cmgt", "cmgt", "4H"], ["cmgt", "cmgt", "8H"],
|
||||
["cmgt", "cmgt", "2S"], ["cmgt", "cmgt", "4S"],
|
||||
["cmgt", "cmgt", "2D"],
|
||||
["fcmgt", "fcmgt", "2S"], ["fcmgt", "fcmgt", "4S"],
|
||||
["fcmgt", "fcmgt", "2D"],
|
||||
["cmge", "cmge", "8B"], ["cmge", "cmge", "16B"],
|
||||
["cmge", "cmge", "4H"], ["cmge", "cmge", "8H"],
|
||||
["cmge", "cmge", "2S"], ["cmge", "cmge", "4S"],
|
||||
["cmge", "cmge", "2D"],
|
||||
["fcmge", "fcmge", "2S"], ["fcmge", "fcmge", "4S"],
|
||||
["fcmge", "fcmge", "2D"],
|
||||
])
|
||||
|
||||
generate(SpecialCases, [["ccmn", "__ ccmn(zr, zr, 3u, Assembler::LE);", "ccmn\txzr, xzr, #3, LE"],
|
||||
["ccmnw", "__ ccmnw(zr, zr, 5u, Assembler::EQ);", "ccmn\twzr, wzr, #5, EQ"],
|
||||
@@ -1331,16 +1524,16 @@ generate(SpecialCases, [["ccmn", "__ ccmn(zr, zr, 3u, Assembler::LE);",
|
||||
["st1w", "__ sve_st1w(z0, __ S, p1, Address(r0, 7));", "st1w\t{z0.s}, p1, [x0, #7, MUL VL]"],
|
||||
["st1b", "__ sve_st1b(z0, __ B, p2, Address(sp, r1));", "st1b\t{z0.b}, p2, [sp, x1]"],
|
||||
["st1h", "__ sve_st1h(z0, __ H, p3, Address(sp, r8));", "st1h\t{z0.h}, p3, [sp, x8, LSL #1]"],
|
||||
["st1d", "__ sve_st1d(z0, __ D, p4, Address(r0, r18));", "st1d\t{z0.d}, p4, [x0, x18, LSL #3]"],
|
||||
["st1d", "__ sve_st1d(z0, __ D, p4, Address(r0, r17));", "st1d\t{z0.d}, p4, [x0, x17, LSL #3]"],
|
||||
["ldr", "__ sve_ldr(z0, Address(sp));", "ldr\tz0, [sp]"],
|
||||
["ldr", "__ sve_ldr(z31, Address(sp, -256));", "ldr\tz31, [sp, #-256, MUL VL]"],
|
||||
["str", "__ sve_str(z8, Address(r8, 255));", "str\tz8, [x8, #255, MUL VL]"],
|
||||
])
|
||||
|
||||
print "\n// FloatImmediateOp"
|
||||
for float in ("2.0", "2.125", "4.0", "4.25", "8.0", "8.5", "16.0", "17.0", "0.125",
|
||||
"0.1328125", "0.25", "0.265625", "0.5", "0.53125", "1.0", "1.0625",
|
||||
"-2.0", "-2.125", "-4.0", "-4.25", "-8.0", "-8.5", "-16.0", "-17.0",
|
||||
for float in ("2.0", "2.125", "4.0", "4.25", "8.0", "8.5", "16.0", "17.0", "0.125",
|
||||
"0.1328125", "0.25", "0.265625", "0.5", "0.53125", "1.0", "1.0625",
|
||||
"-2.0", "-2.125", "-4.0", "-4.25", "-8.0", "-8.5", "-16.0", "-17.0",
|
||||
"-0.125", "-0.1328125", "-0.25", "-0.265625", "-0.5", "-0.53125", "-1.0", "-1.0625"):
|
||||
astr = "fmov d0, #" + float
|
||||
cstr = "__ fmovd(v0, " + float + ");"
|
||||
@@ -1360,6 +1553,11 @@ for size in ("x", "w"):
|
||||
["ldumin", "ldumin", size, suffix],
|
||||
["ldumax", "ldumax", size, suffix]]);
|
||||
|
||||
# ARMv8.2A
|
||||
generate(SHA3SIMDOp, ["bcax", "eor3", "rax1", "xar"])
|
||||
|
||||
generate(SHA512SIMDOp, ["sha512h", "sha512h2", "sha512su0", "sha512su1"])
|
||||
|
||||
generate(SVEVectorOp, [["add", "ZZZ"],
|
||||
["sub", "ZZZ"],
|
||||
["fadd", "ZZZ"],
|
||||
@@ -1408,16 +1606,11 @@ outfile.write("forth:\n")
|
||||
|
||||
outfile.close()
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
# compile for sve with 8.1 and sha2 because of lse atomics and sha512 crypto extension.
|
||||
subprocess.check_call([AARCH64_AS, "-march=armv8.1-a+sha2+sve", "aarch64ops.s", "-o", "aarch64ops.o"])
|
||||
# compile for sve with 8.2 and sha3 because of SHA3 crypto extension.
|
||||
subprocess.check_call([AARCH64_AS, "-march=armv8.2-a+sha3+sve", "aarch64ops.s", "-o", "aarch64ops.o"])
|
||||
|
||||
print
|
||||
print "/*",
|
||||
sys.stdout.flush()
|
||||
subprocess.check_call([AARCH64_OBJDUMP, "-d", "aarch64ops.o"])
|
||||
print "/*"
|
||||
print "*/"
|
||||
|
||||
subprocess.check_call([AARCH64_OBJCOPY, "-O", "binary", "-j", ".text", "aarch64ops.o", "aarch64ops.bin"])
|
||||
@@ -1438,4 +1631,7 @@ while i < len(bytes):
|
||||
print "\n };"
|
||||
print "// END Generated code -- do not edit"
|
||||
|
||||
infile.close()
|
||||
|
||||
for f in ["aarch64ops.s", "aarch64ops.o", "aarch64ops.bin"]:
|
||||
os.remove(f)
|
||||
|
||||
@@ -114,8 +114,8 @@ reg_def R16 ( SOC, SOC, Op_RegI, 16, r16->as_VMReg() );
|
||||
reg_def R16_H ( SOC, SOC, Op_RegI, 16, r16->as_VMReg()->next());
|
||||
reg_def R17 ( SOC, SOC, Op_RegI, 17, r17->as_VMReg() );
|
||||
reg_def R17_H ( SOC, SOC, Op_RegI, 17, r17->as_VMReg()->next());
|
||||
reg_def R18 ( SOC, SOC, Op_RegI, 18, r18->as_VMReg() );
|
||||
reg_def R18_H ( SOC, SOC, Op_RegI, 18, r18->as_VMReg()->next());
|
||||
reg_def R18 ( SOC, SOC, Op_RegI, 18, r18_tls->as_VMReg() );
|
||||
reg_def R18_H ( SOC, SOC, Op_RegI, 18, r18_tls->as_VMReg()->next());
|
||||
reg_def R19 ( SOC, SOE, Op_RegI, 19, r19->as_VMReg() );
|
||||
reg_def R19_H ( SOC, SOE, Op_RegI, 19, r19->as_VMReg()->next());
|
||||
reg_def R20 ( SOC, SOE, Op_RegI, 20, r20->as_VMReg() ); // caller esp
|
||||
@@ -247,8 +247,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V7_N ( SOC, SOC, Op_RegF, 7, v7->as_VMReg()->next(6) );
|
||||
reg_def V7_O ( SOC, SOC, Op_RegF, 7, v7->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V8 ( SOC, SOC, Op_RegF, 8, v8->as_VMReg() );
|
||||
reg_def V8_H ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next() );
|
||||
reg_def V8 ( SOC, SOE, Op_RegF, 8, v8->as_VMReg() );
|
||||
reg_def V8_H ( SOC, SOE, Op_RegF, 8, v8->as_VMReg()->next() );
|
||||
reg_def V8_J ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next(2) );
|
||||
reg_def V8_K ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next(3) );
|
||||
reg_def V8_L ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next(4) );
|
||||
@@ -256,8 +256,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V8_N ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next(6) );
|
||||
reg_def V8_O ( SOC, SOC, Op_RegF, 8, v8->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V9 ( SOC, SOC, Op_RegF, 9, v9->as_VMReg() );
|
||||
reg_def V9_H ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next() );
|
||||
reg_def V9 ( SOC, SOE, Op_RegF, 9, v9->as_VMReg() );
|
||||
reg_def V9_H ( SOC, SOE, Op_RegF, 9, v9->as_VMReg()->next() );
|
||||
reg_def V9_J ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next(2) );
|
||||
reg_def V9_K ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next(3) );
|
||||
reg_def V9_L ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next(4) );
|
||||
@@ -265,8 +265,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V9_N ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next(6) );
|
||||
reg_def V9_O ( SOC, SOC, Op_RegF, 9, v9->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V10 ( SOC, SOC, Op_RegF, 10, v10->as_VMReg() );
|
||||
reg_def V10_H ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next() );
|
||||
reg_def V10 ( SOC, SOE, Op_RegF, 10, v10->as_VMReg() );
|
||||
reg_def V10_H ( SOC, SOE, Op_RegF, 10, v10->as_VMReg()->next() );
|
||||
reg_def V10_J ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next(2) );
|
||||
reg_def V10_K ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next(3) );
|
||||
reg_def V10_L ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next(4) );
|
||||
@@ -274,8 +274,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V10_N ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next(6) );
|
||||
reg_def V10_O ( SOC, SOC, Op_RegF, 10, v10->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V11 ( SOC, SOC, Op_RegF, 11, v11->as_VMReg() );
|
||||
reg_def V11_H ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next() );
|
||||
reg_def V11 ( SOC, SOE, Op_RegF, 11, v11->as_VMReg() );
|
||||
reg_def V11_H ( SOC, SOE, Op_RegF, 11, v11->as_VMReg()->next() );
|
||||
reg_def V11_J ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next(2) );
|
||||
reg_def V11_K ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next(3) );
|
||||
reg_def V11_L ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next(4) );
|
||||
@@ -283,8 +283,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V11_N ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next(6) );
|
||||
reg_def V11_O ( SOC, SOC, Op_RegF, 11, v11->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V12 ( SOC, SOC, Op_RegF, 12, v12->as_VMReg() );
|
||||
reg_def V12_H ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next() );
|
||||
reg_def V12 ( SOC, SOE, Op_RegF, 12, v12->as_VMReg() );
|
||||
reg_def V12_H ( SOC, SOE, Op_RegF, 12, v12->as_VMReg()->next() );
|
||||
reg_def V12_J ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next(2) );
|
||||
reg_def V12_K ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next(3) );
|
||||
reg_def V12_L ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next(4) );
|
||||
@@ -292,8 +292,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V12_N ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next(6) );
|
||||
reg_def V12_O ( SOC, SOC, Op_RegF, 12, v12->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V13 ( SOC, SOC, Op_RegF, 13, v13->as_VMReg() );
|
||||
reg_def V13_H ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next() );
|
||||
reg_def V13 ( SOC, SOE, Op_RegF, 13, v13->as_VMReg() );
|
||||
reg_def V13_H ( SOC, SOE, Op_RegF, 13, v13->as_VMReg()->next() );
|
||||
reg_def V13_J ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next(2) );
|
||||
reg_def V13_K ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next(3) );
|
||||
reg_def V13_L ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next(4) );
|
||||
@@ -301,8 +301,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V13_N ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next(6) );
|
||||
reg_def V13_O ( SOC, SOC, Op_RegF, 13, v13->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V14 ( SOC, SOC, Op_RegF, 14, v14->as_VMReg() );
|
||||
reg_def V14_H ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next() );
|
||||
reg_def V14 ( SOC, SOE, Op_RegF, 14, v14->as_VMReg() );
|
||||
reg_def V14_H ( SOC, SOE, Op_RegF, 14, v14->as_VMReg()->next() );
|
||||
reg_def V14_J ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next(2) );
|
||||
reg_def V14_K ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next(3) );
|
||||
reg_def V14_L ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next(4) );
|
||||
@@ -310,8 +310,8 @@ reg_def R31_H ( NS, NS, Op_RegI, 31, r31_sp->as_VMReg()->next());
|
||||
reg_def V14_N ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next(6) );
|
||||
reg_def V14_O ( SOC, SOC, Op_RegF, 14, v14->as_VMReg()->next(7) );
|
||||
|
||||
reg_def V15 ( SOC, SOC, Op_RegF, 15, v15->as_VMReg() );
|
||||
reg_def V15_H ( SOC, SOC, Op_RegF, 15, v15->as_VMReg()->next() );
|
||||
reg_def V15 ( SOC, SOE, Op_RegF, 15, v15->as_VMReg() );
|
||||
reg_def V15_H ( SOC, SOE, Op_RegF, 15, v15->as_VMReg()->next() );
|
||||
reg_def V15_J ( SOC, SOC, Op_RegF, 15, v15->as_VMReg()->next(2) );
|
||||
reg_def V15_K ( SOC, SOC, Op_RegF, 15, v15->as_VMReg()->next(3) );
|
||||
reg_def V15_L ( SOC, SOC, Op_RegF, 15, v15->as_VMReg()->next(4) );
|
||||
@@ -614,9 +614,7 @@ alloc_class chunk3(RFLAGS);
|
||||
// Several register classes are automatically defined based upon information in
|
||||
// this architecture description.
|
||||
// 1) reg_class inline_cache_reg ( /* as def'd in frame section */ )
|
||||
// 2) reg_class compiler_method_oop_reg ( /* as def'd in frame section */ )
|
||||
// 2) reg_class interpreter_method_oop_reg ( /* as def'd in frame section */ )
|
||||
// 3) reg_class stack_slots( /* one chunk of stack-based "registers" */ )
|
||||
// 2) reg_class stack_slots( /* one chunk of stack-based "registers" */ )
|
||||
//
|
||||
|
||||
// Class for all 32 bit general purpose registers
|
||||
@@ -716,6 +714,10 @@ reg_class any_reg %{
|
||||
|
||||
// Class for non-allocatable 32 bit registers
|
||||
reg_class non_allocatable_reg32(
|
||||
#ifdef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18, // tls on Windows
|
||||
#endif
|
||||
R28, // thread
|
||||
R30, // lr
|
||||
R31 // sp
|
||||
@@ -723,6 +725,10 @@ reg_class non_allocatable_reg32(
|
||||
|
||||
// Class for non-allocatable 64 bit registers
|
||||
reg_class non_allocatable_reg(
|
||||
#ifdef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
R18, R18_H, // tls on Windows, platform register on macOS
|
||||
#endif
|
||||
R28, R28_H, // thread
|
||||
R30, R30_H, // lr
|
||||
R31, R31_H // sp
|
||||
@@ -1958,9 +1964,10 @@ void MachEpilogNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
|
||||
}
|
||||
|
||||
if (do_polling() && C->is_method_compilation()) {
|
||||
st->print("# touch polling page\n\t");
|
||||
st->print("ldr rscratch1, [rthread],#polling_page_offset\n\t");
|
||||
st->print("ldr zr, [rscratch1]");
|
||||
st->print("# test polling word\n\t");
|
||||
st->print("ldr rscratch1, [rthread],#%d\n\t", in_bytes(JavaThread::polling_word_offset()));
|
||||
st->print("cmp sp, rscratch1\n\t");
|
||||
st->print("bhi #slow_path");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1977,7 +1984,13 @@ void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
}
|
||||
|
||||
if (do_polling() && C->is_method_compilation()) {
|
||||
__ fetch_and_read_polling_page(rscratch1, relocInfo::poll_return_type);
|
||||
Label dummy_label;
|
||||
Label* code_stub = &dummy_label;
|
||||
if (!C->output()->in_scratch_emit_size()) {
|
||||
code_stub = &C->output()->safepoint_poll_table()->add_safepoint(__ offset());
|
||||
}
|
||||
__ relocate(relocInfo::poll_return_type);
|
||||
__ safepoint_poll(*code_stub, true /* at_return */, false /* acquire */, true /* in_nmethod */);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2395,6 +2408,12 @@ const bool Matcher::match_rule_supported_vector(int opcode, int vlen, BasicType
|
||||
break;
|
||||
case Op_MulVL:
|
||||
return false;
|
||||
case Op_VectorLoadShuffle:
|
||||
case Op_VectorRearrange:
|
||||
if (vlen < 4) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2406,14 +2425,12 @@ const bool Matcher::has_predicated_vectors(void) {
|
||||
return UseSVE > 0;
|
||||
}
|
||||
|
||||
const int Matcher::float_pressure(int default_pressure_threshold) {
|
||||
return default_pressure_threshold;
|
||||
bool Matcher::supports_vector_variable_shifts(void) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int Matcher::regnum_to_fpu_offset(int regnum)
|
||||
{
|
||||
Unimplemented();
|
||||
return 0;
|
||||
const int Matcher::float_pressure(int default_pressure_threshold) {
|
||||
return default_pressure_threshold;
|
||||
}
|
||||
|
||||
// Is this branch offset short enough that a short branch can be used?
|
||||
@@ -2457,11 +2474,18 @@ const int Matcher::min_vector_size(const BasicType bt) {
|
||||
if ((UseSVE > 0) && (MaxVectorSize >= 16)) {
|
||||
// Currently vector length less than SVE vector register size is not supported.
|
||||
return max_size;
|
||||
} else {
|
||||
// For the moment limit the vector size to 8 bytes with NEON.
|
||||
} else { // NEON
|
||||
// Limit the vector size to 8 bytes
|
||||
int size = 8 / type2aelembytes(bt);
|
||||
if (bt == T_BYTE) {
|
||||
// To support vector api shuffle/rearrange.
|
||||
size = 4;
|
||||
} else if (bt == T_BOOLEAN) {
|
||||
// To support vector api load/store mask.
|
||||
size = 2;
|
||||
}
|
||||
if (size < 2) size = 2;
|
||||
return size;
|
||||
return MIN2(size,max_size);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2480,6 +2504,9 @@ const uint Matcher::vector_ideal_reg(int len) {
|
||||
return Op_VecA;
|
||||
}
|
||||
switch(len) {
|
||||
// For 16-bit/32-bit mask vector, reuse VecD.
|
||||
case 2:
|
||||
case 4:
|
||||
case 8: return Op_VecD;
|
||||
case 16: return Op_VecX;
|
||||
}
|
||||
@@ -2579,11 +2606,6 @@ const bool Matcher::rematerialize_float_constants = false;
|
||||
// C code as the Java calling convention forces doubles to be aligned.
|
||||
const bool Matcher::misaligned_doubles_ok = true;
|
||||
|
||||
// No-op on amd64
|
||||
void Matcher::pd_implicit_null_fixup(MachNode *node, uint idx) {
|
||||
Unimplemented();
|
||||
}
|
||||
|
||||
// Advertise here if the CPU requires explicit rounding operations to implement strictfp mode.
|
||||
const bool Matcher::strict_fp_requires_explicit_rounding = false;
|
||||
|
||||
@@ -3122,6 +3144,12 @@ encode %{
|
||||
// END Non-volatile memory access
|
||||
|
||||
// Vector loads and stores
|
||||
enc_class aarch64_enc_ldrvH(vecD dst, memory mem) %{
|
||||
FloatRegister dst_reg = as_FloatRegister($dst$$reg);
|
||||
loadStore(C2_MacroAssembler(&cbuf), &MacroAssembler::ldr, dst_reg, MacroAssembler::H,
|
||||
$mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_ldrvS(vecD dst, memory mem) %{
|
||||
FloatRegister dst_reg = as_FloatRegister($dst$$reg);
|
||||
loadStore(C2_MacroAssembler(&cbuf), &MacroAssembler::ldr, dst_reg, MacroAssembler::S,
|
||||
@@ -3140,6 +3168,12 @@ encode %{
|
||||
$mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_strvH(vecD src, memory mem) %{
|
||||
FloatRegister src_reg = as_FloatRegister($src$$reg);
|
||||
loadStore(C2_MacroAssembler(&cbuf), &MacroAssembler::str, src_reg, MacroAssembler::H,
|
||||
$mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_strvS(vecD src, memory mem) %{
|
||||
FloatRegister src_reg = as_FloatRegister($src$$reg);
|
||||
loadStore(C2_MacroAssembler(&cbuf), &MacroAssembler::str, src_reg, MacroAssembler::S,
|
||||
@@ -3731,12 +3765,19 @@ encode %{
|
||||
if (!_method) {
|
||||
// A call to a runtime wrapper, e.g. new, new_typeArray_Java, uncommon_trap.
|
||||
call = __ trampoline_call(Address(addr, relocInfo::runtime_call_type), &cbuf);
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
int method_index = resolved_method_index(cbuf);
|
||||
RelocationHolder rspec = _optimized_virtual ? opt_virtual_call_Relocation::spec(method_index)
|
||||
: static_call_Relocation::spec(method_index);
|
||||
call = __ trampoline_call(Address(addr, rspec), &cbuf);
|
||||
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
// Emit stub for static call
|
||||
address stub = CompiledStaticCall::emit_to_interp_stub(cbuf);
|
||||
if (stub == NULL) {
|
||||
@@ -3744,10 +3785,8 @@ encode %{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (call == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
} else if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
|
||||
|
||||
if (UseSVE > 0 && Compile::current()->max_vector_size() >= 16) {
|
||||
// Only non uncommon_trap calls need to reinitialize ptrue.
|
||||
if (uncommon_trap_request() == 0) {
|
||||
__ reinitialize_ptrue();
|
||||
@@ -4043,18 +4082,12 @@ encode %{
|
||||
// SP meets the minimum alignment.
|
||||
|
||||
frame %{
|
||||
// What direction does stack grow in (assumed to be same for C & Java)
|
||||
stack_direction(TOWARDS_LOW);
|
||||
|
||||
// These three registers define part of the calling convention
|
||||
// between compiled code and the interpreter.
|
||||
|
||||
// Inline Cache Register or Method for I2C.
|
||||
inline_cache_reg(R12);
|
||||
|
||||
// Method Oop Register when calling interpreter.
|
||||
interpreter_method_oop_reg(R12);
|
||||
|
||||
// Number of stack slots consumed by locking an object
|
||||
sync_stack_slots(2);
|
||||
|
||||
@@ -4246,6 +4279,26 @@ operand immI_31()
|
||||
interface(CONST_INTER);
|
||||
%}
|
||||
|
||||
operand immI_2()
|
||||
%{
|
||||
predicate(n->get_int() == 2);
|
||||
match(ConI);
|
||||
|
||||
op_cost(0);
|
||||
format %{ %}
|
||||
interface(CONST_INTER);
|
||||
%}
|
||||
|
||||
operand immI_4()
|
||||
%{
|
||||
predicate(n->get_int() == 4);
|
||||
match(ConI);
|
||||
|
||||
op_cost(0);
|
||||
format %{ %}
|
||||
interface(CONST_INTER);
|
||||
%}
|
||||
|
||||
operand immI_8()
|
||||
%{
|
||||
predicate(n->get_int() == 8);
|
||||
@@ -5622,16 +5675,6 @@ operand inline_cache_RegP(iRegP reg)
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
operand interpreter_method_oop_RegP(iRegP reg)
|
||||
%{
|
||||
constraint(ALLOC_IN_RC(method_reg)); // interpreter_method_oop_reg
|
||||
match(reg);
|
||||
match(iRegPNoSp);
|
||||
op_cost(0);
|
||||
format %{ %}
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
// Thread Register
|
||||
operand thread_RegP(iRegP reg)
|
||||
%{
|
||||
@@ -6295,7 +6338,7 @@ pipeline %{
|
||||
attributes %{
|
||||
// ARM instructions are of fixed length
|
||||
fixed_size_instructions; // Fixed size instructions TODO does
|
||||
max_instructions_per_bundle = 2; // A53 = 2, A57 = 4
|
||||
max_instructions_per_bundle = 4; // A53 = 2, A57 = 4
|
||||
// ARM instructions come in 32-bit word units
|
||||
instruction_unit_size = 4; // An instruction is 4 bytes long
|
||||
instruction_fetch_unit_size = 64; // The processor fetches one line
|
||||
@@ -11216,6 +11259,7 @@ instruct rShiftL_reg_imm(iRegLNoSp dst, iRegL src1, immI src2) %{
|
||||
%}
|
||||
|
||||
// BEGIN This section of the file is automatically generated. Do not edit --------------
|
||||
// This section is generated from aarch64_ad.m4
|
||||
|
||||
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
@@ -14686,7 +14730,11 @@ instruct clearArray_reg_reg(iRegL_R11 cnt, iRegP_R10 base, Universe dummy, rFlag
|
||||
format %{ "ClearArray $cnt, $base" %}
|
||||
|
||||
ins_encode %{
|
||||
__ zero_words($base$$Register, $cnt$$Register);
|
||||
address tpc = __ zero_words($base$$Register, $cnt$$Register);
|
||||
if (tpc == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
@@ -15964,8 +16012,8 @@ instruct CallStaticJavaDirect(method meth)
|
||||
|
||||
format %{ "call,static $meth \t// ==> " %}
|
||||
|
||||
ins_encode( aarch64_enc_java_static_call(meth),
|
||||
aarch64_enc_call_epilog );
|
||||
ins_encode(aarch64_enc_java_static_call(meth),
|
||||
aarch64_enc_call_epilog);
|
||||
|
||||
ins_pipe(pipe_class_call);
|
||||
%}
|
||||
@@ -15983,8 +16031,8 @@ instruct CallDynamicJavaDirect(method meth)
|
||||
|
||||
format %{ "CALL,dynamic $meth \t// ==> " %}
|
||||
|
||||
ins_encode( aarch64_enc_java_dynamic_call(meth),
|
||||
aarch64_enc_call_epilog );
|
||||
ins_encode(aarch64_enc_java_dynamic_call(meth),
|
||||
aarch64_enc_call_epilog);
|
||||
|
||||
ins_pipe(pipe_class_call);
|
||||
%}
|
||||
@@ -16370,15 +16418,16 @@ instruct string_indexof_conUL(iRegP_R1 str1, iRegI_R4 cnt1, iRegP_R3 str2,
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct string_indexofU_char(iRegP_R1 str1, iRegI_R2 cnt1, iRegI_R3 ch,
|
||||
instruct string_indexof_char(iRegP_R1 str1, iRegI_R2 cnt1, iRegI_R3 ch,
|
||||
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
|
||||
iRegINoSp tmp3, rFlagsReg cr)
|
||||
%{
|
||||
match(Set result (StrIndexOfChar (Binary str1 cnt1) ch));
|
||||
predicate(((StrIndexOfCharNode*)n)->encoding() == StrIntrinsicNode::U);
|
||||
effect(USE_KILL str1, USE_KILL cnt1, USE_KILL ch,
|
||||
TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
|
||||
|
||||
format %{ "String IndexOf char[] $str1,$cnt1,$ch -> $result" %}
|
||||
format %{ "StringUTF16 IndexOf char[] $str1,$cnt1,$ch -> $result" %}
|
||||
|
||||
ins_encode %{
|
||||
__ string_indexof_char($str1$$Register, $cnt1$$Register, $ch$$Register,
|
||||
@@ -16388,6 +16437,25 @@ instruct string_indexofU_char(iRegP_R1 str1, iRegI_R2 cnt1, iRegI_R3 ch,
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct stringL_indexof_char(iRegP_R1 str1, iRegI_R2 cnt1, iRegI_R3 ch,
|
||||
iRegI_R0 result, iRegINoSp tmp1, iRegINoSp tmp2,
|
||||
iRegINoSp tmp3, rFlagsReg cr)
|
||||
%{
|
||||
match(Set result (StrIndexOfChar (Binary str1 cnt1) ch));
|
||||
predicate(((StrIndexOfCharNode*)n)->encoding() == StrIntrinsicNode::L);
|
||||
effect(USE_KILL str1, USE_KILL cnt1, USE_KILL ch,
|
||||
TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr);
|
||||
|
||||
format %{ "StringLatin1 IndexOf char[] $str1,$cnt1,$ch -> $result" %}
|
||||
|
||||
ins_encode %{
|
||||
__ stringL_indexof_char($str1$$Register, $cnt1$$Register, $ch$$Register,
|
||||
$result$$Register, $tmp1$$Register, $tmp2$$Register,
|
||||
$tmp3$$Register);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct string_equalsL(iRegP_R1 str1, iRegP_R3 str2, iRegI_R4 cnt,
|
||||
iRegI_R0 result, rFlagsReg cr)
|
||||
%{
|
||||
@@ -16430,10 +16498,14 @@ instruct array_equalsB(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
|
||||
|
||||
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
|
||||
ins_encode %{
|
||||
__ arrays_equals($ary1$$Register, $ary2$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
|
||||
$result$$Register, $tmp$$Register, 1);
|
||||
%}
|
||||
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
|
||||
$result$$Register, $tmp$$Register, 1);
|
||||
if (tpc == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
@@ -16447,9 +16519,13 @@ instruct array_equalsC(iRegP_R1 ary1, iRegP_R2 ary2, iRegI_R0 result,
|
||||
|
||||
format %{ "Array Equals $ary1,ary2 -> $result // KILL $tmp" %}
|
||||
ins_encode %{
|
||||
__ arrays_equals($ary1$$Register, $ary2$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
|
||||
$result$$Register, $tmp$$Register, 2);
|
||||
address tpc = __ arrays_equals($ary1$$Register, $ary2$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register, $tmp3$$Register,
|
||||
$result$$Register, $tmp$$Register, 2);
|
||||
if (tpc == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -16460,7 +16536,11 @@ instruct has_negatives(iRegP_R1 ary1, iRegI_R2 len, iRegI_R0 result, rFlagsReg c
|
||||
effect(USE_KILL ary1, USE_KILL len, KILL cr);
|
||||
format %{ "has negatives byte[] $ary1,$len -> $result" %}
|
||||
ins_encode %{
|
||||
__ has_negatives($ary1$$Register, $len$$Register, $result$$Register);
|
||||
address tpc = __ has_negatives($ary1$$Register, $len$$Register, $result$$Register);
|
||||
if (tpc == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
@@ -16493,8 +16573,13 @@ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len
|
||||
|
||||
format %{ "String Inflate $src,$dst // KILL $tmp1, $tmp2" %}
|
||||
ins_encode %{
|
||||
__ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
|
||||
$tmp1$$FloatRegister, $tmp2$$FloatRegister, $tmp3$$FloatRegister, $tmp4$$Register);
|
||||
address tpc = __ byte_array_inflate($src$$Register, $dst$$Register, $len$$Register,
|
||||
$tmp1$$FloatRegister, $tmp2$$FloatRegister,
|
||||
$tmp3$$FloatRegister, $tmp4$$Register);
|
||||
if (tpc == NULL) {
|
||||
ciEnv::current()->record_failure("CodeCache is full");
|
||||
return;
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -16822,6 +16907,7 @@ instruct replicate2D(vecX dst, vRegD src)
|
||||
|
||||
instruct reduce_add2I(iRegINoSp dst, iRegIorL2I isrc, vecD vsrc, iRegINoSp tmp, iRegINoSp tmp2)
|
||||
%{
|
||||
predicate(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT);
|
||||
match(Set dst (AddReductionVI isrc vsrc));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp, TEMP tmp2);
|
||||
@@ -16841,6 +16927,7 @@ instruct reduce_add2I(iRegINoSp dst, iRegIorL2I isrc, vecD vsrc, iRegINoSp tmp,
|
||||
|
||||
instruct reduce_add4I(iRegINoSp dst, iRegIorL2I isrc, vecX vsrc, vecX vtmp, iRegINoSp itmp)
|
||||
%{
|
||||
predicate(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT);
|
||||
match(Set dst (AddReductionVI isrc vsrc));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP vtmp, TEMP itmp);
|
||||
@@ -16859,6 +16946,7 @@ instruct reduce_add4I(iRegINoSp dst, iRegIorL2I isrc, vecX vsrc, vecX vtmp, iReg
|
||||
|
||||
instruct reduce_mul2I(iRegINoSp dst, iRegIorL2I isrc, vecD vsrc, iRegINoSp tmp)
|
||||
%{
|
||||
predicate(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT);
|
||||
match(Set dst (MulReductionVI isrc vsrc));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp, TEMP dst);
|
||||
@@ -16878,6 +16966,7 @@ instruct reduce_mul2I(iRegINoSp dst, iRegIorL2I isrc, vecD vsrc, iRegINoSp tmp)
|
||||
|
||||
instruct reduce_mul4I(iRegINoSp dst, iRegIorL2I isrc, vecX vsrc, vecX vtmp, iRegINoSp itmp)
|
||||
%{
|
||||
predicate(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT);
|
||||
match(Set dst (MulReductionVI isrc vsrc));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP vtmp, TEMP itmp, TEMP dst);
|
||||
@@ -17959,8 +18048,7 @@ instruct vabs2F(vecD dst, vecD src)
|
||||
ins_cost(INSN_COST * 3);
|
||||
format %{ "fabs $dst,$src\t# vector (2S)" %}
|
||||
ins_encode %{
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T2S,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T2S, as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(vunop_fp64);
|
||||
%}
|
||||
@@ -17972,8 +18060,7 @@ instruct vabs4F(vecX dst, vecX src)
|
||||
ins_cost(INSN_COST * 3);
|
||||
format %{ "fabs $dst,$src\t# vector (4S)" %}
|
||||
ins_encode %{
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T4S,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T4S, as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(vunop_fp128);
|
||||
%}
|
||||
@@ -17985,8 +18072,7 @@ instruct vabs2D(vecX dst, vecX src)
|
||||
ins_cost(INSN_COST * 3);
|
||||
format %{ "fabs $dst,$src\t# vector (2D)" %}
|
||||
ins_encode %{
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T2D,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ fabs(as_FloatRegister($dst$$reg), __ T2D, as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(vunop_fp128);
|
||||
%}
|
||||
@@ -18127,7 +18213,8 @@ instruct vxor16B(vecX dst, vecX src1, vecX src2)
|
||||
|
||||
// ------------------------------ Shift ---------------------------------------
|
||||
instruct vshiftcnt8B(vecD dst, iRegIorL2I cnt) %{
|
||||
predicate(n->as_Vector()->length_in_bytes() == 8);
|
||||
predicate(n->as_Vector()->length_in_bytes() == 4 ||
|
||||
n->as_Vector()->length_in_bytes() == 8);
|
||||
match(Set dst (LShiftCntV cnt));
|
||||
match(Set dst (RShiftCntV cnt));
|
||||
format %{ "dup $dst, $cnt\t# shift count vector (8B)" %}
|
||||
@@ -18951,12 +19038,12 @@ instruct vpopcount4I(vecX dst, vecX src) %{
|
||||
"uaddlp $dst, $dst\t# vector (8H)"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ cnt(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T8H,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ cnt(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T8H,
|
||||
as_FloatRegister($dst$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_class_default);
|
||||
%}
|
||||
@@ -18970,12 +19057,12 @@ instruct vpopcount2I(vecD dst, vecD src) %{
|
||||
"uaddlp $dst, $dst\t# vector (4H)"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ cnt(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T4H,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ cnt(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($src$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($dst$$reg));
|
||||
__ uaddlp(as_FloatRegister($dst$$reg), __ T4H,
|
||||
as_FloatRegister($dst$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_class_default);
|
||||
%}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
dnl Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
dnl Copyright (c) 2019, 2020, Red Hat Inc. All rights reserved.
|
||||
dnl DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
dnl
|
||||
dnl This code is free software; you can redistribute it and/or modify it
|
||||
@@ -19,10 +19,14 @@ dnl Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
dnl or visit www.oracle.com if you need additional information or have any
|
||||
dnl questions.
|
||||
dnl
|
||||
dnl
|
||||
dnl Process this file with m4 aarch64_ad.m4 to generate the arithmetic
|
||||
dnl and shift patterns patterns used in aarch64.ad.
|
||||
dnl
|
||||
dnl Process this file with m4 aarch64_ad.m4 to generate instructions used in
|
||||
dnl aarch64.ad:
|
||||
dnl 1. the arithmetic
|
||||
dnl 2. shift patterns
|
||||
dnl
|
||||
// BEGIN This section of the file is automatically generated. Do not edit --------------
|
||||
// This section is generated from aarch64_ad.m4
|
||||
dnl
|
||||
define(`ORL2I', `ifelse($1,I,orL2I)')
|
||||
dnl
|
||||
|
||||
3456
src/hotspot/cpu/aarch64/aarch64_neon.ad
Normal file
3456
src/hotspot/cpu/aarch64/aarch64_neon.ad
Normal file
File diff suppressed because it is too large
Load Diff
1424
src/hotspot/cpu/aarch64/aarch64_neon_ad.m4
Normal file
1424
src/hotspot/cpu/aarch64/aarch64_neon_ad.m4
Normal file
File diff suppressed because it is too large
Load Diff
@@ -159,6 +159,31 @@ source %{
|
||||
case Op_ExtractL:
|
||||
case Op_ExtractS:
|
||||
case Op_ExtractUB:
|
||||
// Vector API specific
|
||||
case Op_AndReductionV:
|
||||
case Op_OrReductionV:
|
||||
case Op_XorReductionV:
|
||||
case Op_MaxReductionV:
|
||||
case Op_MinReductionV:
|
||||
case Op_LoadVectorGather:
|
||||
case Op_StoreVectorScatter:
|
||||
case Op_VectorBlend:
|
||||
case Op_VectorCast:
|
||||
case Op_VectorCastB2X:
|
||||
case Op_VectorCastD2X:
|
||||
case Op_VectorCastF2X:
|
||||
case Op_VectorCastI2X:
|
||||
case Op_VectorCastL2X:
|
||||
case Op_VectorCastS2X:
|
||||
case Op_VectorInsert:
|
||||
case Op_VectorLoadConst:
|
||||
case Op_VectorLoadMask:
|
||||
case Op_VectorLoadShuffle:
|
||||
case Op_VectorMaskCmp:
|
||||
case Op_VectorRearrange:
|
||||
case Op_VectorReinterpret:
|
||||
case Op_VectorStoreMask:
|
||||
case Op_VectorTest:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
@@ -846,9 +871,49 @@ instruct vpopcountI(vReg dst, vReg src) %{
|
||||
|
||||
// vector add reduction
|
||||
|
||||
instruct reduce_addB(iRegINoSp dst, iRegIorL2I src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_BYTE);
|
||||
match(Set dst (AddReductionVI src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_uaddv $tmp, $src2\t# vector (sve) (B)\n\t"
|
||||
"smov $dst, $tmp, B, 0\n\t"
|
||||
"addw $dst, $dst, $src1\n\t"
|
||||
"sxtb $dst, $dst\t # add reduction B" %}
|
||||
ins_encode %{
|
||||
__ sve_uaddv(as_FloatRegister($tmp$$reg), __ B,
|
||||
ptrue, as_FloatRegister($src2$$reg));
|
||||
__ smov($dst$$Register, as_FloatRegister($tmp$$reg), __ B, 0);
|
||||
__ addw($dst$$Register, $dst$$Register, $src1$$Register);
|
||||
__ sxtb($dst$$Register, $dst$$Register);
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
instruct reduce_addS(iRegINoSp dst, iRegIorL2I src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_SHORT);
|
||||
match(Set dst (AddReductionVI src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_uaddv $tmp, $src2\t# vector (sve) (H)\n\t"
|
||||
"smov $dst, $tmp, H, 0\n\t"
|
||||
"addw $dst, $dst, $src1\n\t"
|
||||
"sxth $dst, $dst\t # add reduction H" %}
|
||||
ins_encode %{
|
||||
__ sve_uaddv(as_FloatRegister($tmp$$reg), __ H,
|
||||
ptrue, as_FloatRegister($src2$$reg));
|
||||
__ smov($dst$$Register, as_FloatRegister($tmp$$reg), __ H, 0);
|
||||
__ addw($dst$$Register, $dst$$Register, $src1$$Register);
|
||||
__ sxth($dst$$Register, $dst$$Register);
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
instruct reduce_addI(iRegINoSp dst, iRegIorL2I src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT));
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_INT);
|
||||
match(Set dst (AddReductionVI src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
@@ -866,7 +931,7 @@ instruct reduce_addI(iRegINoSp dst, iRegIorL2I src1, vReg src2, vRegD tmp) %{
|
||||
|
||||
instruct reduce_addL(iRegLNoSp dst, iRegL src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
(n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_LONG));
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == T_LONG);
|
||||
match(Set dst (AddReductionVL src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
@@ -1264,7 +1329,7 @@ instruct vlsrL(vReg dst, vReg shift) %{
|
||||
|
||||
instruct vasrB_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 16);
|
||||
match(Set dst (RShiftVB src shift));
|
||||
match(Set dst (RShiftVB src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_asr $dst, $src, $shift\t# vector (sve) (B)" %}
|
||||
ins_encode %{
|
||||
@@ -1283,7 +1348,7 @@ instruct vasrB_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vasrS_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 8);
|
||||
match(Set dst (RShiftVS src shift));
|
||||
match(Set dst (RShiftVS src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_asr $dst, $src, $shift\t# vector (sve) (H)" %}
|
||||
ins_encode %{
|
||||
@@ -1302,7 +1367,7 @@ instruct vasrS_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vasrI_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 4);
|
||||
match(Set dst (RShiftVI src shift));
|
||||
match(Set dst (RShiftVI src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_asr $dst, $src, $shift\t# vector (sve) (S)" %}
|
||||
ins_encode %{
|
||||
@@ -1320,7 +1385,7 @@ instruct vasrI_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vasrL_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 2);
|
||||
match(Set dst (RShiftVL src shift));
|
||||
match(Set dst (RShiftVL src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_asr $dst, $src, $shift\t# vector (sve) (D)" %}
|
||||
ins_encode %{
|
||||
@@ -1338,7 +1403,7 @@ instruct vasrL_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlsrB_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 16);
|
||||
match(Set dst (URShiftVB src shift));
|
||||
match(Set dst (URShiftVB src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsr $dst, $src, $shift\t# vector (sve) (B)" %}
|
||||
ins_encode %{
|
||||
@@ -1361,7 +1426,7 @@ instruct vlsrB_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlsrS_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 8);
|
||||
match(Set dst (URShiftVS src shift));
|
||||
match(Set dst (URShiftVS src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsr $dst, $src, $shift\t# vector (sve) (H)" %}
|
||||
ins_encode %{
|
||||
@@ -1371,7 +1436,7 @@ instruct vlsrS_imm(vReg dst, vReg src, immI shift) %{
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
}
|
||||
if (con >= 8) {
|
||||
if (con >= 16) {
|
||||
__ sve_eor(as_FloatRegister($dst$$reg), as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
@@ -1384,7 +1449,7 @@ instruct vlsrS_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlsrI_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 4);
|
||||
match(Set dst (URShiftVI src shift));
|
||||
match(Set dst (URShiftVI src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsr $dst, $src, $shift\t# vector (sve) (S)" %}
|
||||
ins_encode %{
|
||||
@@ -1402,7 +1467,7 @@ instruct vlsrI_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlsrL_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 2);
|
||||
match(Set dst (URShiftVL src shift));
|
||||
match(Set dst (URShiftVL src (RShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsr $dst, $src, $shift\t# vector (sve) (D)" %}
|
||||
ins_encode %{
|
||||
@@ -1420,7 +1485,7 @@ instruct vlsrL_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlslB_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 16);
|
||||
match(Set dst (LShiftVB src shift));
|
||||
match(Set dst (LShiftVB src (LShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsl $dst, $src, $shift\t# vector (sve) (B)" %}
|
||||
ins_encode %{
|
||||
@@ -1438,12 +1503,12 @@ instruct vlslB_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlslS_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 8);
|
||||
match(Set dst (LShiftVS src shift));
|
||||
match(Set dst (LShiftVS src (LShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsl $dst, $src, $shift\t# vector (sve) (H)" %}
|
||||
ins_encode %{
|
||||
int con = (int)$shift$$constant;
|
||||
if (con >= 8) {
|
||||
if (con >= 16) {
|
||||
__ sve_eor(as_FloatRegister($dst$$reg), as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
@@ -1456,7 +1521,7 @@ instruct vlslS_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlslI_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 4);
|
||||
match(Set dst (LShiftVI src shift));
|
||||
match(Set dst (LShiftVI src (LShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsl $dst, $src, $shift\t# vector (sve) (S)" %}
|
||||
ins_encode %{
|
||||
@@ -1469,7 +1534,7 @@ instruct vlslI_imm(vReg dst, vReg src, immI shift) %{
|
||||
|
||||
instruct vlslL_imm(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= 2);
|
||||
match(Set dst (LShiftVL src shift));
|
||||
match(Set dst (LShiftVL src (LShiftCntV shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_lsl $dst, $src, $shift\t# vector (sve) (D)" %}
|
||||
ins_encode %{
|
||||
|
||||
@@ -146,6 +146,31 @@ source %{
|
||||
case Op_ExtractL:
|
||||
case Op_ExtractS:
|
||||
case Op_ExtractUB:
|
||||
// Vector API specific
|
||||
case Op_AndReductionV:
|
||||
case Op_OrReductionV:
|
||||
case Op_XorReductionV:
|
||||
case Op_MaxReductionV:
|
||||
case Op_MinReductionV:
|
||||
case Op_LoadVectorGather:
|
||||
case Op_StoreVectorScatter:
|
||||
case Op_VectorBlend:
|
||||
case Op_VectorCast:
|
||||
case Op_VectorCastB2X:
|
||||
case Op_VectorCastD2X:
|
||||
case Op_VectorCastF2X:
|
||||
case Op_VectorCastI2X:
|
||||
case Op_VectorCastL2X:
|
||||
case Op_VectorCastS2X:
|
||||
case Op_VectorInsert:
|
||||
case Op_VectorLoadConst:
|
||||
case Op_VectorLoadMask:
|
||||
case Op_VectorLoadShuffle:
|
||||
case Op_VectorMaskCmp:
|
||||
case Op_VectorRearrange:
|
||||
case Op_VectorReinterpret:
|
||||
case Op_VectorStoreMask:
|
||||
case Op_VectorTest:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
@@ -507,15 +532,38 @@ instruct vpopcountI(vReg dst, vReg src) %{
|
||||
__ sve_cnt(as_FloatRegister($dst$$reg), __ S, ptrue, as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
%}dnl
|
||||
|
||||
dnl
|
||||
dnl REDUCE_ADD_EXT($1, $2, $3, $4, $5, $6, $7 )
|
||||
dnl REDUCE_ADD_EXT(insn_name, op_name, reg_dst, reg_src, size, elem_type, insn1)
|
||||
define(`REDUCE_ADD_EXT', `
|
||||
instruct $1($3 dst, $4 src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == $6);
|
||||
match(Set dst ($2 src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_uaddv $tmp, $src2\t# vector (sve) ($5)\n\t"
|
||||
"smov $dst, $tmp, $5, 0\n\t"
|
||||
"addw $dst, $dst, $src1\n\t"
|
||||
"$7 $dst, $dst\t # add reduction $5" %}
|
||||
ins_encode %{
|
||||
__ sve_uaddv(as_FloatRegister($tmp$$reg), __ $5,
|
||||
ptrue, as_FloatRegister($src2$$reg));
|
||||
__ smov($dst$$Register, as_FloatRegister($tmp$$reg), __ $5, 0);
|
||||
__ addw($dst$$Register, $dst$$Register, $src1$$Register);
|
||||
__ $7($dst$$Register, $dst$$Register);
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl
|
||||
dnl REDUCE_ADD($1, $2, $3, $4, $5, $6, $7 )
|
||||
dnl REDUCE_ADD(insn_name, op_name, reg_dst, reg_src, size, elem_type, insn1)
|
||||
define(`REDUCE_ADD', `
|
||||
instruct $1($3 dst, $4 src1, vReg src2, vRegD tmp) %{
|
||||
predicate(UseSVE > 0 && n->in(2)->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
|
||||
ELEMENT_SHORT_CHAR($6, n->in(2)));
|
||||
n->in(2)->bottom_type()->is_vect()->element_basic_type() == $6);
|
||||
match(Set dst ($2 src1 src2));
|
||||
effect(TEMP_DEF dst, TEMP tmp);
|
||||
ins_cost(SVE_COST);
|
||||
@@ -545,8 +593,10 @@ instruct $1($3 src1_dst, vReg src2) %{
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl
|
||||
|
||||
// vector add reduction
|
||||
REDUCE_ADD_EXT(reduce_addB, AddReductionVI, iRegINoSp, iRegIorL2I, B, T_BYTE, sxtb)
|
||||
REDUCE_ADD_EXT(reduce_addS, AddReductionVI, iRegINoSp, iRegIorL2I, H, T_SHORT, sxth)
|
||||
REDUCE_ADD(reduce_addI, AddReductionVI, iRegINoSp, iRegIorL2I, S, T_INT, addw)
|
||||
REDUCE_ADD(reduce_addL, AddReductionVL, iRegLNoSp, iRegL, D, T_LONG, add)
|
||||
REDUCE_ADDF(reduce_addF, AddReductionVF, vRegF, S)
|
||||
@@ -677,14 +727,14 @@ instruct $1(vReg dst, vReg shift) %{
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl
|
||||
dnl VSHIFT_IMM_UNPREDICATE($1, $2, $3, $4, $5 )
|
||||
dnl VSHIFT_IMM_UNPREDICATE(insn_name, op_name, size, min_vec_len, insn)
|
||||
dnl VSHIFT_IMM_UNPREDICATE($1, $2, $3, $4, $5, $6 )
|
||||
dnl VSHIFT_IMM_UNPREDICATE(insn_name, op_name, op_name2, size, min_vec_len, insn)
|
||||
define(`VSHIFT_IMM_UNPREDICATE', `
|
||||
instruct $1(vReg dst, vReg src, immI shift) %{
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= $4);
|
||||
match(Set dst ($2 src shift));
|
||||
predicate(UseSVE > 0 && n->as_Vector()->length() >= $5);
|
||||
match(Set dst ($2 src ($3 shift)));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "$5 $dst, $src, $shift\t# vector (sve) ($3)" %}
|
||||
format %{ "$6 $dst, $src, $shift\t# vector (sve) ($4)" %}
|
||||
ins_encode %{
|
||||
int con = (int)$shift$$constant;dnl
|
||||
ifelse(eval(index(`$1', `vasr') == 0 || index(`$1', `vlsr') == 0), 1, `
|
||||
@@ -693,16 +743,21 @@ ifelse(eval(index(`$1', `vasr') == 0 || index(`$1', `vlsr') == 0), 1, `
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
}')dnl
|
||||
ifelse(eval(index(`$1', `vasr') == 0), 1, `ifelse(eval(index(`$3', `B') == 0), 1, `
|
||||
if (con >= 8) con = 7;')ifelse(eval(index(`$3', `H') == 0), 1, `
|
||||
ifelse(eval(index(`$1', `vasr') == 0), 1, `ifelse(eval(index(`$4', `B') == 0), 1, `
|
||||
if (con >= 8) con = 7;')ifelse(eval(index(`$4', `H') == 0), 1, `
|
||||
if (con >= 16) con = 15;')')dnl
|
||||
ifelse(eval((index(`$1', `vlsl') == 0 || index(`$1', `vlsr') == 0) && (index(`$3', `B') == 0 || index(`$3', `H') == 0)), 1, `
|
||||
ifelse(eval(index(`$1', `vlsl') == 0 || index(`$1', `vlsr') == 0), 1, `ifelse(eval(index(`$4', `B') == 0), 1, `
|
||||
if (con >= 8) {
|
||||
__ sve_eor(as_FloatRegister($dst$$reg), as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
}')
|
||||
__ $5(as_FloatRegister($dst$$reg), __ $3,
|
||||
}')ifelse(eval(index(`$4', `H') == 0), 1, `
|
||||
if (con >= 16) {
|
||||
__ sve_eor(as_FloatRegister($dst$$reg), as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
return;
|
||||
}')')
|
||||
__ $6(as_FloatRegister($dst$$reg), __ $4,
|
||||
as_FloatRegister($src$$reg), con);
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
@@ -736,18 +791,18 @@ VSHIFT_TRUE_PREDICATE(vlsrB, URShiftVB, B, 16, sve_lsr)
|
||||
VSHIFT_TRUE_PREDICATE(vlsrS, URShiftVS, H, 8, sve_lsr)
|
||||
VSHIFT_TRUE_PREDICATE(vlsrI, URShiftVI, S, 4, sve_lsr)
|
||||
VSHIFT_TRUE_PREDICATE(vlsrL, URShiftVL, D, 2, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrB_imm, RShiftVB, B, 16, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrS_imm, RShiftVS, H, 8, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrI_imm, RShiftVI, S, 4, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrL_imm, RShiftVL, D, 2, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrB_imm, URShiftVB, B, 16, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrS_imm, URShiftVS, H, 8, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrI_imm, URShiftVI, S, 4, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrL_imm, URShiftVL, D, 2, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslB_imm, LShiftVB, B, 16, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslS_imm, LShiftVS, H, 8, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslI_imm, LShiftVI, S, 4, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslL_imm, LShiftVL, D, 2, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrB_imm, RShiftVB, RShiftCntV, B, 16, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrS_imm, RShiftVS, RShiftCntV, H, 8, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrI_imm, RShiftVI, RShiftCntV, S, 4, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vasrL_imm, RShiftVL, RShiftCntV, D, 2, sve_asr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrB_imm, URShiftVB, RShiftCntV, B, 16, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrS_imm, URShiftVS, RShiftCntV, H, 8, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrI_imm, URShiftVI, RShiftCntV, S, 4, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlsrL_imm, URShiftVL, RShiftCntV, D, 2, sve_lsr)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslB_imm, LShiftVB, LShiftCntV, B, 16, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslS_imm, LShiftVS, LShiftCntV, H, 8, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslI_imm, LShiftVI, LShiftCntV, S, 4, sve_lsl)
|
||||
VSHIFT_IMM_UNPREDICATE(vlslL_imm, LShiftVL, LShiftCntV, D, 2, sve_lsl)
|
||||
VSHIFT_COUNT(vshiftcntB, B, 16, T_BYTE)
|
||||
VSHIFT_COUNT(vshiftcntS, H, 8, T_SHORT)
|
||||
VSHIFT_COUNT(vshiftcntI, S, 4, T_INT)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,6 +28,19 @@
|
||||
|
||||
#include "asm/register.hpp"
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
// __nop needs volatile so that compiler doesn't optimize it away
|
||||
#define NOP() asm volatile ("nop");
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
// Use MSVC instrinsic: https://docs.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=vs-2019#I
|
||||
#define NOP() __nop();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// definitions of various symbolic names for machine registers
|
||||
|
||||
// First intercalls between C and Java which use 8 general registers
|
||||
@@ -401,10 +414,8 @@ class Address {
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
#ifdef ASSERT
|
||||
Address(Register r, ByteSize disp)
|
||||
: _base(r), _index(noreg), _offset(in_bytes(disp)), _mode(base_plus_offset), _target(0) { }
|
||||
#endif
|
||||
: Address(r, in_bytes(disp)) { }
|
||||
Address(Register r, Register r1, extend ext = lsl())
|
||||
: _base(r), _index(r1), _offset(0), _mode(base_plus_offset_reg),
|
||||
_ext(ext), _target(0) { }
|
||||
@@ -642,7 +653,7 @@ class Assembler : public AbstractAssembler {
|
||||
|
||||
void emit_long(jint x) {
|
||||
if ((uintptr_t)pc() == asm_bp)
|
||||
asm volatile ("nop");
|
||||
NOP();
|
||||
AbstractAssembler::emit_int32(x);
|
||||
}
|
||||
#else
|
||||
@@ -682,6 +693,8 @@ public:
|
||||
return Address(Post(base, idx));
|
||||
}
|
||||
|
||||
static address locate_next_instruction(address inst);
|
||||
|
||||
Instruction_aarch64* current;
|
||||
|
||||
void set_current(Instruction_aarch64* i) { current = i; }
|
||||
@@ -1358,6 +1371,21 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, size, opc) \
|
||||
void NAME(FloatRegister Rt, Register Rn) { \
|
||||
starti; \
|
||||
f(size, 31, 30), f(0b111100, 29, 24), f(opc, 23, 22), f(0, 21); \
|
||||
f(0, 20, 12), f(0b01, 11, 10); \
|
||||
rf(Rn, 5), rf((Register)Rt, 0); \
|
||||
}
|
||||
|
||||
INSN(ldrs, 0b10, 0b01);
|
||||
INSN(ldrd, 0b11, 0b01);
|
||||
INSN(ldrq, 0b00, 0b11);
|
||||
|
||||
#undef INSN
|
||||
|
||||
|
||||
#define INSN(NAME, opc, V) \
|
||||
void NAME(address dest, prfop op = PLDL1KEEP) { \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
@@ -1495,6 +1523,21 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
/* SIMD extensions
|
||||
*
|
||||
* We just use FloatRegister in the following. They are exactly the same
|
||||
* as SIMD registers.
|
||||
*/
|
||||
public:
|
||||
|
||||
enum SIMD_Arrangement {
|
||||
T8B, T16B, T4H, T8H, T2S, T4S, T1D, T2D, T1Q
|
||||
};
|
||||
|
||||
enum SIMD_RegVariant {
|
||||
B, H, S, D, Q
|
||||
};
|
||||
|
||||
enum shift_kind { LSL, LSR, ASR, ROR };
|
||||
|
||||
void op_shifted_reg(unsigned decode,
|
||||
@@ -1557,6 +1600,11 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#ifdef _WIN64
|
||||
// In MSVC, `mvn` is defined as a macro and it affects compilation
|
||||
#undef mvn
|
||||
#endif
|
||||
|
||||
// Aliases for short forms of orn
|
||||
void mvn(Register Rd, Register Rm,
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) {
|
||||
@@ -1869,6 +1917,30 @@ public:
|
||||
i_fmovs(Vd, Vn);
|
||||
}
|
||||
|
||||
private:
|
||||
void _fcvt_narrow_extend(FloatRegister Vd, SIMD_Arrangement Ta,
|
||||
FloatRegister Vn, SIMD_Arrangement Tb, bool do_extend) {
|
||||
assert((do_extend && (Tb >> 1) + 1 == (Ta >> 1))
|
||||
|| (!do_extend && (Ta >> 1) + 1 == (Tb >> 1)), "Incompatible arrangement");
|
||||
starti;
|
||||
int op30 = (do_extend ? Tb : Ta) & 1;
|
||||
int op22 = ((do_extend ? Ta : Tb) >> 1) & 1;
|
||||
f(0, 31), f(op30, 30), f(0b0011100, 29, 23), f(op22, 22);
|
||||
f(0b100001011, 21, 13), f(do_extend ? 1 : 0, 12), f(0b10, 11, 10);
|
||||
rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
void fcvtl(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb) {
|
||||
assert(Tb == T4H || Tb == T8H|| Tb == T2S || Tb == T4S, "invalid arrangement");
|
||||
_fcvt_narrow_extend(Vd, Ta, Vn, Tb, true);
|
||||
}
|
||||
|
||||
void fcvtn(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb) {
|
||||
assert(Ta == T4H || Ta == T8H|| Ta == T2S || Ta == T4S, "invalid arrangement");
|
||||
_fcvt_narrow_extend(Vd, Ta, Vn, Tb, false);
|
||||
}
|
||||
|
||||
#undef INSN
|
||||
|
||||
// Floating-point data-processing (2 source)
|
||||
@@ -2005,6 +2077,43 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
enum sign_kind { SIGNED, UNSIGNED };
|
||||
|
||||
private:
|
||||
void _xcvtf_scalar_integer(sign_kind sign, unsigned sz,
|
||||
FloatRegister Rd, FloatRegister Rn) {
|
||||
starti;
|
||||
f(0b01, 31, 30), f(sign == SIGNED ? 0 : 1, 29);
|
||||
f(0b111100, 27, 23), f((sz >> 1) & 1, 22), f(0b100001110110, 21, 10);
|
||||
rf(Rn, 5), rf(Rd, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
#define INSN(NAME, sign, sz) \
|
||||
void NAME(FloatRegister Rd, FloatRegister Rn) { \
|
||||
_xcvtf_scalar_integer(sign, sz, Rd, Rn); \
|
||||
}
|
||||
|
||||
INSN(scvtfs, SIGNED, 0);
|
||||
INSN(scvtfd, SIGNED, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
private:
|
||||
void _xcvtf_vector_integer(sign_kind sign, SIMD_Arrangement T,
|
||||
FloatRegister Rd, FloatRegister Rn) {
|
||||
assert(T == T2S || T == T4S || T == T2D, "invalid arrangement");
|
||||
starti;
|
||||
f(0, 31), f(T & 1, 30), f(sign == SIGNED ? 0 : 1, 29);
|
||||
f(0b011100, 28, 23), f((T >> 1) & 1, 22), f(0b100001110110, 21, 10);
|
||||
rf(Rn, 5), rf(Rd, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
void scvtfv(SIMD_Arrangement T, FloatRegister Rd, FloatRegister Rn) {
|
||||
_xcvtf_vector_integer(SIGNED, T, Rd, Rn);
|
||||
}
|
||||
|
||||
// Floating-point compare
|
||||
void float_compare(unsigned op31, unsigned type,
|
||||
unsigned op, unsigned op2,
|
||||
@@ -2134,21 +2243,6 @@ public:
|
||||
INSN(frintzd, 0b01, 0b011);
|
||||
#undef INSN
|
||||
|
||||
/* SIMD extensions
|
||||
*
|
||||
* We just use FloatRegister in the following. They are exactly the same
|
||||
* as SIMD registers.
|
||||
*/
|
||||
public:
|
||||
|
||||
enum SIMD_Arrangement {
|
||||
T8B, T16B, T4H, T8H, T2S, T4S, T1D, T2D, T1Q
|
||||
};
|
||||
|
||||
enum SIMD_RegVariant {
|
||||
B, H, S, D, Q
|
||||
};
|
||||
|
||||
private:
|
||||
static short SIMD_Size_in_bytes[];
|
||||
|
||||
@@ -2306,6 +2400,11 @@ public:
|
||||
INSN(smullv, 0, 0b110000, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(umullv, 1, 0b110000, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(umlalv, 1, 0b100000, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(maxv, 0, 0b011001, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(minv, 0, 0b011011, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(cmeq, 1, 0b100011, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmgt, 0, 0b001101, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmge, 0, 0b001111, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -2325,6 +2424,8 @@ public:
|
||||
INSN(negr, 1, 0b100000101110, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(notr, 1, 0b100000010110, 0); // accepted arrangements: T8B, T16B
|
||||
INSN(addv, 0, 0b110001101110, 1); // accepted arrangements: T8B, T16B, T4H, T8H, T4S
|
||||
INSN(smaxv, 0, 0b110000101010, 1); // accepted arrangements: T8B, T16B, T4H, T8H, T4S
|
||||
INSN(sminv, 0, 0b110001101010, 1); // accepted arrangements: T8B, T16B, T4H, T8H, T4S
|
||||
INSN(cls, 0, 0b100000010010, 2); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(clz, 1, 0b100000010010, 2); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(cnt, 0, 0b100000010110, 0); // accepted arrangements: T8B, T16B
|
||||
@@ -2389,6 +2490,9 @@ public:
|
||||
INSN(fmls, 0, 1, 0b110011);
|
||||
INSN(fmax, 0, 0, 0b111101);
|
||||
INSN(fmin, 0, 1, 0b111101);
|
||||
INSN(fcmeq, 0, 0, 0b111001);
|
||||
INSN(fcmgt, 1, 1, 0b111001);
|
||||
INSN(fcmge, 1, 0, 0b111001);
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -2446,6 +2550,40 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm, FloatRegister Va) { \
|
||||
starti; \
|
||||
assert(T == T16B, "arrangement must be T16B"); \
|
||||
f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(0b0, 15, 15), rf(Va, 10), rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(eor3, 0b000);
|
||||
INSN(bcax, 0b001);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm, unsigned imm) { \
|
||||
starti; \
|
||||
assert(T == T2D, "arrangement must be T2D"); \
|
||||
f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(imm, 15, 10), rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(xar, 0b100);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
|
||||
starti; \
|
||||
assert(T == T2D, "arrangement must be T2D"); \
|
||||
f(0b11001110, 31, 24), f(opc, 23, 21), rf(Vm, 16), f(0b100011, 15, 10), rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(rax1, 0b011);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(FloatRegister Vd, FloatRegister Vn) { \
|
||||
starti; \
|
||||
@@ -2488,10 +2626,20 @@ public:
|
||||
rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
// (double) {a, b} -> (a + b)
|
||||
void faddpd(FloatRegister Vd, FloatRegister Vn) {
|
||||
// (long) {a, b} -> (a + b)
|
||||
void addpd(FloatRegister Vd, FloatRegister Vn) {
|
||||
starti;
|
||||
f(0b0111111001110000110110, 31, 10);
|
||||
f(0b0101111011110001101110, 31, 10);
|
||||
rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
// (Floating-point) {a, b} -> (a + b)
|
||||
void faddp(FloatRegister Vd, FloatRegister Vn, SIMD_RegVariant type) {
|
||||
assert(type == D || type == S, "Wrong type for faddp");
|
||||
starti;
|
||||
f(0b011111100, 31, 23);
|
||||
f(type == D ? 1 : 0, 22);
|
||||
f(0b110000110110, 21, 10);
|
||||
rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
@@ -2558,29 +2706,48 @@ public:
|
||||
#undef INSN
|
||||
|
||||
private:
|
||||
void _ushll(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
void _xshll(sign_kind sign, FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
starti;
|
||||
/* The encodings for the immh:immb fields (bits 22:16) are
|
||||
* 0001 xxx 8H, 8B/16b shift = xxx
|
||||
* 0001 xxx 8H, 8B/16B shift = xxx
|
||||
* 001x xxx 4S, 4H/8H shift = xxxx
|
||||
* 01xx xxx 2D, 2S/4S shift = xxxxx
|
||||
* 1xxx xxx RESERVED
|
||||
*/
|
||||
assert((Tb >> 1) + 1 == (Ta >> 1), "Incompatible arrangement");
|
||||
assert((1 << ((Tb>>1)+3)) > shift, "Invalid shift value");
|
||||
f(0, 31), f(Tb & 1, 30), f(0b1011110, 29, 23), f((1 << ((Tb>>1)+3))|shift, 22, 16);
|
||||
f(0, 31), f(Tb & 1, 30), f(sign == SIGNED ? 0 : 1, 29), f(0b011110, 28, 23);
|
||||
f((1 << ((Tb>>1)+3))|shift, 22, 16);
|
||||
f(0b101001, 15, 10), rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
void ushll(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
assert(Tb == T8B || Tb == T4H || Tb == T2S, "invalid arrangement");
|
||||
_ushll(Vd, Ta, Vn, Tb, shift);
|
||||
_xshll(UNSIGNED, Vd, Ta, Vn, Tb, shift);
|
||||
}
|
||||
|
||||
void ushll2(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
assert(Tb == T16B || Tb == T8H || Tb == T4S, "invalid arrangement");
|
||||
_ushll(Vd, Ta, Vn, Tb, shift);
|
||||
_xshll(UNSIGNED, Vd, Ta, Vn, Tb, shift);
|
||||
}
|
||||
|
||||
void uxtl(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb) {
|
||||
ushll(Vd, Ta, Vn, Tb, 0);
|
||||
}
|
||||
|
||||
void sshll(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
assert(Tb == T8B || Tb == T4H || Tb == T2S, "invalid arrangement");
|
||||
_xshll(SIGNED, Vd, Ta, Vn, Tb, shift);
|
||||
}
|
||||
|
||||
void sshll2(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
assert(Tb == T16B || Tb == T8H || Tb == T4S, "invalid arrangement");
|
||||
_xshll(SIGNED, Vd, Ta, Vn, Tb, shift);
|
||||
}
|
||||
|
||||
void sxtl(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb) {
|
||||
sshll(Vd, Ta, Vn, Tb, 0);
|
||||
}
|
||||
|
||||
// Move from general purpose register
|
||||
@@ -2631,6 +2798,15 @@ public:
|
||||
f(0b100001010010, 21, 10), rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
void xtn(FloatRegister Vd, SIMD_Arrangement Tb, FloatRegister Vn, SIMD_Arrangement Ta) {
|
||||
starti;
|
||||
int size_b = (int)Tb >> 1;
|
||||
int size_a = (int)Ta >> 1;
|
||||
assert(size_b < 3 && size_b == size_a - 1, "Invalid size specifier");
|
||||
f(0, 31), f(Tb & 1, 30), f(0b001110, 29, 24), f(size_b, 23, 22);
|
||||
f(0b100001001010, 21, 10), rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
void dup(FloatRegister Vd, SIMD_Arrangement T, Register Xs)
|
||||
{
|
||||
starti;
|
||||
|
||||
@@ -38,6 +38,19 @@
|
||||
|
||||
#define __ ce->masm()->
|
||||
|
||||
void C1SafepointPollStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
InternalAddress safepoint_pc(ce->masm()->pc() - ce->masm()->offset() + safepoint_offset());
|
||||
__ adr(rscratch1, safepoint_pc);
|
||||
__ str(rscratch1, Address(rthread, JavaThread::saved_exception_pc_offset()));
|
||||
|
||||
assert(SharedRuntime::polling_page_return_handler_blob() != NULL,
|
||||
"polling page return stub not created yet");
|
||||
address stub = SharedRuntime::polling_page_return_handler_blob()->entry_point();
|
||||
|
||||
__ far_jump(RuntimeAddress(stub));
|
||||
}
|
||||
|
||||
void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
|
||||
__ bind(_entry);
|
||||
Metadata *m = _method->as_constant_ptr()->as_metadata();
|
||||
|
||||
@@ -44,13 +44,13 @@ enum {
|
||||
pd_nof_cpu_regs_frame_map = RegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
pd_nof_fpu_regs_frame_map = FloatRegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2, // number of registers killed by calls
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1), // number of registers killed by calls
|
||||
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
|
||||
|
||||
pd_first_callee_saved_reg = 19 - 2,
|
||||
pd_last_callee_saved_reg = 26 - 2,
|
||||
pd_first_callee_saved_reg = 19 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1),
|
||||
pd_last_callee_saved_reg = 26 - 2 /* rscratch1 and rscratch2 */ R18_RESERVED_ONLY(- 1),
|
||||
|
||||
pd_last_allocatable_cpu_reg = 16,
|
||||
pd_last_allocatable_cpu_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
|
||||
pd_nof_cpu_regs_reg_alloc
|
||||
= pd_last_allocatable_cpu_reg + 1, // number of registers that are visible to register allocator
|
||||
@@ -60,9 +60,9 @@ enum {
|
||||
pd_nof_fpu_regs_linearscan = pd_nof_fpu_regs_frame_map, // number of registers visible to linear scan
|
||||
pd_nof_xmm_regs_linearscan = 0, // don't have vector registers
|
||||
pd_first_cpu_reg = 0,
|
||||
pd_last_cpu_reg = 16,
|
||||
pd_last_cpu_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
pd_first_byte_reg = 0,
|
||||
pd_last_byte_reg = 16,
|
||||
pd_last_byte_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
|
||||
pd_last_fpu_reg = pd_first_fpu_reg + 31,
|
||||
|
||||
|
||||
@@ -28,3 +28,4 @@
|
||||
//--------------------------------------------------------
|
||||
|
||||
// No FPU stack on AARCH64
|
||||
#include "precompiled.hpp"
|
||||
|
||||
@@ -181,7 +181,10 @@ void FrameMap::initialize() {
|
||||
map_register(i, r15); r15_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r16); r16_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r17); r17_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
map_register(i, r18_tls); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
map_register(i, r19); r19_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r20); r20_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r21); r21_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
@@ -199,6 +202,11 @@ void FrameMap::initialize() {
|
||||
map_register(i, r8); r8_opr = LIR_OprFact::single_cpu(i); i++; // rscratch1
|
||||
map_register(i, r9); r9_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
|
||||
|
||||
#ifdef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
map_register(i, r18_tls); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
|
||||
rscratch1_opr = r8_opr;
|
||||
rscratch2_opr = r9_opr;
|
||||
rscratch1_long_opr = LIR_OprFact::double_cpu(r8_opr->cpu_regnr(), r8_opr->cpu_regnr());
|
||||
@@ -227,7 +235,10 @@ void FrameMap::initialize() {
|
||||
_caller_save_cpu_regs[13] = r15_opr;
|
||||
_caller_save_cpu_regs[14] = r16_opr;
|
||||
_caller_save_cpu_regs[15] = r17_opr;
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
_caller_save_cpu_regs[16] = r18_opr;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
_caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);
|
||||
@@ -253,7 +264,7 @@ void FrameMap::initialize() {
|
||||
r15_oop_opr = as_oop_opr(r15);
|
||||
r16_oop_opr = as_oop_opr(r16);
|
||||
r17_oop_opr = as_oop_opr(r17);
|
||||
r18_oop_opr = as_oop_opr(r18);
|
||||
r18_oop_opr = as_oop_opr(r18_tls);
|
||||
r19_oop_opr = as_oop_opr(r19);
|
||||
r20_oop_opr = as_oop_opr(r20);
|
||||
r21_oop_opr = as_oop_opr(r21);
|
||||
|
||||
@@ -504,7 +504,7 @@ void LIR_Assembler::add_debug_info_for_branch(address adr, CodeEmitInfo* info) {
|
||||
}
|
||||
}
|
||||
|
||||
void LIR_Assembler::return_op(LIR_Opr result) {
|
||||
void LIR_Assembler::return_op(LIR_Opr result, C1SafepointPollStub* code_stub) {
|
||||
assert(result->is_illegal() || !result->is_single_cpu() || result->as_register() == r0, "word returns are in r0,");
|
||||
|
||||
// Pop the stack before the safepoint code
|
||||
@@ -514,7 +514,9 @@ void LIR_Assembler::return_op(LIR_Opr result) {
|
||||
__ reserved_stack_check();
|
||||
}
|
||||
|
||||
__ fetch_and_read_polling_page(rscratch1, relocInfo::poll_return_type);
|
||||
code_stub->set_safepoint_offset(__ offset());
|
||||
__ relocate(relocInfo::poll_return_type);
|
||||
__ safepoint_poll(*code_stub->entry(), true /* at_return */, false /* acquire */, true /* in_nmethod */);
|
||||
__ ret(lr);
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user