mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-09 10:59:37 +01:00
Compare commits
884 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
835874a6a6 | ||
|
|
850687248f | ||
|
|
8654eb2695 | ||
|
|
b42c7db116 | ||
|
|
cc158acd6e | ||
|
|
3e3bb958fd | ||
|
|
279a5623ef | ||
|
|
f1a7056540 | ||
|
|
cbce834cf5 | ||
|
|
16dd7324bd | ||
|
|
3188cadbd3 | ||
|
|
12c29feacc | ||
|
|
491a68a269 | ||
|
|
5ac349d464 | ||
|
|
5b20401197 | ||
|
|
ab26582433 | ||
|
|
d3abf85977 | ||
|
|
e7fd73526d | ||
|
|
47002e6467 | ||
|
|
b52983fe36 | ||
|
|
3963ddebb7 | ||
|
|
a143762dff | ||
|
|
1e5a023f78 | ||
|
|
477be4452a | ||
|
|
b5d39d14f1 | ||
|
|
d821df8d88 | ||
|
|
b29dda48a5 | ||
|
|
04135e7b71 | ||
|
|
d7af735467 | ||
|
|
2c7c791d55 | ||
|
|
8a85d17a9c | ||
|
|
306bc28909 | ||
|
|
d4489c295c | ||
|
|
6176d48c95 | ||
|
|
f4e038aa6a | ||
|
|
e405fc29ed | ||
|
|
2376dd01be | ||
|
|
e603760528 | ||
|
|
3518fd5230 | ||
|
|
10454de910 | ||
|
|
4c6b99a9bd | ||
|
|
a3f6ea190c | ||
|
|
4622a0d8cd | ||
|
|
88964ce51c | ||
|
|
d2d20752a1 | ||
|
|
92cae3d69e | ||
|
|
bd8127f50a | ||
|
|
8fdc6c79e6 | ||
|
|
b30a7f1cbd | ||
|
|
442e2979c6 | ||
|
|
3a7f980853 | ||
|
|
c07d87e0ca | ||
|
|
9df1c168c5 | ||
|
|
4846077ba2 | ||
|
|
c2a91ef3cc | ||
|
|
72c11befd4 | ||
|
|
6cd016806f | ||
|
|
72ce72ee8d | ||
|
|
5fbf99908c | ||
|
|
819eac41b4 | ||
|
|
96f7b0b2b4 | ||
|
|
4d6dd2a316 | ||
|
|
56b36129df | ||
|
|
4e30b032b8 | ||
|
|
ff03d94be4 | ||
|
|
b0447c4fcf | ||
|
|
01d5f18218 | ||
|
|
fafc162706 | ||
|
|
a98f221343 | ||
|
|
a641b338df | ||
|
|
7aa2460c1e | ||
|
|
0f58b76392 | ||
|
|
41b61ca491 | ||
|
|
8f26047f95 | ||
|
|
b081f4a748 | ||
|
|
c9dca2b0b4 | ||
|
|
8575295ca5 | ||
|
|
bf8e21fefb | ||
|
|
98389c2c83 | ||
|
|
056e77863d | ||
|
|
c0c6547b91 | ||
|
|
2cca65b1e1 | ||
|
|
7de240f1d0 | ||
|
|
b85f7b9c97 | ||
|
|
02b167141b | ||
|
|
c1cfd092de | ||
|
|
d85f8ae33e | ||
|
|
e6236e3c4d | ||
|
|
34fca045b9 | ||
|
|
a894067c6a | ||
|
|
804ecaa93f | ||
|
|
34d436060b | ||
|
|
51ae481f29 | ||
|
|
e4d57ffe13 | ||
|
|
1e297d5228 | ||
|
|
d3efc8f716 | ||
|
|
8c5bdcdb13 | ||
|
|
6b4db1fc78 | ||
|
|
95dc4fb1b9 | ||
|
|
22a1b229c0 | ||
|
|
530ab11732 | ||
|
|
bdafb4d439 | ||
|
|
e85c9ac56e | ||
|
|
df03d06169 | ||
|
|
7d8ea50658 | ||
|
|
1676e11625 | ||
|
|
6b004579e4 | ||
|
|
f1a91308d5 | ||
|
|
e4e4fd61f8 | ||
|
|
cd18a3fc89 | ||
|
|
e695e858bb | ||
|
|
dde68d0993 | ||
|
|
9a166ad821 | ||
|
|
00fdf509d3 | ||
|
|
e88673207f | ||
|
|
5c4c05ab0e | ||
|
|
462b022cb6 | ||
|
|
6f517d78aa | ||
|
|
c94cd6841f | ||
|
|
daeb8ca460 | ||
|
|
87ddf6cdf0 | ||
|
|
f9a46d7520 | ||
|
|
bc84c5d18d | ||
|
|
6cd0097922 | ||
|
|
42b8141ceb | ||
|
|
a31480a58a | ||
|
|
b2dfdd8c82 | ||
|
|
e87d156298 | ||
|
|
1b8bebb331 | ||
|
|
31fcccb0c5 | ||
|
|
15ec6c621e | ||
|
|
6920118473 | ||
|
|
09fd9af140 | ||
|
|
12b193407f | ||
|
|
37c88cd96e | ||
|
|
abb2f71191 | ||
|
|
5f2f4e09d9 | ||
|
|
ee8f9983d4 | ||
|
|
22d7a75aea | ||
|
|
6e7add9600 | ||
|
|
680b990ddd | ||
|
|
47d3e0e501 | ||
|
|
bf7ec8e8e7 | ||
|
|
110009f038 | ||
|
|
aae6d61f0e | ||
|
|
a6c3b9f81f | ||
|
|
162b6ffefa | ||
|
|
6e82b78d21 | ||
|
|
71d93f266f | ||
|
|
23f57b369e | ||
|
|
120f662cc1 | ||
|
|
2d25ad89b4 | ||
|
|
083f530277 | ||
|
|
c0c128347b | ||
|
|
565ca4f2d7 | ||
|
|
095de785dc | ||
|
|
973930b856 | ||
|
|
8d1a2f1d0e | ||
|
|
794821a732 | ||
|
|
b18c311d9b | ||
|
|
02a3b0bca5 | ||
|
|
47b9835dd5 | ||
|
|
0b9be5da42 | ||
|
|
32f7750cec | ||
|
|
93f7c084d9 | ||
|
|
f5f7db567c | ||
|
|
8f4ef81810 | ||
|
|
bee4bb4982 | ||
|
|
6d56ecb666 | ||
|
|
14c80c165c | ||
|
|
43f394c9e1 | ||
|
|
974c0ac47b | ||
|
|
bae9f38caf | ||
|
|
1382d94ddc | ||
|
|
ffbf51bc92 | ||
|
|
fc0ea1829a | ||
|
|
5081f134f8 | ||
|
|
4ec40754af | ||
|
|
89dfd212c9 | ||
|
|
6e08d54641 | ||
|
|
f8acf0a30c | ||
|
|
b58ce44c51 | ||
|
|
f280e8df92 | ||
|
|
353a2d28a8 | ||
|
|
77fc0b1319 | ||
|
|
3fdd444434 | ||
|
|
613705d514 | ||
|
|
4a4f8c99fc | ||
|
|
d04b164a13 | ||
|
|
68aa458825 | ||
|
|
630f76bf6f | ||
|
|
9a36559050 | ||
|
|
51680db818 | ||
|
|
265ede1794 | ||
|
|
6d3bbc72eb | ||
|
|
104fdac51d | ||
|
|
c2d9621656 | ||
|
|
5acd264b5e | ||
|
|
edba44fd35 | ||
|
|
9d28367754 | ||
|
|
cf22c48e9e | ||
|
|
b20664e2b2 | ||
|
|
225f3b37b5 | ||
|
|
d4370e4411 | ||
|
|
76b9046bfb | ||
|
|
d1ffc5a9d2 | ||
|
|
1259cb8db2 | ||
|
|
c371614738 | ||
|
|
a9310c161c | ||
|
|
3f52a0df28 | ||
|
|
185acb3031 | ||
|
|
bfd73e2ed0 | ||
|
|
9f6492cef8 | ||
|
|
b2b77542a8 | ||
|
|
632df97585 | ||
|
|
85374b8341 | ||
|
|
e5c7ace1c8 | ||
|
|
200e16d96f | ||
|
|
d61142a36d | ||
|
|
2891fbeebb | ||
|
|
22e2bd6835 | ||
|
|
f6c89abe33 | ||
|
|
45dcaa574f | ||
|
|
29281eb778 | ||
|
|
8f41fb52fe | ||
|
|
aefdd84a17 | ||
|
|
0daf099839 | ||
|
|
18a0e03a72 | ||
|
|
3066bc6721 | ||
|
|
10a3995572 | ||
|
|
843130100f | ||
|
|
6ac4e2cd41 | ||
|
|
904e69b4ef | ||
|
|
c3140d00e7 | ||
|
|
e46fa13ecf | ||
|
|
8bd8db8c6d | ||
|
|
91154ba38a | ||
|
|
d61f2f3375 | ||
|
|
c600e7bd33 | ||
|
|
f1152463d9 | ||
|
|
ca15a47640 | ||
|
|
d81e8af7be | ||
|
|
0634b367ad | ||
|
|
99273a0bc3 | ||
|
|
1ddf70057f | ||
|
|
84994f7b93 | ||
|
|
1e44e79ace | ||
|
|
4d8a4c3326 | ||
|
|
03472dfe02 | ||
|
|
e9e9816ae5 | ||
|
|
ca49a70b7f | ||
|
|
00c3661751 | ||
|
|
5c5c10f8b4 | ||
|
|
1c92b5ba71 | ||
|
|
7e5bbc8f87 | ||
|
|
34810c0bad | ||
|
|
a391d4294b | ||
|
|
f9d5d35a2e | ||
|
|
eb73bc720e | ||
|
|
c3b314283e | ||
|
|
f3a37ebc30 | ||
|
|
aa53dd4907 | ||
|
|
7304bc7ed9 | ||
|
|
2d2233cd1e | ||
|
|
81778e095f | ||
|
|
4fb1e1e9fa | ||
|
|
ded83bb877 | ||
|
|
38ff8aaa22 | ||
|
|
92319cc599 | ||
|
|
f9e6f36984 | ||
|
|
f41d453537 | ||
|
|
881569d8aa | ||
|
|
5655c7edb6 | ||
|
|
2a7f961138 | ||
|
|
6e169c080a | ||
|
|
4c60edfb0a | ||
|
|
b012f20f27 | ||
|
|
fd0ee12ca3 | ||
|
|
ea6ff0e2f5 | ||
|
|
b47696b266 | ||
|
|
00df84cdb6 | ||
|
|
19dbdd151a | ||
|
|
fd25cfc1d3 | ||
|
|
a9963d915c | ||
|
|
80024baeaf | ||
|
|
c9229dd2e9 | ||
|
|
640d6bb1be | ||
|
|
1d319a7e2c | ||
|
|
1fbd8148c0 | ||
|
|
298b40d7fa | ||
|
|
7b19c72d18 | ||
|
|
32de11b627 | ||
|
|
9348cc2789 | ||
|
|
3d177f08fa | ||
|
|
91c7d8cbf8 | ||
|
|
2f91606d91 | ||
|
|
12f96ed3ba | ||
|
|
9094154dee | ||
|
|
bd0ad34039 | ||
|
|
d0eb176bdd | ||
|
|
c9e5ef3def | ||
|
|
92f9d75b04 | ||
|
|
e417ba2955 | ||
|
|
d3fb06784b | ||
|
|
3fe8216909 | ||
|
|
a9af1d397a | ||
|
|
bb3ac74a78 | ||
|
|
b51a734fa0 | ||
|
|
e8fa2322e0 | ||
|
|
362ccdde33 | ||
|
|
d3d5b0f5a9 | ||
|
|
a67e793c02 | ||
|
|
47e0618fa0 | ||
|
|
5be87aa775 | ||
|
|
1eb4dc737e | ||
|
|
28f30af5b7 | ||
|
|
a60738cb95 | ||
|
|
701b629c1d | ||
|
|
c2acadbdef | ||
|
|
57ea547a1f | ||
|
|
afe04605fe | ||
|
|
99421cf875 | ||
|
|
1247589dad | ||
|
|
5a7ae5ca09 | ||
|
|
3ba652b0f0 | ||
|
|
7cbf020d24 | ||
|
|
3a38a99184 | ||
|
|
9c4f691111 | ||
|
|
a7480ba332 | ||
|
|
61a7c8bd42 | ||
|
|
c97d5edc48 | ||
|
|
63250dd16d | ||
|
|
4ca792816e | ||
|
|
a172bc2efb | ||
|
|
b941f14bae | ||
|
|
397673fc0e | ||
|
|
619c7adfd0 | ||
|
|
599784c33d | ||
|
|
2c479c790b | ||
|
|
fe98815ead | ||
|
|
17626ad6d8 | ||
|
|
81ab252fe9 | ||
|
|
42bc849a6d | ||
|
|
4aa8fee98f | ||
|
|
eaa1c8c5df | ||
|
|
c8c051fc3e | ||
|
|
ebd146dc7b | ||
|
|
6b7f6fe925 | ||
|
|
7c7ebbf820 | ||
|
|
072fc06f6d | ||
|
|
b552922490 | ||
|
|
c988f9862e | ||
|
|
8bdc8cc032 | ||
|
|
a3e466ec88 | ||
|
|
425d668038 | ||
|
|
78e6f1f2c6 | ||
|
|
85a86bdaec | ||
|
|
40d138a9f4 | ||
|
|
5af47ef8aa | ||
|
|
7ec6aeeb22 | ||
|
|
7cc6b11114 | ||
|
|
add3430061 | ||
|
|
f669b6d9cb | ||
|
|
27b43550c3 | ||
|
|
7287ff3b80 | ||
|
|
3279baa769 | ||
|
|
5b8afc0096 | ||
|
|
3cc063a15c | ||
|
|
1a38624191 | ||
|
|
e43aca7513 | ||
|
|
1083eedff1 | ||
|
|
4286a7f5a1 | ||
|
|
f9785a657b | ||
|
|
bf96b39ce3 | ||
|
|
6630a7f3b7 | ||
|
|
3793d40f27 | ||
|
|
c04e8e637a | ||
|
|
b14a9fff9b | ||
|
|
afc0034b14 | ||
|
|
06d833d164 | ||
|
|
07643c5fd0 | ||
|
|
34309539ef | ||
|
|
2f32b0fbe0 | ||
|
|
65b74ad054 | ||
|
|
deadbe368a | ||
|
|
045a24a963 | ||
|
|
db7d11e7de | ||
|
|
14a5edace1 | ||
|
|
296d7de9d5 | ||
|
|
4d16375a3d | ||
|
|
70a810918f | ||
|
|
b4f5bc184d | ||
|
|
16c57ac204 | ||
|
|
a685c3f197 | ||
|
|
8a18d1914c | ||
|
|
2f95f86896 | ||
|
|
e038f46789 | ||
|
|
ff9c88bc28 | ||
|
|
33dd9fa96b | ||
|
|
800d53c2a2 | ||
|
|
3659acb85a | ||
|
|
0c872d3b15 | ||
|
|
fe5841f5c2 | ||
|
|
1ce767d903 | ||
|
|
3b90704c08 | ||
|
|
aed4f27513 | ||
|
|
8a14a1c9c4 | ||
|
|
fffe65d806 | ||
|
|
3a85c2ec3d | ||
|
|
252ca5fb21 | ||
|
|
80ce17f2bc | ||
|
|
05ad846591 | ||
|
|
db8ce9719e | ||
|
|
126bde2f9e | ||
|
|
9764757432 | ||
|
|
eb46701e9e | ||
|
|
3b6c83aedb | ||
|
|
a0e8a527d2 | ||
|
|
ff971881cf | ||
|
|
bd7d3de46d | ||
|
|
86b46050c6 | ||
|
|
ec49082a99 | ||
|
|
616e512bd9 | ||
|
|
a743ea20a6 | ||
|
|
a539b0a79b | ||
|
|
e7bb86ad57 | ||
|
|
29a606cb9c | ||
|
|
85dd451ecc | ||
|
|
ab19a0f94c | ||
|
|
431edbee11 | ||
|
|
c7ca473b70 | ||
|
|
c6b3fa8052 | ||
|
|
1e12055bd2 | ||
|
|
5b267d67b0 | ||
|
|
7d10803c96 | ||
|
|
7ea05a2dbf | ||
|
|
cf6ba1ed11 | ||
|
|
17d6682519 | ||
|
|
4518da0d2f | ||
|
|
6279241e65 | ||
|
|
18491abf9d | ||
|
|
fa4c7693dc | ||
|
|
c04fa7866c | ||
|
|
577c8aa1a6 | ||
|
|
3e1d4afb98 | ||
|
|
b37b490362 | ||
|
|
94af9f1199 | ||
|
|
149e923598 | ||
|
|
ba33163b44 | ||
|
|
e3f2b7d3f4 | ||
|
|
9db9ee4c83 | ||
|
|
9755333d0e | ||
|
|
0b4844fc05 | ||
|
|
0625eaf445 | ||
|
|
8839e72867 | ||
|
|
661c96a48b | ||
|
|
8e1ce1b92c | ||
|
|
ba2f6dcee9 | ||
|
|
c516843bc5 | ||
|
|
cd9c72ec52 | ||
|
|
8cecb9a931 | ||
|
|
ecab1b2e4c | ||
|
|
e31fcc9a03 | ||
|
|
89d15c4130 | ||
|
|
f3bc086bac | ||
|
|
a60b20f0dc | ||
|
|
ea79186e5c | ||
|
|
7b394470cd | ||
|
|
0d8bf68f3b | ||
|
|
60478c037c | ||
|
|
456fa0055d | ||
|
|
eff2e8e4dc | ||
|
|
e548473171 | ||
|
|
49b5757f82 | ||
|
|
3b4c865a48 | ||
|
|
4ac53729b8 | ||
|
|
7bd42c147a | ||
|
|
f5c8e28dbe | ||
|
|
dffda7d41a | ||
|
|
9cc26f24aa | ||
|
|
0756efacbd | ||
|
|
fcb7a8c841 | ||
|
|
e3328128e7 | ||
|
|
d1a0ab7b57 | ||
|
|
0311ad754d | ||
|
|
4b4443e719 | ||
|
|
d09e03ff30 | ||
|
|
0fd22a273d | ||
|
|
2e017abfbf | ||
|
|
31e8616677 | ||
|
|
eb06c872e1 | ||
|
|
9fbef2250f | ||
|
|
502cc0c7bd | ||
|
|
e468ac3c4a | ||
|
|
6b0f66239e | ||
|
|
2ce8ecc571 | ||
|
|
5c5802f2bb | ||
|
|
02628f3abc | ||
|
|
fee5c9e756 | ||
|
|
4bc6930b7f | ||
|
|
b2bae0b252 | ||
|
|
1eee0ac2f1 | ||
|
|
e5466e8b30 | ||
|
|
ef25e1e50d | ||
|
|
a472dece99 | ||
|
|
8897ca3b37 | ||
|
|
a65ada92d3 | ||
|
|
03ec3a2493 | ||
|
|
374efcae15 | ||
|
|
8d4eff8463 | ||
|
|
825e86e55a | ||
|
|
b14059f1c1 | ||
|
|
ef8ef71f02 | ||
|
|
f27bfc24e5 | ||
|
|
9860025d33 | ||
|
|
c7e76154d0 | ||
|
|
137447cd0f | ||
|
|
bb9c361271 | ||
|
|
b332bf7743 | ||
|
|
e7dee1d17b | ||
|
|
07f7b1d1ea | ||
|
|
383ff25172 | ||
|
|
81a326e22a | ||
|
|
e782275baf | ||
|
|
b8060da551 | ||
|
|
a71edc801b | ||
|
|
3757a693eb | ||
|
|
0b53033c1b | ||
|
|
7bb09f92e5 | ||
|
|
ad2cf2bd28 | ||
|
|
cdc1d0eda7 | ||
|
|
6142537e88 | ||
|
|
7f07c24546 | ||
|
|
4d84fed5e2 | ||
|
|
924a4f7b12 | ||
|
|
d1e107ebce | ||
|
|
f526543fd6 | ||
|
|
ee5d15ae4f | ||
|
|
e619422779 | ||
|
|
7741b227aa | ||
|
|
a11759d358 | ||
|
|
4f75bb70b7 | ||
|
|
637994112c | ||
|
|
65a0f96428 | ||
|
|
3e0aa5eb9f | ||
|
|
8480c514af | ||
|
|
a010ad3ade | ||
|
|
b534647f1d | ||
|
|
1f7adfe26c | ||
|
|
e31fc34ea5 | ||
|
|
24eb3d3a8d | ||
|
|
d1f250c392 | ||
|
|
89b91d7e52 | ||
|
|
984a42b026 | ||
|
|
43d13df4c3 | ||
|
|
fb941dd3b7 | ||
|
|
97ddad2e99 | ||
|
|
01ea54d751 | ||
|
|
cad1ad4ba1 | ||
|
|
c0be778e20 | ||
|
|
0b659fef1b | ||
|
|
e62fb2762f | ||
|
|
90fff7bb1e | ||
|
|
f117b0e8ff | ||
|
|
5a2da540da | ||
|
|
23a7dbd486 | ||
|
|
104ef7a512 | ||
|
|
55c667055e | ||
|
|
bc024f9af1 | ||
|
|
dbcbc5cf36 | ||
|
|
19aa9c5ab2 | ||
|
|
4038661a40 | ||
|
|
f3f243e15e | ||
|
|
967eca8d1d | ||
|
|
c011487364 | ||
|
|
e90312b97a | ||
|
|
3cc4c7947b | ||
|
|
92948257a6 | ||
|
|
fcd5fd2fe9 | ||
|
|
403ad1569a | ||
|
|
01ad15e61c | ||
|
|
f10e324538 | ||
|
|
7d8cc524ca | ||
|
|
74252c6df6 | ||
|
|
7b3fa30b6b | ||
|
|
90f1b0812e | ||
|
|
a7a678d491 | ||
|
|
7998f964fa | ||
|
|
04ab8b2f04 | ||
|
|
3b9e5c41db | ||
|
|
e7009db076 | ||
|
|
43ac82fc82 | ||
|
|
9e6d718281 | ||
|
|
14d64f6e0a | ||
|
|
744d5d12d0 | ||
|
|
292902fa77 | ||
|
|
3820e0b62a | ||
|
|
8c55979d40 | ||
|
|
5c275d0a0c | ||
|
|
ce154c9ad4 | ||
|
|
6d6ab9dfd9 | ||
|
|
16158c2eef | ||
|
|
f4d0b285c3 | ||
|
|
071c02b771 | ||
|
|
448fa17a19 | ||
|
|
bfb3674430 | ||
|
|
95857dcfaf | ||
|
|
5520a4df6d | ||
|
|
e906af61a5 | ||
|
|
750fbac5eb | ||
|
|
c5f48bf2cf | ||
|
|
630fe55f4b | ||
|
|
1084ca8699 | ||
|
|
9d5c1c0c7e | ||
|
|
352882d1dc | ||
|
|
500634c24c | ||
|
|
49822836b8 | ||
|
|
fb9c2372f6 | ||
|
|
9e669bf6b7 | ||
|
|
6d2a2255f9 | ||
|
|
e22809895c | ||
|
|
5339faf796 | ||
|
|
9ee13893b0 | ||
|
|
3808264809 | ||
|
|
b8929acd83 | ||
|
|
f203865ad7 | ||
|
|
3c53281d4a | ||
|
|
add8207c6f | ||
|
|
f3dd1882e0 | ||
|
|
8cbf021a42 | ||
|
|
69c0011bad | ||
|
|
4be94ec941 | ||
|
|
21117cb19e | ||
|
|
a9367e1c03 | ||
|
|
efeb4ae758 | ||
|
|
94f8e8c89f | ||
|
|
700429b2a7 | ||
|
|
7526030be1 | ||
|
|
c2a8422d7f | ||
|
|
9e21248180 | ||
|
|
cd103bbab8 | ||
|
|
44fc8d89d3 | ||
|
|
0a01980897 | ||
|
|
7d74096fbc | ||
|
|
2220a431e0 | ||
|
|
e74bee8349 | ||
|
|
50483f3c81 | ||
|
|
8387ea9380 | ||
|
|
60d66beaf7 | ||
|
|
56acccd6a6 | ||
|
|
f6d3a8b591 | ||
|
|
db9b7f2787 | ||
|
|
25e7ea9c8b | ||
|
|
d5523eb04d | ||
|
|
b4d463e431 | ||
|
|
565ff2f838 | ||
|
|
4d8238cd7b | ||
|
|
a26821d6e2 | ||
|
|
0f9df78ac9 | ||
|
|
abfc410137 | ||
|
|
56c8a4b903 | ||
|
|
d3f7396d47 | ||
|
|
78e8501e6f | ||
|
|
7c281c4e71 | ||
|
|
5aac53496f | ||
|
|
be5409fd7e | ||
|
|
853c9a1c18 | ||
|
|
d5bb0ebb7e | ||
|
|
77dc0c8a0d | ||
|
|
0f4ce76379 | ||
|
|
7aae705e03 | ||
|
|
257c2089b9 | ||
|
|
4673cad7a7 | ||
|
|
070af3dd26 | ||
|
|
88a99dacaa | ||
|
|
a74d89f57b | ||
|
|
daf57531ef | ||
|
|
875447134f | ||
|
|
d0d25416fc | ||
|
|
e36b430f9a | ||
|
|
8a6d4acb9f | ||
|
|
71181df1ac | ||
|
|
2f663089b0 | ||
|
|
a16fcfdf93 | ||
|
|
f22e1413f4 | ||
|
|
521828f6d1 | ||
|
|
7229b67238 | ||
|
|
cb7f1ffe07 | ||
|
|
7513798519 | ||
|
|
8939e85fb2 | ||
|
|
35cab2f35d | ||
|
|
bc95f47b02 | ||
|
|
2706d5cb2b | ||
|
|
80be66ba39 | ||
|
|
d38ecb09d1 | ||
|
|
9adaec3e08 | ||
|
|
e1738f3d47 | ||
|
|
a07704dcde | ||
|
|
c5ec465255 | ||
|
|
910d41f4f8 | ||
|
|
f20aec9544 | ||
|
|
d0ff9f7830 | ||
|
|
5be0724dda | ||
|
|
71bf0b2560 | ||
|
|
40ec3a2df9 | ||
|
|
1a889b37c0 | ||
|
|
3d4a4b22b9 | ||
|
|
579c394338 | ||
|
|
2efe368304 | ||
|
|
df62d74c8f | ||
|
|
53b11621ca | ||
|
|
cdbc7c5ef6 | ||
|
|
64d5b87d66 | ||
|
|
1272dd6232 | ||
|
|
85a7a9efb2 | ||
|
|
eef6aa8e58 | ||
|
|
11f619cc8b | ||
|
|
e11674028b | ||
|
|
4895f13846 | ||
|
|
88b60f34ec | ||
|
|
7acf76118c | ||
|
|
a6b6b17282 | ||
|
|
85ba8dd702 | ||
|
|
38ddd2a2cd | ||
|
|
89a087236a | ||
|
|
224fa7de7d | ||
|
|
990802f817 | ||
|
|
6c186a9959 | ||
|
|
cf03ac79a4 | ||
|
|
9a78559379 | ||
|
|
2a455e32ea | ||
|
|
4d1917144c | ||
|
|
03d9a10203 | ||
|
|
46bc0d7b50 | ||
|
|
f388b74894 | ||
|
|
bd0c3e2eb0 | ||
|
|
f002bd9ae6 | ||
|
|
963e4ddaba | ||
|
|
6e7767c92a | ||
|
|
f8f9621456 | ||
|
|
6671330e27 | ||
|
|
ce5d7b61a2 | ||
|
|
1710c8869f | ||
|
|
1ae8aba390 | ||
|
|
371ceba9ab | ||
|
|
695abc55e5 | ||
|
|
0b12caa57b | ||
|
|
c9f8cd4421 | ||
|
|
44228aa152 | ||
|
|
1801b1f7d6 | ||
|
|
3107c6adbc | ||
|
|
e8e2ccc347 | ||
|
|
54a0e73af1 | ||
|
|
0979d4f31b | ||
|
|
8be76d512c | ||
|
|
10ffe89144 | ||
|
|
b0e6a142bc | ||
|
|
ee1b5a8eec | ||
|
|
ede272d863 | ||
|
|
1cf05bcb67 | ||
|
|
f32b2bccc3 | ||
|
|
de8c05df2a | ||
|
|
a82f6ed257 | ||
|
|
75558a1f13 | ||
|
|
0b23870353 | ||
|
|
3d9761fe49 | ||
|
|
b361e49c5d | ||
|
|
1b4521f76e | ||
|
|
578c46d142 | ||
|
|
8b938e54a8 | ||
|
|
63a2f90347 | ||
|
|
0dbd0d0d9e | ||
|
|
5eea5ec4c4 | ||
|
|
04536355c3 | ||
|
|
0e2c5fff47 | ||
|
|
972b5a8bc1 | ||
|
|
70965577c5 | ||
|
|
d1b89469dd | ||
|
|
7a1da1450c | ||
|
|
1c855a3f78 | ||
|
|
d298ac8fcb | ||
|
|
e0f416a338 | ||
|
|
06cff86e4b | ||
|
|
b89faecc44 | ||
|
|
4fa4b49893 | ||
|
|
eda0c03828 | ||
|
|
d975512709 | ||
|
|
98022ef10f | ||
|
|
f60744a073 | ||
|
|
1d260966a9 | ||
|
|
030badde79 | ||
|
|
8dcb78499d | ||
|
|
a9996adfe0 | ||
|
|
f75bbf78b7 | ||
|
|
1f3e9d5788 | ||
|
|
2c94df2c6e | ||
|
|
e6b04f49a7 | ||
|
|
418536236c | ||
|
|
5bbd7111dc | ||
|
|
c96537700e | ||
|
|
9d2cd63c99 | ||
|
|
5159453642 | ||
|
|
2ff1def28c | ||
|
|
a102540dc8 | ||
|
|
76dbf04010 | ||
|
|
8b3a1a7fec | ||
|
|
67e137705d | ||
|
|
026be596a2 | ||
|
|
363dde6d63 | ||
|
|
3802d6d3de | ||
|
|
481be2e7d2 | ||
|
|
fb951c5840 | ||
|
|
e83d029605 | ||
|
|
4f45175c4e | ||
|
|
837ebbeebf | ||
|
|
008d0b3165 | ||
|
|
133c22376c | ||
|
|
9b93e0a26c | ||
|
|
599e47907e | ||
|
|
66dc0156fb | ||
|
|
f9e9170415 | ||
|
|
9caca35a6f | ||
|
|
0c3b4bf9b7 | ||
|
|
216bf92575 | ||
|
|
4c6f3e4510 | ||
|
|
8d74e8e30b | ||
|
|
f4a8e51d4a | ||
|
|
db9032755a | ||
|
|
db017fbd56 | ||
|
|
479ceadb35 | ||
|
|
ad1d5061a9 | ||
|
|
ff0a538ebd | ||
|
|
c81adfed61 | ||
|
|
2ccf6b65a7 | ||
|
|
a34eeb7735 | ||
|
|
ba6b9c085e | ||
|
|
04f1cf9b47 | ||
|
|
80c6e03ec4 | ||
|
|
9001a78701 | ||
|
|
703cab8d0d | ||
|
|
3c9cdc9251 | ||
|
|
032805520d | ||
|
|
b37f7cfdb1 | ||
|
|
3668d631ca | ||
|
|
7fa3ea24ac | ||
|
|
8a521cbf64 | ||
|
|
fe9601aa6d | ||
|
|
65e8162d67 | ||
|
|
b99be427ce | ||
|
|
6b3b011d0b | ||
|
|
b53ef867e4 | ||
|
|
215fd32738 | ||
|
|
921603e356 | ||
|
|
542ee611fc | ||
|
|
99a8e45598 | ||
|
|
f096bd2b0d | ||
|
|
26dd87ab7c | ||
|
|
a6ea081ba2 | ||
|
|
2e87610593 | ||
|
|
1c336fc03a | ||
|
|
8eafcaab24 | ||
|
|
c096f12994 | ||
|
|
5cfc8b3629 | ||
|
|
65b3d32eca | ||
|
|
61de3c3065 | ||
|
|
3b101f673b | ||
|
|
bd79159249 | ||
|
|
ca4425cb21 | ||
|
|
b386e44bf5 | ||
|
|
03995a0327 | ||
|
|
bd6a088aaf | ||
|
|
c2582f8e03 | ||
|
|
c122e27068 | ||
|
|
52a2428c28 | ||
|
|
87b60afdf7 | ||
|
|
10069846d5 | ||
|
|
f06f9fe734 | ||
|
|
348e538d10 | ||
|
|
5b9ff9a29e | ||
|
|
62b04983f2 | ||
|
|
c40b9c8b9e | ||
|
|
46dfaeecc9 | ||
|
|
e03c9829e3 | ||
|
|
97c0e96a5a |
1513
.github/workflows/submit.yml
vendored
Normal file
1513
.github/workflows/submit.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
18
.hgtags
18
.hgtags
@@ -623,3 +623,21 @@ c45f74d45787a857d35b5a66c9b0304c91a9c5d0 jdk-11.0.10+7
|
||||
43428f69099f6f87f6e1922deacbf13e1adb751f jdk-11.0.10+8
|
||||
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10+9
|
||||
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10-ga
|
||||
4ed322bf6b0098353ceaecf35662fadf457cd81d jdk-11.0.11+1
|
||||
b68647c6ecc1e73111d8047448d75966f255460f jdk-11.0.11+2
|
||||
14cc036b17a5f4be5b0643e6b24ed32563684ab9 jdk-11.0.11+3
|
||||
c4405735470a92e2c45490b89a8099252f3481d2 jdk-11.0.11+4
|
||||
38430a8a4488582612c6a87ab58d109cc5217e8b jdk-11.0.11+5
|
||||
e41ae00add1d76a8f25adb558933382947ea840d jdk-11.0.11+6
|
||||
14f9928caac31368d27f13e4e21ca25c1e0be950 jdk-11.0.11+7
|
||||
9f0347b029d3a0349f23befcfb68ee02d85d9034 jdk-11.0.11+8
|
||||
15862747ee15445292b4b9949b4f0f4badba4812 jdk-11.0.11+9
|
||||
15862747ee15445292b4b9949b4f0f4badba4812 jdk-11.0.11-ga
|
||||
5720ffa08f8514b9f0ea8b3a49e05a872c9c0efe jdk-11.0.12+1
|
||||
70a4031a8bef3e693f34864fdd482429c73dc76a jdk-11.0.12+2
|
||||
873a691b1ae4fa8b55ca5d08fa21aca3a4904fb8 jdk-11.0.12+3
|
||||
40d1e784e1937aaea696a9654cc2d944d3d78996 jdk-11.0.12+4
|
||||
6aa6f6860508fca3a97aea1de7a36574498d22bf jdk-11.0.12+5
|
||||
91e81ac088545abdc3eaaa707853d31a6cf99af3 jdk-11.0.12+6
|
||||
f412f2537f1502a9697a9684c77bea8d848db1ab jdk-11.0.12+7
|
||||
f412f2537f1502a9697a9684c77bea8d848db1ab jdk-11.0.12-ga
|
||||
|
||||
6
.idea/copyright/JetBrains.xml
generated
6
.idea/copyright/JetBrains.xml
generated
@@ -1,9 +1,7 @@
|
||||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="notice" value="Copyright 2000-&#36;today.year JetBrains s.r.o. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." />
|
||||
<option name="keyword" value="Copyright" />
|
||||
<option name="allowReplaceKeyword" value="JetBrains" />
|
||||
<option name="allowReplaceRegexp" value="JetBrains" />
|
||||
<option name="notice" value="Copyright 2000-&#36;today.year JetBrains s.r.o. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 only, as published by the Free Software Foundation. This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details (a copy is included in the LICENSE file that accompanied this code). You should have received a copy of the GNU General Public License version 2 along with this work; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA or visit www.oracle.com if you need additional information or have any questions." />
|
||||
<option name="myName" value="JetBrains" />
|
||||
<option name="myLocal" value="true" />
|
||||
</copyright>
|
||||
</component>
|
||||
33
.jcheck/conf
33
.jcheck/conf
@@ -1,2 +1,31 @@
|
||||
project=jdk10
|
||||
bugids=dup
|
||||
[general]
|
||||
project=jdk-updates
|
||||
jbs=JDK
|
||||
version=11.0.13
|
||||
|
||||
[checks]
|
||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace
|
||||
|
||||
[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
|
||||
|
||||
[checks "merge"]
|
||||
message=Merge
|
||||
|
||||
[checks "reviewers"]
|
||||
reviewers=1
|
||||
ignore=duke
|
||||
|
||||
[checks "committer"]
|
||||
role=committer
|
||||
|
||||
[checks "issues"]
|
||||
pattern=^([124-8][0-9]{6}): (\S.*)$
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
|
||||
|
||||
# Downloads
|
||||
|
||||
|Windows-x64 |macOS |Linux-x64 |
|
||||
|-------------|-------------|-------------|
|
||||
|[  ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-windows-x64/_latestVersion)|[  ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-osx-x64/_latestVersion)|[  ](https://bintray.com/jetbrains/intellij-jdk/openjdk11-linux-x64/_latestVersion)|
|
||||
|
||||
|
||||
# How JetBrains Runtime is organised
|
||||
## Workspaces
|
||||
|
||||
|
||||
@@ -93,12 +93,10 @@
|
||||
<li><a href="#getting-help">Getting Help</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</a><ul>
|
||||
<li><a href="#setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</a></li>
|
||||
<li><a href="#bash-completion">Bash Completion</a></li>
|
||||
<li><a href="#using-multiple-configurations">Using Multiple Configurations</a></li>
|
||||
<li><a href="#handling-reconfigurations">Handling Reconfigurations</a></li>
|
||||
<li><a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a></li>
|
||||
<li><a href="#learn-about-mercurial">Learn About Mercurial</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#understanding-the-build-system">Understanding the Build System</a><ul>
|
||||
<li><a href="#configurations">Configurations</a></li>
|
||||
@@ -112,10 +110,10 @@
|
||||
</ul>
|
||||
</nav>
|
||||
<h2 id="tldr-instructions-for-the-impatient">TL;DR (Instructions for the Impatient)</h2>
|
||||
<p>If you are eager to try out building the JDK, these simple steps works most of the time. They assume that you have installed Mercurial (and Cygwin if running on Windows) and cloned the top-level JDK repository that you want to build.</p>
|
||||
<p>If you are eager to try out building the JDK, these simple steps works most of the time. They assume that you have installed Git (and Cygwin if running on Windows) and cloned the top-level JDK repository that you want to build.</p>
|
||||
<ol type="1">
|
||||
<li><p><a href="#getting-the-source-code">Get the complete source code</a>:<br />
|
||||
<code>hg clone http://hg.openjdk.java.net/jdk/jdk</code></p></li>
|
||||
<code>git clone https://git.openjdk.java.net/jdk/</code></p></li>
|
||||
<li><p><a href="#running-configure">Run configure</a>:<br />
|
||||
<code>bash configure</code></p>
|
||||
<p>If <code>configure</code> fails due to missing dependencies (to either the <a href="#native-compiler-toolchain-requirements">toolchain</a>, <a href="#build-tools-requirements">build tools</a>, <a href="#external-library-requirements">external libraries</a> or the <a href="#boot-jdk-requirements">boot JDK</a>), most of the time it prints a suggestion on how to resolve the situation on your platform. Follow the instructions, and try running <code>bash configure</code> again.</p></li>
|
||||
@@ -131,8 +129,8 @@
|
||||
<p>The JDK is a complex software project. Building it requires a certain amount of technical expertise, a fair number of dependencies on external software, and reasonably powerful hardware.</p>
|
||||
<p>If you just want to use the JDK and not build it yourself, this document is not for you. See for instance <a href="http://openjdk.java.net/install">OpenJDK installation</a> for some methods of installing a prebuilt JDK.</p>
|
||||
<h2 id="getting-the-source-code">Getting the Source Code</h2>
|
||||
<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="http://hg.openjdk.java.net/">OpenJDK Mercurial server</a> you can see a list of all available forests. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
|
||||
<p>If you are new to Mercurial, a good place to start is the <a href="http://www.mercurial-scm.org/guide">Mercurial Beginner's Guide</a>. The rest of this document assumes a working knowledge of Mercurial.</p>
|
||||
<p>Make sure you are getting the correct version. As of JDK 10, the source is no longer split into separate repositories so you only need to clone one single repository. At the <a href="https://git.openjdk.java.net/">OpenJDK Git site</a> you can see a list of all available repositories. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
|
||||
<p>If you are new to Git, a good place to start is the book <a href="https://git-scm.com/book/en/v2">Pro Git</a>. The rest of this document assumes a working knowledge of Git.</p>
|
||||
<h3 id="special-considerations">Special Considerations</h3>
|
||||
<p>For a smooth building experience, it is recommended that you follow these rules on where and how to check out the source code.</p>
|
||||
<ul>
|
||||
@@ -143,7 +141,11 @@
|
||||
<ul>
|
||||
<li><p>Create the directory that is going to contain the top directory of the JDK clone by using the <code>mkdir</code> command in the Cygwin bash shell. That is, do <em>not</em> create it using Windows Explorer. This will ensure that it will have proper Cygwin attributes, and that it's children will inherit those attributes.</p></li>
|
||||
<li><p>Do not put the JDK clone in a path under your Cygwin home directory. This is especially important if your user name contains spaces and/or mixed upper and lower case letters.</p></li>
|
||||
<li><p>Clone the JDK repository using the Cygwin command line <code>hg</code> client as instructed in this document. That is, do <em>not</em> use another Mercurial client such as TortoiseHg.</p></li>
|
||||
<li><p>You need to install a git client. You have two choices, Cygwin git or Git for Windows. Unfortunately there are pros and cons with each choice.</p>
|
||||
<ul>
|
||||
<li><p>The Cygwin <code>git</code> client has no line ending issues and understands Cygwin paths (which are used throughout the JDK build system). However, it does not currently work well with the Skara CLI tooling. Please see the <a href="https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Git">Skara wiki on Git clients</a> for up-to-date information about the Skara git client support.</p></li>
|
||||
<li><p>The <a href="https://gitforwindows.org">Git for Windows</a> client has issues with line endings, and do not understand Cygwin paths. It does work well with the Skara CLI tooling, however. To alleviate the line ending problems, make sure you set <code>core.autocrlf</code> to <code>false</code> (this is asked during installation).</p></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<p>Failure to follow this procedure might result in hard-to-debug build problems.</p></li>
|
||||
</ul>
|
||||
@@ -193,7 +195,7 @@
|
||||
<p>Windows XP is not a supported platform, but all newer Windows should be able to build the JDK.</p>
|
||||
<p>On Windows, it is important that you pay attention to the instructions in the <a href="#special-considerations">Special Considerations</a>.</p>
|
||||
<p>Windows is the only non-POSIX OS supported by the JDK, and as such, requires some extra care. A POSIX support layer is required to build on Windows. Currently, the only supported such layer is Cygwin. (Msys is no longer supported due to a too old bash; msys2 and the new Windows Subsystem for Linux (WSL) would likely be possible to support in a future version but that would require effort to implement.)</p>
|
||||
<p>Internally in the build system, all paths are represented as Unix-style paths, e.g. <code>/cygdrive/c/hg/jdk9/Makefile</code> rather than <code>C:\hg\jdk9\Makefile</code>. This rule also applies to input to the build system, e.g. in arguments to <code>configure</code>. So, use <code>--with-msvcr-dll=/cygdrive/c/msvcr100.dll</code> rather than <code>--with-msvcr-dll=c:\msvcr100.dll</code>. For details on this conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
|
||||
<p>Internally in the build system, all paths are represented as Unix-style paths, e.g. <code>/cygdrive/c/git/jdk/Makefile</code> rather than <code>C:\git\jdk\Makefile</code>. This rule also applies to input to the build system, e.g. in arguments to <code>configure</code>. So, use <code>--with-msvcr-dll=/cygdrive/c/msvcr100.dll</code> rather than <code>--with-msvcr-dll=c:\msvcr100.dll</code>. For details on this conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
|
||||
<h4 id="cygwin">Cygwin</h4>
|
||||
<p>A functioning <a href="http://www.cygwin.com/">Cygwin</a> environment is thus required for building the JDK on Windows. If you have a 64-bit OS, we strongly recommend using the 64-bit version of Cygwin.</p>
|
||||
<p><strong>Note:</strong> Cygwin has a model of continuously updating all packages without any easy way to install or revert to a specific version of a package. This means that whenever you add or update a package in Cygwin, you might (inadvertently) update tools that are used by the JDK build process, and that can cause unexpected build problems.</p>
|
||||
@@ -355,7 +357,7 @@ cc: Sun C 5.13 SunOS_i386 2014/10/20
|
||||
$ CC -V
|
||||
CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
||||
<h3 id="microsoft-visual-studio">Microsoft Visual Studio</h3>
|
||||
<p>The minimum accepted version of Visual Studio is 2010. Older versions will not be accepted by <code>configure</code>. The maximum accepted version of Visual Studio is 2017. Versions older than 2017 are unlikely to continue working for long.</p>
|
||||
<p>The minimum accepted version of Visual Studio is 2010. Older versions will not be accepted by <code>configure</code>. The maximum accepted version of Visual Studio is 2019. Versions older than 2017 are unlikely to continue working for long.</p>
|
||||
<p>If you have multiple versions of Visual Studio installed, <code>configure</code> will by default pick the latest. You can request a specific version to be used by setting <code>--with-toolchain-version</code>, e.g. <code>--with-toolchain-version=2015</code>.</p>
|
||||
<p>If you get <code>LINK: fatal error LNK1123: failure during conversion to COFF: file invalid</code> when building using Visual Studio 2010, you have encountered <a href="http://support.microsoft.com/kb/2757355">KB2757355</a>, a bug triggered by a specific installation order. However, the solution suggested by the KB article does not always resolve the problem. See <a href="https://stackoverflow.com/questions/10888391">this stackoverflow discussion</a> for other suggestions.</p>
|
||||
<h3 id="ibm-xl-cc">IBM XL C/C++</h3>
|
||||
@@ -577,27 +579,27 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th style="text-align: left;">Supported devkit targets</th>
|
||||
<th>Supported devkit targets</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">x86_64-linux-gnu</td>
|
||||
<td>x86_64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||
<td>aarch64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||
<td>arm-linux-gnueabihf</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">ppc64-linux-gnu</td>
|
||||
<td>ppc64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">ppc64le-linux-gnu</td>
|
||||
<td>ppc64le-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||
<td>s390x-linux-gnu</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -700,8 +702,8 @@ ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||
<th style="text-align: left;">Target</th>
|
||||
<th style="text-align: left;"><code>CC</code></th>
|
||||
<th style="text-align: left;"><code>CXX</code></th>
|
||||
<th style="text-align: left;"><code>--arch=...</code></th>
|
||||
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
|
||||
<th><code>--arch=...</code></th>
|
||||
<th><code>--openjdk-target=...</code></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -709,36 +711,36 @@ ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||
<td style="text-align: left;">x86</td>
|
||||
<td style="text-align: left;">default</td>
|
||||
<td style="text-align: left;">default</td>
|
||||
<td style="text-align: left;">i386</td>
|
||||
<td style="text-align: left;">i386-linux-gnu</td>
|
||||
<td>i386</td>
|
||||
<td>i386-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">armhf</td>
|
||||
<td style="text-align: left;">gcc-arm-linux-gnueabihf</td>
|
||||
<td style="text-align: left;">g++-arm-linux-gnueabihf</td>
|
||||
<td style="text-align: left;">armhf</td>
|
||||
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||
<td>armhf</td>
|
||||
<td>arm-linux-gnueabihf</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">aarch64</td>
|
||||
<td style="text-align: left;">gcc-aarch64-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-aarch64-linux-gnu</td>
|
||||
<td style="text-align: left;">arm64</td>
|
||||
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||
<td>arm64</td>
|
||||
<td>aarch64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">ppc64el</td>
|
||||
<td style="text-align: left;">gcc-powerpc64le-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-powerpc64le-linux-gnu</td>
|
||||
<td style="text-align: left;">ppc64el</td>
|
||||
<td style="text-align: left;">powerpc64le-linux-gnu</td>
|
||||
<td>ppc64el</td>
|
||||
<td>powerpc64le-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">s390x</td>
|
||||
<td style="text-align: left;">gcc-s390x-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-s390x-linux-gnu</td>
|
||||
<td style="text-align: left;">s390x</td>
|
||||
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||
<td>s390x</td>
|
||||
<td>s390x-linux-gnu</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -789,14 +791,14 @@ ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||
|
||||
=== Output from failing command(s) repeated here ===
|
||||
* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
|
||||
/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
/localhome/git/jdk-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
... (rest of output omitted)
|
||||
|
||||
* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
* All command lines available in /localhome/git/jdk-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
=== End of repeated output ===
|
||||
|
||||
=== Make failed targets repeated here ===
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/git/jdk-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
make/Main.gmk:263: recipe for target 'hotspot-server-libs' failed
|
||||
=== End of repeated output ===
|
||||
|
||||
@@ -819,11 +821,11 @@ Hint: If caused by a warning, try configure --disable-warnings-as-errors.</code>
|
||||
<p>Verify that the summary at the end looks correct. Are you indeed using the Boot JDK and native toolchain that you expect?</p>
|
||||
<p>By default, the JDK has a strict approach where warnings from the compiler is considered errors which fail the build. For very new or very old compiler versions, this can trigger new classes of warnings, which thus fails the build. Run <code>configure</code> with <code>--disable-warnings-as-errors</code> to turn of this behavior. (The warnings will still show, but not make the build fail.)</p>
|
||||
<h4 id="problems-with-incremental-rebuilds">Problems with Incremental Rebuilds</h4>
|
||||
<p>Incremental rebuilds mean that when you modify part of the product, only the affected parts get rebuilt. While this works great in most cases, and significantly speed up the development process, from time to time complex interdependencies will result in an incorrect build result. This is the most common cause for unexpected build problems, together with inconsistencies between the different Mercurial repositories in the forest.</p>
|
||||
<p>Incremental rebuilds mean that when you modify part of the product, only the affected parts get rebuilt. While this works great in most cases, and significantly speed up the development process, from time to time complex interdependencies will result in an incorrect build result. This is the most common cause for unexpected build problems.</p>
|
||||
<p>Here are a suggested list of things to try if you are having unexpected build problems. Each step requires more time than the one before, so try them in order. Most issues will be solved at step 1 or 2.</p>
|
||||
<ol type="1">
|
||||
<li><p>Make sure your forest is up-to-date</p>
|
||||
<p>Run <code>bash get_source.sh</code> to make sure you have the latest version of all repositories.</p></li>
|
||||
<li><p>Make sure your repository is up-to-date</p>
|
||||
<p>Run <code>git pull origin master</code> to make sure you have the latest changes.</p></li>
|
||||
<li><p>Clean build results</p>
|
||||
<p>The simplest way to fix incremental rebuild issues is to run <code>make clean</code>. This will remove all build results, but not the configuration or any build system support artifacts. In most cases, this will solve build errors resulting from incremental build mismatches.</p></li>
|
||||
<li><p>Completely clean the build directory.</p>
|
||||
@@ -832,8 +834,8 @@ Hint: If caused by a warning, try configure --disable-warnings-as-errors.</code>
|
||||
make dist-clean
|
||||
bash configure $(cat current-configuration)
|
||||
make</code></pre></li>
|
||||
<li><p>Re-clone the Mercurial forest</p>
|
||||
<p>Sometimes the Mercurial repositories themselves gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the "sledgehammer approach": delete the entire forest, and re-clone it. If you have local changes, save them first to a different location using <code>hg export</code>.</p></li>
|
||||
<li><p>Re-clone the Git repository</p>
|
||||
<p>Sometimes the Git repository gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the "sledgehammer approach": delete the entire repository, and re-clone it. If you have local changes, save them first to a different location using <code>git format-patch</code>.</p></li>
|
||||
</ol>
|
||||
<h3 id="specific-build-issues">Specific Build Issues</h3>
|
||||
<h4 id="clock-skew">Clock Skew</h4>
|
||||
@@ -852,28 +854,9 @@ cannot create ... Permission denied
|
||||
spawn failed</code></pre>
|
||||
<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</p>
|
||||
<h3 id="getting-help">Getting Help</h3>
|
||||
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <script type="text/javascript">
|
||||
<!--
|
||||
h='openjdk.java.net';a='@';n='build-dev';e=n+a+h;
|
||||
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
|
||||
// -->
|
||||
</script><noscript>build-dev at openjdk dot java dot net</noscript>. Please include the relevant parts of the configure and/or build log.</p>
|
||||
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
|
||||
<p>If you need general help or advice about developing for the JDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
|
||||
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
||||
<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
|
||||
<p>To help you prepare a proper push path for a Mercurial repository, there exists a useful tool known as <a href="http://openjdk.java.net/projects/code-tools/defpath">defpath</a>. It will help you setup a proper push path for pushing changes to the JDK.</p>
|
||||
<p>Install the extension by cloning <code>http://hg.openjdk.java.net/code-tools/defpath</code> and updating your <code>.hgrc</code> file. Here's one way to do this:</p>
|
||||
<pre><code>cd ~
|
||||
mkdir hg-ext
|
||||
cd hg-ext
|
||||
hg clone http://hg.openjdk.java.net/code-tools/defpath
|
||||
cat << EOT >> ~/.hgrc
|
||||
[extensions]
|
||||
defpath=~/hg-ext/defpath/defpath.py
|
||||
EOT</code></pre>
|
||||
<p>You can now setup a proper push path using:</p>
|
||||
<pre><code>hg defpath -d -u <your OpenJDK username></code></pre>
|
||||
<p>If you also have the <code>trees</code> extension installed in Mercurial, you will automatically get a <code>tdefpath</code> command, which is even more useful. By running <code>hg tdefpath -du <username></code> in the top repository of your forest, all repos will get setup automatically. This is the recommended usage.</p>
|
||||
<h3 id="bash-completion">Bash Completion</h3>
|
||||
<p>The <code>configure</code> and <code>make</code> commands tries to play nice with bash command-line completion (using <code><tab></code> or <code><tab><tab></code>). To use this functionality, make sure you enable completion in your <code>~/.bashrc</code> (see instructions for bash in your operating system).</p>
|
||||
<p>Make completion will work out of the box, and will complete valid make targets. For instance, typing <code>make jdk-i<tab></code> will complete to <code>make jdk-image</code>.</p>
|
||||
@@ -927,14 +910,6 @@ sudo mv /tmp/configure /usr/local/bin</code></pre>
|
||||
<h4 id="rebuilding-part-of-java.base-jdk_filter">Rebuilding Part of java.base (JDK_FILTER)</h4>
|
||||
<p>If you are modifying files in <code>java.base</code>, which is the by far largest module in the JDK, then you need to rebuild all those files whenever a single file has changed. (This inefficiency will hopefully be addressed in JDK 10.)</p>
|
||||
<p>As a hack, you can use the make control variable <code>JDK_FILTER</code> to specify a pattern that will be used to limit the set of files being recompiled. For instance, <code>make java.base JDK_FILTER=javax/crypto</code> (or, to combine methods, <code>make java.base-java-only JDK_FILTER=javax/crypto</code>) will limit the compilation to files in the <code>javax.crypto</code> package.</p>
|
||||
<h3 id="learn-about-mercurial">Learn About Mercurial</h3>
|
||||
<p>To become an efficient JDK developer, it is recommended that you invest in learning Mercurial properly. Here are some links that can get you started:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.mercurial-scm.org/wiki/GitConcepts">Mercurial for git users</a></li>
|
||||
<li><a href="http://www.mercurial-scm.org/wiki/Tutorial">The official Mercurial tutorial</a></li>
|
||||
<li><a href="http://hginit.com/">hg init</a></li>
|
||||
<li><a href="http://hgbook.red-bean.com/read/">Mercurial: The Definitive Guide</a></li>
|
||||
</ul>
|
||||
<h2 id="understanding-the-build-system">Understanding the Build System</h2>
|
||||
<p>This section will give you a more technical description on the details of the build system.</p>
|
||||
<h3 id="configurations">Configurations</h3>
|
||||
|
||||
104
doc/building.md
104
doc/building.md
@@ -3,11 +3,11 @@
|
||||
## TL;DR (Instructions for the Impatient)
|
||||
|
||||
If you are eager to try out building the JDK, these simple steps works most of
|
||||
the time. They assume that you have installed Mercurial (and Cygwin if running
|
||||
the time. They assume that you have installed Git (and Cygwin if running
|
||||
on Windows) and cloned the top-level JDK repository that you want to build.
|
||||
|
||||
1. [Get the complete source code](#getting-the-source-code): \
|
||||
`hg clone http://hg.openjdk.java.net/jdk/jdk`
|
||||
`git clone https://git.openjdk.java.net/jdk/`
|
||||
|
||||
2. [Run configure](#running-configure): \
|
||||
`bash configure`
|
||||
@@ -47,14 +47,14 @@ JDK.
|
||||
|
||||
Make sure you are getting the correct version. As of JDK 10, the source is no
|
||||
longer split into separate repositories so you only need to clone one single
|
||||
repository. At the [OpenJDK Mercurial server](http://hg.openjdk.java.net/) you
|
||||
can see a list of all available forests. If you want to build an older version,
|
||||
repository. At the [OpenJDK Git site](https://git.openjdk.java.net/) you
|
||||
can see a list of all available repositories. If you want to build an older version,
|
||||
e.g. JDK 8, it is recommended that you get the `jdk8u` forest, which contains
|
||||
incremental updates, instead of the `jdk8` forest, which was frozen at JDK 8 GA.
|
||||
|
||||
If you are new to Mercurial, a good place to start is the [Mercurial Beginner's
|
||||
Guide](http://www.mercurial-scm.org/guide). The rest of this document assumes a
|
||||
working knowledge of Mercurial.
|
||||
If you are new to Git, a good place to start is the book [Pro
|
||||
Git](https://git-scm.com/book/en/v2). The rest of this document
|
||||
assumes a working knowledge of Git.
|
||||
|
||||
### Special Considerations
|
||||
|
||||
@@ -89,9 +89,21 @@ on where and how to check out the source code.
|
||||
directory. This is especially important if your user name contains
|
||||
spaces and/or mixed upper and lower case letters.
|
||||
|
||||
* Clone the JDK repository using the Cygwin command line `hg` client
|
||||
as instructed in this document. That is, do *not* use another Mercurial
|
||||
client such as TortoiseHg.
|
||||
* You need to install a git client. You have two choices, Cygwin git or
|
||||
Git for Windows. Unfortunately there are pros and cons with each choice.
|
||||
|
||||
* The Cygwin `git` client has no line ending issues and understands
|
||||
Cygwin paths (which are used throughout the JDK build system).
|
||||
However, it does not currently work well with the Skara CLI tooling.
|
||||
Please see the [Skara wiki on Git clients](
|
||||
https://wiki.openjdk.java.net/display/SKARA/Skara#Skara-Git) for
|
||||
up-to-date information about the Skara git client support.
|
||||
|
||||
* The [Git for Windows](https://gitforwindows.org) client has issues
|
||||
with line endings, and do not understand Cygwin paths. It does work
|
||||
well with the Skara CLI tooling, however. To alleviate the line ending
|
||||
problems, make sure you set `core.autocrlf` to `false` (this is asked
|
||||
during installation).
|
||||
|
||||
Failure to follow this procedure might result in hard-to-debug build
|
||||
problems.
|
||||
@@ -171,7 +183,7 @@ supported due to a too old bash; msys2 and the new Windows Subsystem for Linux
|
||||
require effort to implement.)
|
||||
|
||||
Internally in the build system, all paths are represented as Unix-style paths,
|
||||
e.g. `/cygdrive/c/hg/jdk9/Makefile` rather than `C:\hg\jdk9\Makefile`. This
|
||||
e.g. `/cygdrive/c/git/jdk/Makefile` rather than `C:\git\jdk\Makefile`. This
|
||||
rule also applies to input to the build system, e.g. in arguments to
|
||||
`configure`. So, use `--with-msvcr-dll=/cygdrive/c/msvcr100.dll` rather than
|
||||
`--with-msvcr-dll=c:\msvcr100.dll`. For details on this conversion, see the section
|
||||
@@ -371,7 +383,7 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30
|
||||
|
||||
The minimum accepted version of Visual Studio is 2010. Older versions will not
|
||||
be accepted by `configure`. The maximum accepted version of Visual Studio is
|
||||
2017. Versions older than 2017 are unlikely to continue working for long.
|
||||
2019. Versions older than 2017 are unlikely to continue working for long.
|
||||
|
||||
If you have multiple versions of Visual Studio installed, `configure` will by
|
||||
default pick the latest. You can request a specific version to be used by
|
||||
@@ -1261,14 +1273,14 @@ ERROR: Build failed for target 'hotspot' in configuration 'linux-x64' (exit code
|
||||
|
||||
=== Output from failing command(s) repeated here ===
|
||||
* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
|
||||
/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
/localhome/git/jdk-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
|
||||
... (rest of output omitted)
|
||||
|
||||
* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
* All command lines available in /localhome/git/jdk-sandbox/build/linux-x64/make-support/failure-logs.
|
||||
=== End of repeated output ===
|
||||
|
||||
=== Make failed targets repeated here ===
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
lib/CompileJvm.gmk:207: recipe for target '/localhome/git/jdk-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
|
||||
make/Main.gmk:263: recipe for target 'hotspot-server-libs' failed
|
||||
=== End of repeated output ===
|
||||
|
||||
@@ -1358,17 +1370,15 @@ Incremental rebuilds mean that when you modify part of the product, only the
|
||||
affected parts get rebuilt. While this works great in most cases, and
|
||||
significantly speed up the development process, from time to time complex
|
||||
interdependencies will result in an incorrect build result. This is the most
|
||||
common cause for unexpected build problems, together with inconsistencies
|
||||
between the different Mercurial repositories in the forest.
|
||||
common cause for unexpected build problems.
|
||||
|
||||
Here are a suggested list of things to try if you are having unexpected build
|
||||
problems. Each step requires more time than the one before, so try them in
|
||||
order. Most issues will be solved at step 1 or 2.
|
||||
|
||||
1. Make sure your forest is up-to-date
|
||||
1. Make sure your repository is up-to-date
|
||||
|
||||
Run `bash get_source.sh` to make sure you have the latest version of all
|
||||
repositories.
|
||||
Run `git pull origin master` to make sure you have the latest changes.
|
||||
|
||||
2. Clean build results
|
||||
|
||||
@@ -1393,13 +1403,13 @@ order. Most issues will be solved at step 1 or 2.
|
||||
make
|
||||
```
|
||||
|
||||
4. Re-clone the Mercurial forest
|
||||
4. Re-clone the Git repository
|
||||
|
||||
Sometimes the Mercurial repositories themselves gets in a state that causes
|
||||
the product to be un-buildable. In such a case, the simplest solution is
|
||||
often the "sledgehammer approach": delete the entire forest, and re-clone
|
||||
it. If you have local changes, save them first to a different location
|
||||
using `hg export`.
|
||||
Sometimes the Git repository gets in a state that causes the product
|
||||
to be un-buildable. In such a case, the simplest solution is often the
|
||||
"sledgehammer approach": delete the entire repository, and re-clone it.
|
||||
If you have local changes, save them first to a different location using
|
||||
`git format-patch`.
|
||||
|
||||
### Specific Build Issues
|
||||
|
||||
@@ -1450,38 +1460,6 @@ contact the Adoption Group. See the section on [Contributing to OpenJDK](
|
||||
|
||||
## Hints and Suggestions for Advanced Users
|
||||
|
||||
### Setting Up a Forest for Pushing Changes (defpath)
|
||||
|
||||
To help you prepare a proper push path for a Mercurial repository, there exists
|
||||
a useful tool known as [defpath](
|
||||
http://openjdk.java.net/projects/code-tools/defpath). It will help you setup a
|
||||
proper push path for pushing changes to the JDK.
|
||||
|
||||
Install the extension by cloning
|
||||
`http://hg.openjdk.java.net/code-tools/defpath` and updating your `.hgrc` file.
|
||||
Here's one way to do this:
|
||||
|
||||
```
|
||||
cd ~
|
||||
mkdir hg-ext
|
||||
cd hg-ext
|
||||
hg clone http://hg.openjdk.java.net/code-tools/defpath
|
||||
cat << EOT >> ~/.hgrc
|
||||
[extensions]
|
||||
defpath=~/hg-ext/defpath/defpath.py
|
||||
EOT
|
||||
```
|
||||
|
||||
You can now setup a proper push path using:
|
||||
```
|
||||
hg defpath -d -u <your OpenJDK username>
|
||||
```
|
||||
|
||||
If you also have the `trees` extension installed in Mercurial, you will
|
||||
automatically get a `tdefpath` command, which is even more useful. By running
|
||||
`hg tdefpath -du <username>` in the top repository of your forest, all repos
|
||||
will get setup automatically. This is the recommended usage.
|
||||
|
||||
### Bash Completion
|
||||
|
||||
The `configure` and `make` commands tries to play nice with bash command-line
|
||||
@@ -1624,16 +1602,6 @@ instance, `make java.base JDK_FILTER=javax/crypto` (or, to combine methods,
|
||||
`make java.base-java-only JDK_FILTER=javax/crypto`) will limit the compilation
|
||||
to files in the `javax.crypto` package.
|
||||
|
||||
### Learn About Mercurial
|
||||
|
||||
To become an efficient JDK developer, it is recommended that you invest in
|
||||
learning Mercurial properly. Here are some links that can get you started:
|
||||
|
||||
* [Mercurial for git users](http://www.mercurial-scm.org/wiki/GitConcepts)
|
||||
* [The official Mercurial tutorial](http://www.mercurial-scm.org/wiki/Tutorial)
|
||||
* [hg init](http://hginit.com/)
|
||||
* [Mercurial: The Definitive Guide](http://hgbook.red-bean.com/read/)
|
||||
|
||||
## Understanding the Build System
|
||||
|
||||
This section will give you a more technical description on the details of the
|
||||
|
||||
@@ -4,9 +4,9 @@ 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 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 11
|
||||
RUN wget https://bintray.com/jetbrains/intellij-jbr/download_file?file_path=jbrsdk-11_0_3-linux-x64-b360.2.tar.gz \
|
||||
RUN wget https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-linux_x64.tar.gz \
|
||||
-O - | tar xz -C /
|
||||
ENV JAVA_HOME /jbrsdk
|
||||
ENV JAVA_HOME /zulu11.45.27-ca-jdk11.0.10-linux_x64
|
||||
ENV PATH $JAVA_HOME/bin:/opt/rh/devtoolset-8/root/usr/bin:$PATH
|
||||
RUN git config --global user.email "teamcity@buildserver.intellij.net"
|
||||
RUN git config --global user.name "builduser"
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
diff --git modules.list modules.list
|
||||
index e23d793..368d022 100644
|
||||
index 33375b527c4..76539cbc0e0 100644
|
||||
--- modules.list
|
||||
+++ modules.list
|
||||
@@ -54,4 +54,7 @@ jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
@@ -55,4 +55,7 @@ jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs,
|
||||
-jdk.hotspot.agent
|
||||
+jdk.hotspot.agent,
|
||||
jdk.hotspot.agent,
|
||||
-jdk.jcmd
|
||||
+jdk.jcmd,
|
||||
+jcef,
|
||||
+gluegen.rt,
|
||||
+jogl.all
|
||||
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
|
||||
index b663b38..3e9acdc 100644
|
||||
index b663b382f52..3e9acdc0c27 100644
|
||||
--- src/java.desktop/share/classes/module-info.java
|
||||
+++ src/java.desktop/share/classes/module-info.java
|
||||
@@ -109,7 +109,11 @@ module java.desktop {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From d75ca6d0d1799ffde4199f6ef5047699b98d3ff2 Mon Sep 17 00:00:00 2001
|
||||
From 07373a8bd65d7c2663024709f0d5b7e0e41aba40 Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:09:39 +0100
|
||||
Subject: [PATCH 01/18] Apply basic dcevm11 patch
|
||||
Subject: [PATCH 01/28] Apply basic dcevm11 patch
|
||||
|
||||
---
|
||||
src/hotspot/share/ci/ciObjectFactory.cpp | 25 +
|
||||
@@ -449,10 +449,10 @@ index d26f1f11fb4..fd4b134d7a7 100644
|
||||
|
||||
// An entry in the class loader data dictionaries, this describes a class as
|
||||
diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp
|
||||
index fc4efecc6e7..903979c9ef2 100644
|
||||
index e4f1b934afc..ef4011c1292 100644
|
||||
--- a/src/hotspot/share/classfile/javaClasses.cpp
|
||||
+++ b/src/hotspot/share/classfile/javaClasses.cpp
|
||||
@@ -2446,6 +2446,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
|
||||
@@ -2428,6 +2428,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
|
||||
skip_throwableInit_check = true;
|
||||
}
|
||||
}
|
||||
@@ -461,7 +461,7 @@ index fc4efecc6e7..903979c9ef2 100644
|
||||
if (method->is_hidden()) {
|
||||
if (skip_hidden) continue;
|
||||
}
|
||||
@@ -3628,6 +3630,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
|
||||
@@ -3610,6 +3612,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -524,7 +524,7 @@ index fc4efecc6e7..903979c9ef2 100644
|
||||
// Support for java_lang_invoke_MethodHandle
|
||||
|
||||
int java_lang_invoke_MethodHandle::_type_offset;
|
||||
@@ -3814,6 +3872,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
|
||||
@@ -3796,6 +3854,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
|
||||
resolved_method->address_field_put(_vmtarget_offset, (address)m);
|
||||
}
|
||||
|
||||
@@ -537,7 +537,7 @@ index fc4efecc6e7..903979c9ef2 100644
|
||||
// lookup ResolvedMethod oop in the table, or create a new one and intern it
|
||||
oop resolved_method = ResolvedMethodTable::find_method(m());
|
||||
diff --git a/src/hotspot/share/classfile/javaClasses.hpp b/src/hotspot/share/classfile/javaClasses.hpp
|
||||
index bd9cdca3fe3..da004d1b307 100644
|
||||
index 910bb084b63..89a46264553 100644
|
||||
--- a/src/hotspot/share/classfile/javaClasses.hpp
|
||||
+++ b/src/hotspot/share/classfile/javaClasses.hpp
|
||||
@@ -67,6 +67,8 @@
|
||||
@@ -561,7 +561,7 @@ index bd9cdca3fe3..da004d1b307 100644
|
||||
static void allocate_fixup_lists();
|
||||
static void compute_offsets();
|
||||
|
||||
@@ -1055,6 +1057,55 @@ class java_lang_invoke_DirectMethodHandle: AllStatic {
|
||||
@@ -1048,6 +1050,55 @@ class java_lang_invoke_DirectMethodHandle: AllStatic {
|
||||
static int member_offset_in_bytes() { return _member_offset; }
|
||||
};
|
||||
|
||||
@@ -617,7 +617,7 @@ index bd9cdca3fe3..da004d1b307 100644
|
||||
// Interface to java.lang.invoke.LambdaForm objects
|
||||
// (These are a private interface for managing adapter code generation.)
|
||||
|
||||
@@ -1106,6 +1157,7 @@ class java_lang_invoke_ResolvedMethodName : AllStatic {
|
||||
@@ -1099,6 +1150,7 @@ class java_lang_invoke_ResolvedMethodName : AllStatic {
|
||||
|
||||
static Method* vmtarget(oop resolved_method);
|
||||
static void set_vmtarget(oop resolved_method, Method* method);
|
||||
@@ -977,7 +977,7 @@ index 05239c57866..c1357bde0ed 100644
|
||||
methodHandle _method; // current method being verified
|
||||
VerificationType _this_type; // the verification type of the current class
|
||||
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
index 44cf2583eb9..41e9a84cd69 100644
|
||||
index 8955dd0b366..26ff6ee9853 100644
|
||||
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
@@ -286,6 +286,8 @@
|
||||
@@ -1684,10 +1684,10 @@ index 81998728f66..b9ccdee8cca 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
index 77c28924b0d..84891b48c2a 100644
|
||||
index 6cf7aec68f8..61a406377ee 100644
|
||||
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
@@ -1467,6 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
@@ -1471,6 +1471,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
NULL, // host klass
|
||||
NULL, // cp_patches
|
||||
ClassFileParser::INTERNAL, // internal visibility
|
||||
@@ -2260,7 +2260,7 @@ index 21e7f652652..e9cc3de9652 100644
|
||||
|
||||
if (log_is_enabled(Debug, class, resolve) && k != NULL) {
|
||||
diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp
|
||||
index 378dcce8cf5..f92d2697e0e 100644
|
||||
index 0d686d85fc7..70b525533cd 100644
|
||||
--- a/src/hotspot/share/prims/jvm.cpp
|
||||
+++ b/src/hotspot/share/prims/jvm.cpp
|
||||
@@ -936,6 +936,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
|
||||
@@ -2273,7 +2273,7 @@ index 378dcce8cf5..f92d2697e0e 100644
|
||||
if (log_is_enabled(Debug, class, resolve) && k != NULL) {
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
new file mode 100644
|
||||
index 00000000000..80c31135487
|
||||
index 00000000000..83c0952de37
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -0,0 +1,2255 @@
|
||||
@@ -4534,7 +4534,7 @@ index 00000000000..80c31135487
|
||||
+}
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
new file mode 100644
|
||||
index 00000000000..3f95cf42645
|
||||
index 00000000000..b712d69a193
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -0,0 +1,202 @@
|
||||
@@ -4819,7 +4819,7 @@ index 6600848e2d3..9337b6ab585 100644
|
||||
if (_code_blobs != NULL) {
|
||||
for (int i=0; i<_code_blobs->length(); i++) {
|
||||
diff --git a/src/hotspot/share/prims/jvmtiExport.hpp b/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
index cc5868f1e93..a6cbac03bb2 100644
|
||||
index b8246554f74..be2c373aba7 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
@@ -176,6 +176,7 @@ class JvmtiExport : public AllStatic {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From ebd5c9df33771ad5181a225cccc0cca3881a4dbe Mon Sep 17 00:00:00 2001
|
||||
From 41093b9513718c3122f3ff36da7fc2eeca224a10 Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:18:22 +0100
|
||||
Subject: [PATCH 02/18] dcevm11 fixes
|
||||
Subject: [PATCH 02/28] dcevm11 fixes
|
||||
|
||||
1. We need to set classRedefinitionCount on new class, not old class.
|
||||
|
||||
@@ -463,7 +463,7 @@ index 2cc98b636f1..e8107a39813 100644
|
||||
// link this class into the implementors list of every interface it implements
|
||||
void process_interfaces(Thread *thread);
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 80c31135487..43d761cdbb2 100644
|
||||
index 83c0952de37..92ce6c27b8a 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -1,4 +1,4 @@
|
||||
@@ -1394,7 +1394,7 @@ index 80c31135487..43d761cdbb2 100644
|
||||
ResourceMark mark(THREAD);
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
index 3f95cf42645..a48e07e3a6a 100644
|
||||
index b712d69a193..60b62c3170a 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From aaefe6f66a8d363eb35fcdc8ce29bb25be67fe1c Mon Sep 17 00:00:00 2001
|
||||
From caa877d9126bd91d6719675a83928ba01bffb69a Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 12 Dec 2018 19:38:28 +0100
|
||||
Subject: [PATCH 03/18] Support for Concurrent Mark Sweep (CMS) collector
|
||||
Subject: [PATCH 03/28] Support for Concurrent Mark Sweep (CMS) collector
|
||||
|
||||
---
|
||||
.../share/gc/cms/compactibleFreeListSpace.cpp | 139 ++++++++++++------
|
||||
@@ -422,7 +422,7 @@ index 6b109fcd2e5..8c255d6d428 100644
|
||||
Klass* new_version = oop(cur_obj)->klass()->new_version();
|
||||
if (new_version->update_information() == NULL) {
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 43d761cdbb2..14af1aad21b 100644
|
||||
index 92ce6c27b8a..41e82ae7a69 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -54,6 +54,7 @@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 002ad1880190d0749f8f8d325c587fd9275bdab2 Mon Sep 17 00:00:00 2001
|
||||
From 93373779a1d44181ca07498faa8a0e8d7fc6b608 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
|
||||
Date: Wed, 11 Mar 2020 14:19:34 +0100
|
||||
Subject: [PATCH 04/18] Fix class cast exception on redefinition of class A,
|
||||
Subject: [PATCH 04/28] Fix class cast exception on redefinition of class A,
|
||||
that is superclass of B that has anonymous class C
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a00292280f4e3754bffc7a0c562dca1d7552eb39 Mon Sep 17 00:00:00 2001
|
||||
From c8850725d4c84f93beaee3c05f9d8f9862fe6159 Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:20:08 +0100
|
||||
Subject: [PATCH 05/18] HotswapAgent integration
|
||||
Date: Thu, 15 Nov 2018 03:20:08 +0700
|
||||
Subject: [PATCH 05/28] HotswapAgent integration
|
||||
|
||||
It include:
|
||||
|
||||
@@ -37,7 +37,7 @@ old DCEVM
|
||||
make/launcher/Launcher-jdk.jartool.gmk | 2 +
|
||||
make/launcher/Launcher-jdk.javadoc.gmk | 3 +-
|
||||
make/launcher/Launcher-jdk.jcmd.gmk | 13 +++-
|
||||
make/launcher/Launcher-jdk.jconsole.gmk | 3 +-
|
||||
make/launcher/Launcher-jdk.jconsole.gmk | 1 +
|
||||
make/launcher/Launcher-jdk.jdeps.gmk | 3 +
|
||||
make/launcher/Launcher-jdk.jdi.gmk | 1 +
|
||||
make/launcher/Launcher-jdk.jlink.gmk | 5 +-
|
||||
@@ -55,7 +55,7 @@ old DCEVM
|
||||
.../classes/com/sun/beans/package-info.java | 26 +++++++
|
||||
.../com/sun/beans/util/package-info.java | 26 +++++++
|
||||
.../share/classes/module-info.java | 3 +
|
||||
28 files changed, 209 insertions(+), 11 deletions(-)
|
||||
28 files changed, 208 insertions(+), 10 deletions(-)
|
||||
create mode 100644 src/java.desktop/share/classes/com/sun/beans/introspect/package-info.java
|
||||
create mode 100644 src/java.desktop/share/classes/com/sun/beans/package-info.java
|
||||
create mode 100644 src/java.desktop/share/classes/com/sun/beans/util/package-info.java
|
||||
@@ -259,16 +259,14 @@ index 7117fa78059..761a52d8466 100644
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
diff --git a/make/launcher/Launcher-jdk.jconsole.gmk b/make/launcher/Launcher-jdk.jconsole.gmk
|
||||
index 575b9e0595b..9b38683a489 100644
|
||||
index 575b9e0595b..2f442f69113 100644
|
||||
--- a/make/launcher/Launcher-jdk.jconsole.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jconsole.gmk
|
||||
@@ -29,7 +29,8 @@ $(eval $(call SetupBuildLauncher, jconsole, \
|
||||
MAIN_CLASS := sun.tools.jconsole.JConsole, \
|
||||
@@ -30,6 +30,7 @@ $(eval $(call SetupBuildLauncher, jconsole, \
|
||||
JAVA_ARGS := --add-opens java.base/java.io=jdk.jconsole \
|
||||
-Djconsole.showOutputViewer \
|
||||
- -Djdk.attach.allowAttachSelf=true, \
|
||||
+ -Djdk.attach.allowAttachSelf=true \
|
||||
+ -XX:+DisableHotswapAgent, \
|
||||
-Djdk.attach.allowAttachSelf=true, \
|
||||
+ -XX:+DisableHotswapAgent, \
|
||||
CFLAGS_windows := -DJAVAW, \
|
||||
LIBS_windows := user32.lib, \
|
||||
))
|
||||
@@ -392,7 +390,7 @@ index 82311e69fd6..bd39f8595b2 100644
|
||||
CFLAGS := -DENABLE_ARG_FILES, \
|
||||
))
|
||||
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
index 41e9a84cd69..1f67eb202b5 100644
|
||||
index 26ff6ee9853..2409af9b06e 100644
|
||||
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
@@ -342,6 +342,7 @@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 62f3578e0a73913c1262a1612a464d19abfeb626 Mon Sep 17 00:00:00 2001
|
||||
From 1552e3854e11fb835452aa531ef53b78bb4588a5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 4 Oct 2020 21:12:12 +0200
|
||||
Subject: [PATCH 06/18] Support for Lambda class redefinition
|
||||
Subject: [PATCH 06/28] Support for Lambda class redefinition
|
||||
|
||||
---
|
||||
.../share/classfile/classLoaderData.cpp | 9 +++
|
||||
@@ -111,7 +111,7 @@ index 06f6c869d63..1dbbffa197f 100644
|
||||
TRAPS);
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 14af1aad21b..0b239b2ff6d 100644
|
||||
index 41e82ae7a69..b94caa39562 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -488,6 +488,8 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||
@@ -208,7 +208,7 @@ index 14af1aad21b..0b239b2ff6d 100644
|
||||
|
||||
// Sort the affected klasses such that a supertype is always on a smaller array index than its subtype.
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
index a48e07e3a6a..3551b06ecde 100644
|
||||
index 60b62c3170a..d8a11b51fe9 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -116,6 +116,7 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||
@@ -242,7 +242,7 @@ index af2ec48c2e1..7741328979f 100644
|
||||
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||
assert(old_method != newer_method, "sanity check");
|
||||
diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp
|
||||
index c071f8b7cc6..e484b8991d1 100644
|
||||
index 1983b4f45f0..5e7aca092eb 100644
|
||||
--- a/src/hotspot/share/prims/unsafe.cpp
|
||||
+++ b/src/hotspot/share/prims/unsafe.cpp
|
||||
@@ -820,6 +820,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 4b445e7a7f77f82f757c12010e3c88b2eb4698f9 Mon Sep 17 00:00:00 2001
|
||||
From 83c2efaeb6ea9ee29c6d9eb779991db787c036ac Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 23 May 2020 10:02:15 +0200
|
||||
Subject: [PATCH 07/18] Fix "no original bytecode found" error if method with
|
||||
Subject: [PATCH 07/28] Fix "no original bytecode found" error if method with
|
||||
bkp is missing
|
||||
|
||||
Sometimes IDE can deploy class with erroneous method, such method has
|
||||
@@ -102,7 +102,7 @@ index 4533476ff8f..193e1845b23 100644
|
||||
void set_breakpoint(int bci);
|
||||
void clear_breakpoint(int bci);
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 0b239b2ff6d..aba99bb60fa 100644
|
||||
index b94caa39562..1fbba406087 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -1356,14 +1356,16 @@ void VM_EnhancedRedefineClasses::unpatch_bytecode(Method* method) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c022124c6e0680d2dfc174f66fc858b0eb2591dc Mon Sep 17 00:00:00 2001
|
||||
From f9e238b9bf2cc3ae0c437fa3ebb1703c35f575cf Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 24 May 2020 12:07:42 +0200
|
||||
Subject: [PATCH 08/18] Replace deleted method with
|
||||
Subject: [PATCH 08/28] Replace deleted method with
|
||||
Universe::throw_no_such_method_error
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From aa1d291c7349e5cecf9d93e817d0866460deb903 Mon Sep 17 00:00:00 2001
|
||||
From a579caf20ac76a5d7cc159d5fed2efa074380f0f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 12 Jun 2020 17:43:52 +0200
|
||||
Subject: [PATCH 09/18] Support for G1 gc
|
||||
Subject: [PATCH 09/28] Support for G1 gc
|
||||
|
||||
---
|
||||
src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 20 +++
|
||||
@@ -31,10 +31,10 @@ Subject: [PATCH 09/18] Support for G1 gc
|
||||
create mode 100644 src/hotspot/share/gc/shared/dcevmSharedGC.hpp
|
||||
|
||||
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
index dea8d9fdb0e..33664a30519 100644
|
||||
index a15b400c8e4..985fbad581b 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
@@ -2108,6 +2108,21 @@ public:
|
||||
@@ -2111,6 +2111,21 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
@@ -56,7 +56,7 @@ index dea8d9fdb0e..33664a30519 100644
|
||||
void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
|
||||
IterateObjectClosureRegionClosure blk(cl);
|
||||
heap_region_iterate(&blk);
|
||||
@@ -2117,6 +2132,11 @@ void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
|
||||
@@ -2124,6 +2139,11 @@ void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
|
||||
_hrm.iterate(cl);
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ index dea8d9fdb0e..33664a30519 100644
|
||||
HeapRegionClaimer *hrclaimer,
|
||||
uint worker_id) const {
|
||||
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
|
||||
index 8a171dc6b52..05a068bb2e0 100644
|
||||
index be160d04bfe..9e92ee4a1fa 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp
|
||||
@@ -144,6 +144,7 @@ class G1CollectedHeap : public CollectedHeap {
|
||||
@@ -1040,7 +1040,7 @@ index d0a6d665aa0..3dc4cc1323c 100644
|
||||
SystemDictionary::oops_do(oopClosure);
|
||||
}
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index aba99bb60fa..8b6fad2128e 100644
|
||||
index 1fbba406087..e67fc2dd58f 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -36,7 +36,6 @@
|
||||
@@ -1244,7 +1244,7 @@ index aba99bb60fa..8b6fad2128e 100644
|
||||
ResourceMark mark(THREAD);
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
index 3551b06ecde..62a0fbf54d4 100644
|
||||
index d8a11b51fe9..9755944d70b 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -86,9 +86,10 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b6ea0ee6fcc376f575be0f461c494664d55ed986 Mon Sep 17 00:00:00 2001
|
||||
From 8d14e792d9849beedc74de690cf4d208ac384878 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 13 Jun 2020 18:50:59 +0200
|
||||
Subject: [PATCH 10/18] Change log level in advanced redefinition
|
||||
Subject: [PATCH 10/28] Change log level in advanced redefinition
|
||||
|
||||
- Change log level for "Comparing different class ver.." to debug
|
||||
- Fix adjust_method_entries_dcevm logging levels and severity
|
||||
@@ -11,7 +11,7 @@ Subject: [PATCH 10/18] Change log level in advanced redefinition
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 8b6fad2128e..a8adfa5af47 100644
|
||||
index e67fc2dd58f..5be9bb74305 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -915,7 +915,7 @@ jvmtiError VM_EnhancedRedefineClasses::load_new_class_versions(TRAPS) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From ef1098751c596a03fd1721affc20d221b3544d37 Mon Sep 17 00:00:00 2001
|
||||
From 5c437ade174426dbaf99a53823597ac7d3b1b4da Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Tue, 6 Oct 2020 22:15:31 +0200
|
||||
Subject: [PATCH 11/18] AllowEnhancedClassRedefinition is false (disabled) by
|
||||
Subject: [PATCH 11/28] AllowEnhancedClassRedefinition is false (disabled) by
|
||||
default
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 6a78dda15c66cbba1ca6a2d7f3df3a55fc087f50 Mon Sep 17 00:00:00 2001
|
||||
From 8b1c8178e66af30012fdda3e7f1076309daaf6c4 Mon Sep 17 00:00:00 2001
|
||||
From: Artem Khvastunov <artem.khvastunov@jetbrains.com>
|
||||
Date: Tue, 14 Apr 2020 19:11:35 +0200
|
||||
Subject: [PATCH 12/18] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
|
||||
Subject: [PATCH 12/28] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
|
||||
|
||||
---
|
||||
jb/project/hotspot-cmake/CMakeLists.txt | 2 ++
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
From 80c1cd01b45735928e3b3e9283b5484ea6a70a7f Mon Sep 17 00:00:00 2001
|
||||
From 5e7a1218684556596677f39ae01b2ec13ff68a19 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Mon, 19 Oct 2020 20:00:04 +0200
|
||||
Subject: [PATCH 13/18] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
|
||||
Subject: [PATCH 13/28] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
|
||||
|
||||
---
|
||||
make/autoconf/version-numbers | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/make/autoconf/version-numbers b/make/autoconf/version-numbers
|
||||
index 1d08f6a80dc..88b4d460ee8 100644
|
||||
index b9440902d34..c487ac6f047 100644
|
||||
--- a/make/autoconf/version-numbers
|
||||
+++ b/make/autoconf/version-numbers
|
||||
@@ -44,7 +44,7 @@ PRODUCT_NAME=OpenJDK
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 122562d31005edd3573a645c3a02c1d8fe843c5e Mon Sep 17 00:00:00 2001
|
||||
From c2a4abf7d01ecd7bd262e824338d6235a584086b Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 11 Oct 2020 10:43:28 +0200
|
||||
Subject: [PATCH 14/18] Fix G1 nmethod registration
|
||||
Subject: [PATCH 14/28] Fix G1 nmethod registration
|
||||
|
||||
---
|
||||
.../prims/jvmtiEnhancedRedefineClasses.cpp | 19 ++++++++++++++++---
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH 14/18] Fix G1 nmethod registration
|
||||
2 files changed, 18 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index a8adfa5af47..4ee12b7021f 100644
|
||||
index 5be9bb74305..f4bde7504c8 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -217,7 +217,14 @@ void VM_EnhancedRedefineClasses::mark_as_scavengable(nmethod* nm) {
|
||||
@@ -53,7 +53,7 @@ index a8adfa5af47..4ee12b7021f 100644
|
||||
log_trace(redefine, class, obsolete, metadata)("After updating instances");
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
index 62a0fbf54d4..d00109a0b92 100644
|
||||
index 9755944d70b..4c0412d343d 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -116,7 +116,8 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 0156b2084be20579b407e112a00ba15f54248003 Mon Sep 17 00:00:00 2001
|
||||
From f0b7253294f14a64a5a4d0ef825e5377da03efa5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Thu, 22 Oct 2020 20:15:20 +0200
|
||||
Subject: [PATCH 15/18] Initialize method's _new_version/_old_version to NULL
|
||||
Subject: [PATCH 15/28] Initialize method's _new_version/_old_version to NULL
|
||||
|
||||
---
|
||||
src/hotspot/share/oops/method.cpp | 3 ++-
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 81ba8f1d120e158a7b0cfa09b5dd51295d51901f Mon Sep 17 00:00:00 2001
|
||||
From 0550e70425054a77e32fb96770d416b077720857 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 23 Oct 2020 10:20:26 +0200
|
||||
Subject: [PATCH 16/18] Clear dcevm code separation
|
||||
Subject: [PATCH 16/28] Clear dcevm code separation
|
||||
|
||||
---
|
||||
src/hotspot/share/classfile/systemDictionary.cpp | 4 ++--
|
||||
@@ -93,10 +93,10 @@ index 9dc184d02f5..bff1c3627b0 100644
|
||||
is_static ? "static" : "non-static", resolved_klass->external_name(), fd.name()->as_C_string(),
|
||||
current_klass->external_name());
|
||||
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
index 84891b48c2a..6f19e2939a2 100644
|
||||
index 61a406377ee..da9df7a21a2 100644
|
||||
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
@@ -1467,7 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
@@ -1471,7 +1471,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
NULL, // host klass
|
||||
NULL, // cp_patches
|
||||
ClassFileParser::INTERNAL, // internal visibility
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a022248d12e37084c8f8987a44d567ba0e02fb6d Mon Sep 17 00:00:00 2001
|
||||
From fde9f15ed4fdb5139b6b81238d0a667327b552bb Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 23 Oct 2020 11:07:40 +0200
|
||||
Subject: [PATCH 17/18] Fix metadataOnStack bug
|
||||
Subject: [PATCH 17/28] Fix metadataOnStack bug
|
||||
|
||||
---
|
||||
.../share/classfile/classLoaderData.cpp | 7 +-
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 5b5f620932894e807956b45653d153d001be9fb1 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 1 Nov 2020 21:19:00 +0100
|
||||
Subject: [PATCH 18/28] Ignore MetadataOnStackMark if redefining_gc_run
|
||||
|
||||
---
|
||||
src/hotspot/share/classfile/classLoaderData.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
index bba5ce0511f..8b2deb70e1b 100644
|
||||
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
@@ -1401,7 +1401,7 @@ bool ClassLoaderDataGraph::do_unloading(bool clean_previous_versions) {
|
||||
bool walk_all_metadata = clean_previous_versions &&
|
||||
JvmtiExport::has_redefined_a_class() &&
|
||||
InstanceKlass::has_previous_versions_and_reset();
|
||||
- MetadataOnStackMark md_on_stack(walk_all_metadata, AllowEnhancedClassRedefinition);
|
||||
+ MetadataOnStackMark md_on_stack(walk_all_metadata, Universe::is_redefining_gc_run());
|
||||
|
||||
// Save previous _unloading pointer for CMS which may add to unloading list before
|
||||
// purging and we don't want to rewalk the previously unloaded class loader data.
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 46795cd6c086e2008b270f89971bb07ad34ac355 Mon Sep 17 00:00:00 2001
|
||||
From 29ac3233d58d9a1a30160ae13a895ff70e504022 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 11 Nov 2020 18:45:15 +0100
|
||||
Subject: [PATCH 18/18] Fix LoadedClassesClosure - fixes problems with remote
|
||||
Subject: [PATCH 19/28] Fix LoadedClassesClosure - fixes problems with remote
|
||||
debugging
|
||||
|
||||
---
|
||||
@@ -1,7 +1,7 @@
|
||||
From 62fc66fa74886bd8bb15cd3e2084175f7ad5d0c7 Mon Sep 17 00:00:00 2001
|
||||
From 99e8f8d420dd09d6fb7f035d4baf7ef4816177e8 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||
Date: Fri, 5 Feb 2021 23:30:49 +0100
|
||||
Subject: [PATCH 19/19] Disable AllowEnhancedClassRedefinition in flight
|
||||
Subject: [PATCH 20/28] Disable AllowEnhancedClassRedefinition in flight
|
||||
recorder
|
||||
|
||||
---
|
||||
@@ -0,0 +1,41 @@
|
||||
From 1bb55ff9f91733e45dd6f87eb4201a989b3338e3 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||
Date: Fri, 12 Feb 2021 12:33:11 +0100
|
||||
Subject: [PATCH 21/28] JBR-3106 Check InstanceKlass::has_nestmate_access_to
|
||||
with active classes
|
||||
|
||||
Dcevm can leave old host in nested class if nested class is not
|
||||
redefined together with host class
|
||||
---
|
||||
src/hotspot/share/oops/instanceKlass.cpp | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
index 710e0ddc930..24eb3ed68a6 100644
|
||||
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
@@ -327,11 +327,21 @@ bool InstanceKlass::has_nestmate_access_to(InstanceKlass* k, TRAPS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+ // (DCEVM) cur_host can be old, decide accessibility based on active version
|
||||
+ if (AllowEnhancedClassRedefinition) {
|
||||
+ cur_host = InstanceKlass::cast(cur_host->active_version());
|
||||
+ }
|
||||
+
|
||||
Klass* k_nest_host = k->nest_host(icce, CHECK_false);
|
||||
if (k_nest_host == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+ // (DCEVM) k_nest_host can be old, decide accessibility based on active version
|
||||
+ if (AllowEnhancedClassRedefinition) {
|
||||
+ k_nest_host = InstanceKlass::cast(k_nest_host->active_version());
|
||||
+ }
|
||||
+
|
||||
bool access = (cur_host == k_nest_host);
|
||||
|
||||
if (log_is_enabled(Trace, class, nestmates)) {
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 52427060aba227d09dce4bd14410e1e626d64e46 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 7 Feb 2021 12:08:58 +0100
|
||||
Subject: [PATCH 22/28] JBR-3110 Fix assert in MetadataOnStackMark
|
||||
|
||||
Fixed fastdebug tests crashes in redefine gc run
|
||||
---
|
||||
src/hotspot/share/classfile/metadataOnStackMark.cpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/metadataOnStackMark.cpp b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||
index 9d7bdbde74b..66049f11629 100644
|
||||
--- a/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||
+++ b/src/hotspot/share/classfile/metadataOnStackMark.cpp
|
||||
@@ -49,10 +49,11 @@ NOT_PRODUCT(bool MetadataOnStackMark::_is_active = false;)
|
||||
MetadataOnStackMark::MetadataOnStackMark(bool redefinition_walk, bool ignore) : _ignore(ignore) {
|
||||
assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
|
||||
assert(_used_buffers == NULL, "sanity check");
|
||||
- assert(!_is_active, "MetadataOnStackMarks do not nest");
|
||||
- NOT_PRODUCT(_is_active = true;)
|
||||
|
||||
if (!ignore) {
|
||||
+ assert(!_is_active, "MetadataOnStackMarks do not nest");
|
||||
+ NOT_PRODUCT(_is_active = true;)
|
||||
+
|
||||
Threads::metadata_handles_do(Metadata::mark_on_stack);
|
||||
|
||||
if (redefinition_walk) {
|
||||
--
|
||||
2.23.0
|
||||
|
||||
78
jb/project/tools/patches/dcevm/0023-Code-cleanup.patch
Normal file
78
jb/project/tools/patches/dcevm/0023-Code-cleanup.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
From 93cea8d61ef395a1ef9e308b0d3a8f9409b108d0 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 12 Feb 2021 11:27:39 +0100
|
||||
Subject: [PATCH 23/28] Code cleanup
|
||||
|
||||
- Rename confusing method name old_if_redefined to old_if_redefining
|
||||
- Remove unused is_redefining_gc_run
|
||||
---
|
||||
src/hotspot/share/classfile/dictionary.cpp | 6 +++---
|
||||
src/hotspot/share/classfile/dictionary.hpp | 2 +-
|
||||
src/hotspot/share/memory/universe.hpp | 5 -----
|
||||
3 files changed, 4 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/dictionary.cpp b/src/hotspot/share/classfile/dictionary.cpp
|
||||
index dda5188c370..4e361d439f4 100644
|
||||
--- a/src/hotspot/share/classfile/dictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/dictionary.cpp
|
||||
@@ -381,7 +381,7 @@ InstanceKlass* Dictionary::find(unsigned int hash, Symbol* name,
|
||||
int index = hash_to_index(hash);
|
||||
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||
if (entry != NULL && entry->is_valid_protection_domain(protection_domain)) {
|
||||
- return old_if_redefined(entry->instance_klass());
|
||||
+ return old_if_redefining(entry->instance_klass());
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
@@ -394,7 +394,7 @@ InstanceKlass* Dictionary::find_class(int index, unsigned int hash,
|
||||
assert (index == index_for(name), "incorrect index?");
|
||||
|
||||
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||
- return old_if_redefined((entry != NULL) ? entry->instance_klass() : NULL);
|
||||
+ return old_if_redefining((entry != NULL) ? entry->instance_klass() : NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -406,7 +406,7 @@ InstanceKlass* Dictionary::find_shared_class(int index, unsigned int hash,
|
||||
assert (index == index_for(name), "incorrect index?");
|
||||
|
||||
DictionaryEntry* entry = get_entry(index, hash, name);
|
||||
- return old_if_redefined((entry != NULL) ? entry->instance_klass() : NULL);
|
||||
+ return old_if_redefining((entry != NULL) ? entry->instance_klass() : NULL);
|
||||
}
|
||||
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/dictionary.hpp b/src/hotspot/share/classfile/dictionary.hpp
|
||||
index 5eaa741d500..f6e08e7bfd5 100644
|
||||
--- a/src/hotspot/share/classfile/dictionary.hpp
|
||||
+++ b/src/hotspot/share/classfile/dictionary.hpp
|
||||
@@ -120,7 +120,7 @@ public:
|
||||
void rollback_redefinition();
|
||||
|
||||
// (DCEVM) return old class if redefining in AllowEnhancedClassRedefinition, otherwise return "k"
|
||||
- static InstanceKlass* old_if_redefined(InstanceKlass* k) {
|
||||
+ static InstanceKlass* old_if_redefining(InstanceKlass* k) {
|
||||
return (k != NULL && k->is_redefining()) ? ((InstanceKlass* )k->old_version()) : k;
|
||||
}
|
||||
};
|
||||
diff --git a/src/hotspot/share/memory/universe.hpp b/src/hotspot/share/memory/universe.hpp
|
||||
index b32db16b9cf..742dada0e8f 100644
|
||||
--- a/src/hotspot/share/memory/universe.hpp
|
||||
+++ b/src/hotspot/share/memory/universe.hpp
|
||||
@@ -52,13 +52,8 @@ class LatestMethodCache : public CHeapObj<mtClass> {
|
||||
Klass* _klass;
|
||||
int _method_idnum;
|
||||
|
||||
- static bool _is_redefining_gc_run;
|
||||
-
|
||||
public:
|
||||
|
||||
- static bool is_redefining_gc_run() { return _is_redefining_gc_run; }
|
||||
- static void set_redefining_gc_run(bool b) { _is_redefining_gc_run = b; }
|
||||
-
|
||||
LatestMethodCache() { _klass = NULL; _method_idnum = -1; }
|
||||
~LatestMethodCache() { _klass = NULL; _method_idnum = -1; }
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
From dcb44f0e56dbc63b90d655b694a3f7751744fe53 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 13 Feb 2021 20:47:52 +0100
|
||||
Subject: [PATCH 24/28] JBR-3111 Update class in all dictionaries where it was
|
||||
already defined
|
||||
|
||||
This patch keeps compatibility with std redefinition, that does not
|
||||
create a new Klass, but modifies it, then it is modified in all
|
||||
dictionaries containing this class.
|
||||
---
|
||||
src/hotspot/share/classfile/classLoaderData.cpp | 9 +++++++++
|
||||
src/hotspot/share/classfile/classLoaderData.hpp | 3 +++
|
||||
src/hotspot/share/classfile/dictionary.cpp | 2 +-
|
||||
src/hotspot/share/classfile/dictionary.hpp | 2 +-
|
||||
src/hotspot/share/classfile/systemDictionary.cpp | 4 +++-
|
||||
5 files changed, 17 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
index 8b2deb70e1b..4e06b09e7d5 100644
|
||||
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
@@ -1274,6 +1274,15 @@ void ClassLoaderDataGraph::rollback_redefinition() {
|
||||
}
|
||||
}
|
||||
|
||||
+// (DCEVM) - iterate over all classes in all dictionaries
|
||||
+bool ClassLoaderDataGraph::dictionary_classes_do_update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||
+ bool ok = false;
|
||||
+ FOR_ALL_DICTIONARY(cld) {
|
||||
+ ok = cld->dictionary()->update_klass(name, k, old_klass) || ok;
|
||||
+ }
|
||||
+ return ok;
|
||||
+}
|
||||
+
|
||||
// Walks all entries in the dictionary including entries initiated by this class loader.
|
||||
void ClassLoaderDataGraph::dictionary_all_entries_do(void f(InstanceKlass*, ClassLoaderData*)) {
|
||||
Thread* thread = Thread::current();
|
||||
diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
index 00a84610b43..16711dca237 100644
|
||||
--- a/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
+++ b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
@@ -130,6 +130,9 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||
// Enhanced class redefinition
|
||||
static void rollback_redefinition();
|
||||
|
||||
+ // Enhanced class redefinition
|
||||
+ static bool dictionary_classes_do_update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass);
|
||||
+
|
||||
// Iterate all classes and their class loaders, including initiating class loaders.
|
||||
static void dictionary_all_entries_do(void f(InstanceKlass*, ClassLoaderData*));
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/dictionary.cpp b/src/hotspot/share/classfile/dictionary.cpp
|
||||
index 4e361d439f4..6c072407fd9 100644
|
||||
--- a/src/hotspot/share/classfile/dictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/dictionary.cpp
|
||||
@@ -345,7 +345,7 @@ DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash,
|
||||
}
|
||||
|
||||
// (DCEVM) replace old_class by new class in dictionary
|
||||
-bool Dictionary::update_klass(unsigned int hash, Symbol* name, ClassLoaderData* loader_data, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||
+bool Dictionary::update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass) {
|
||||
// There are several entries for the same class in the dictionary: One extra entry for each parent classloader of the classloader of the class.
|
||||
bool found = false;
|
||||
for (int index = 0; index < table_size(); index++) {
|
||||
diff --git a/src/hotspot/share/classfile/dictionary.hpp b/src/hotspot/share/classfile/dictionary.hpp
|
||||
index f6e08e7bfd5..2932cc9c320 100644
|
||||
--- a/src/hotspot/share/classfile/dictionary.hpp
|
||||
+++ b/src/hotspot/share/classfile/dictionary.hpp
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
void free_entry(DictionaryEntry* entry);
|
||||
|
||||
// Enhanced class redefinition
|
||||
- bool update_klass(unsigned int hash, Symbol* name, ClassLoaderData* loader_data, InstanceKlass* k, InstanceKlass* old_klass);
|
||||
+ bool update_klass(Symbol* name, InstanceKlass* k, InstanceKlass* old_klass);
|
||||
|
||||
void rollback_redefinition();
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index 9e0f4dd3c96..789b5fb1e6d 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -1606,7 +1606,9 @@ void SystemDictionary::define_instance_class(InstanceKlass* k, InstanceKlass* ol
|
||||
Dictionary* dictionary = loader_data->dictionary();
|
||||
unsigned int d_hash = dictionary->compute_hash(name_h);
|
||||
if (is_redefining) {
|
||||
- bool ok = dictionary->update_klass(d_hash, name_h, loader_data, k, old_klass);
|
||||
+ // Update all dictionaries containing old_class to new_class
|
||||
+ // outcome must be same as result of standard redefinition, that does not create a new Klass
|
||||
+ bool ok = ClassLoaderDataGraph::dictionary_classes_do_update_klass(name_h, k, old_klass);
|
||||
assert (ok, "must have found old class and updated!");
|
||||
}
|
||||
check_constraints(d_hash, k, class_loader_h, !is_redefining, CHECK);
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,527 @@
|
||||
From b9692c48bdbad8474251cfe72ac85e5c7ff2847e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Thu, 18 Jun 2020 18:40:11 +0200
|
||||
Subject: [PATCH 25/28] JBR-3140 - support for modularized HotswapAgent
|
||||
|
||||
Add -XX:HotswapAgent=[disabled,fatjar.core]
|
||||
---
|
||||
make/launcher/Launcher-java.base.gmk | 1 -
|
||||
make/launcher/Launcher-java.rmi.gmk | 2 -
|
||||
make/launcher/Launcher-java.scripting.gmk | 3 +-
|
||||
make/launcher/Launcher-java.security.jgss.gmk | 3 --
|
||||
make/launcher/Launcher-jdk.aot.gmk | 2 -
|
||||
make/launcher/Launcher-jdk.compiler.gmk | 5 +-
|
||||
make/launcher/Launcher-jdk.hotspot.agent.gmk | 1 -
|
||||
make/launcher/Launcher-jdk.jartool.gmk | 2 -
|
||||
make/launcher/Launcher-jdk.javadoc.gmk | 3 +-
|
||||
make/launcher/Launcher-jdk.jcmd.gmk | 13 +----
|
||||
make/launcher/Launcher-jdk.jdeps.gmk | 3 --
|
||||
make/launcher/Launcher-jdk.jdi.gmk | 1 -
|
||||
make/launcher/Launcher-jdk.jlink.gmk | 5 +-
|
||||
make/launcher/Launcher-jdk.jshell.gmk | 1 -
|
||||
make/launcher/Launcher-jdk.jstatd.gmk | 1 -
|
||||
make/launcher/Launcher-jdk.pack.gmk | 1 -
|
||||
make/launcher/Launcher-jdk.rmic.gmk | 1 -
|
||||
.../Launcher-jdk.scripting.nashorn.shell.gmk | 3 +-
|
||||
src/hotspot/share/runtime/arguments.cpp | 48 +++++++++++--------
|
||||
.../runtime/flags/jvmFlagConstraintList.cpp | 23 +++++++++
|
||||
.../runtime/flags/jvmFlagConstraintList.hpp | 1 +
|
||||
.../flags/jvmFlagConstraintsRuntime.cpp | 10 ++++
|
||||
.../flags/jvmFlagConstraintsRuntime.hpp | 1 +
|
||||
src/hotspot/share/runtime/globals.hpp | 12 ++++-
|
||||
24 files changed, 81 insertions(+), 65 deletions(-)
|
||||
|
||||
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
|
||||
index 38ba29530d8..f6d4aa28fe6 100644
|
||||
--- a/make/launcher/Launcher-java.base.gmk
|
||||
+++ b/make/launcher/Launcher-java.base.gmk
|
||||
@@ -52,7 +52,6 @@ endif
|
||||
|
||||
$(eval $(call SetupBuildLauncher, keytool, \
|
||||
MAIN_CLASS := sun.security.tools.keytool.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
################################################################################
|
||||
diff --git a/make/launcher/Launcher-java.rmi.gmk b/make/launcher/Launcher-java.rmi.gmk
|
||||
index 07046232275..a69a90bcc81 100644
|
||||
--- a/make/launcher/Launcher-java.rmi.gmk
|
||||
+++ b/make/launcher/Launcher-java.rmi.gmk
|
||||
@@ -27,10 +27,8 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, rmid, \
|
||||
MAIN_CLASS := sun.rmi.server.Activation, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, rmiregistry, \
|
||||
MAIN_CLASS := sun.rmi.registry.RegistryImpl, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-java.scripting.gmk b/make/launcher/Launcher-java.scripting.gmk
|
||||
index cf100e20789..057d2bf3aca 100644
|
||||
--- a/make/launcher/Launcher-java.scripting.gmk
|
||||
+++ b/make/launcher/Launcher-java.scripting.gmk
|
||||
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jrunscript, \
|
||||
MAIN_CLASS := com.sun.tools.script.shell.Main, \
|
||||
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-java.security.jgss.gmk b/make/launcher/Launcher-java.security.jgss.gmk
|
||||
index 2b856bfccb4..7411e1a21c4 100644
|
||||
--- a/make/launcher/Launcher-java.security.jgss.gmk
|
||||
+++ b/make/launcher/Launcher-java.security.jgss.gmk
|
||||
@@ -28,16 +28,13 @@ include LauncherCommon.gmk
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
$(eval $(call SetupBuildLauncher, kinit, \
|
||||
MAIN_CLASS := sun.security.krb5.internal.tools.Kinit, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, klist, \
|
||||
MAIN_CLASS := sun.security.krb5.internal.tools.Klist, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, ktab, \
|
||||
MAIN_CLASS := sun.security.krb5.internal.tools.Ktab, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
endif
|
||||
diff --git a/make/launcher/Launcher-jdk.aot.gmk b/make/launcher/Launcher-jdk.aot.gmk
|
||||
index 2c52c31a555..10717a5e1c5 100644
|
||||
--- a/make/launcher/Launcher-jdk.aot.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.aot.gmk
|
||||
@@ -31,7 +31,6 @@ include LauncherCommon.gmk
|
||||
$(eval $(call SetupBuildLauncher, jaotc, \
|
||||
MAIN_CLASS := jdk.tools.jaotc.Main, \
|
||||
EXTRA_JAVA_ARGS := -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI \
|
||||
- -XX:+DisableHotswapAgent \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
@@ -41,7 +40,6 @@ $(eval $(call SetupBuildLauncher, jaotc, \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
, \
|
||||
JAVA_ARGS := --add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
- -XX:+DisableHotswapAgent \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=$(call CommaList, jdk.internal.vm.compiler jdk.aot) \
|
||||
diff --git a/make/launcher/Launcher-jdk.compiler.gmk b/make/launcher/Launcher-jdk.compiler.gmk
|
||||
index 744969546de..f71c37adf74 100644
|
||||
--- a/make/launcher/Launcher-jdk.compiler.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.compiler.gmk
|
||||
@@ -27,14 +27,12 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, javac, \
|
||||
MAIN_CLASS := com.sun.tools.javac.Main, \
|
||||
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, serialver, \
|
||||
MAIN_CLASS := sun.tools.serialver.SerialVer, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
|
||||
@@ -43,7 +41,6 @@ ifeq ($(ENABLE_SJAVAC), yes)
|
||||
# into any real images
|
||||
$(eval $(call SetupBuildLauncher, sjavac, \
|
||||
MAIN_CLASS := com.sun.tools.sjavac.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
OUTPUT_DIR := $(JDK_OUTPUTDIR)/bin, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.hotspot.agent.gmk b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||
index 9f12b05b172..76da3600368 100644
|
||||
--- a/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.hotspot.agent.gmk
|
||||
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jhsdb, \
|
||||
MAIN_CLASS := sun.jvm.hotspot.SALauncher, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
MACOSX_PRIVILEGED := true, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jartool.gmk b/make/launcher/Launcher-jdk.jartool.gmk
|
||||
index 647d82b65b1..f74e82bfdae 100644
|
||||
--- a/make/launcher/Launcher-jdk.jartool.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jartool.gmk
|
||||
@@ -27,10 +27,8 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jar, \
|
||||
MAIN_CLASS := sun.tools.jar.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jarsigner, \
|
||||
MAIN_CLASS := sun.security.tools.jarsigner.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.javadoc.gmk b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||
index c3d2093be04..889028a2b17 100644
|
||||
--- a/make/launcher/Launcher-jdk.javadoc.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.javadoc.gmk
|
||||
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, javadoc, \
|
||||
MAIN_CLASS := jdk.javadoc.internal.tool.Main, \
|
||||
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jcmd.gmk b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||
index 761a52d8466..7117fa78059 100644
|
||||
--- a/make/launcher/Launcher-jdk.jcmd.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jcmd.gmk
|
||||
@@ -30,7 +30,6 @@ $(eval $(call SetupBuildLauncher, jinfo, \
|
||||
JAVA_ARGS := \
|
||||
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||
-Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
MACOSX_PRIVILEGED := true, \
|
||||
))
|
||||
|
||||
@@ -38,36 +37,28 @@ $(eval $(call SetupBuildLauncher, jmap, \
|
||||
MAIN_CLASS := sun.tools.jmap.JMap, \
|
||||
JAVA_ARGS := \
|
||||
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||
MACOSX_PRIVILEGED := true, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jps, \
|
||||
MAIN_CLASS := sun.tools.jps.Jps, \
|
||||
- JAVA_ARGS := \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jstack, \
|
||||
MAIN_CLASS := sun.tools.jstack.JStack, \
|
||||
JAVA_ARGS := \
|
||||
-Dsun.jvm.hotspot.debugger.useProcDebugger \
|
||||
- -Dsun.jvm.hotspot.debugger.useWindbgDebugger \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ -Dsun.jvm.hotspot.debugger.useWindbgDebugger, \
|
||||
MACOSX_PRIVILEGED := true, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jstat, \
|
||||
MAIN_CLASS := sun.tools.jstat.Jstat, \
|
||||
- JAVA_ARGS := \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jcmd, \
|
||||
MAIN_CLASS := sun.tools.jcmd.JCmd, \
|
||||
- JAVA_ARGS := \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
diff --git a/make/launcher/Launcher-jdk.jdeps.gmk b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||
index 5448278dae7..217523c48cc 100644
|
||||
--- a/make/launcher/Launcher-jdk.jdeps.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jdeps.gmk
|
||||
@@ -27,18 +27,15 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, javap, \
|
||||
MAIN_CLASS := com.sun.tools.javap.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jdeps, \
|
||||
MAIN_CLASS := com.sun.tools.jdeps.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jdeprscan, \
|
||||
MAIN_CLASS := com.sun.tools.jdeprscan.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jdi.gmk b/make/launcher/Launcher-jdk.jdi.gmk
|
||||
index 27bd448e3ae..fcce98cf430 100644
|
||||
--- a/make/launcher/Launcher-jdk.jdi.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jdi.gmk
|
||||
@@ -27,5 +27,4 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jdb, \
|
||||
MAIN_CLASS := com.sun.tools.example.debug.tty.TTY, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jlink.gmk b/make/launcher/Launcher-jdk.jlink.gmk
|
||||
index 9e61edeb2c8..df2173996d7 100644
|
||||
--- a/make/launcher/Launcher-jdk.jlink.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jlink.gmk
|
||||
@@ -27,21 +27,18 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jimage,\
|
||||
MAIN_CLASS := jdk.tools.jimage.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DENABLE_ARG_FILES, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jlink,\
|
||||
MAIN_CLASS := jdk.tools.jlink.internal.Main, \
|
||||
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||
CFLAGS := -DENABLE_ARG_FILES \
|
||||
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jmod,\
|
||||
MAIN_CLASS := jdk.tools.jmod.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DENABLE_ARG_FILES \
|
||||
-DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jshell.gmk b/make/launcher/Launcher-jdk.jshell.gmk
|
||||
index 7287f8f998a..349eb88e9eb 100644
|
||||
--- a/make/launcher/Launcher-jdk.jshell.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jshell.gmk
|
||||
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jshell, \
|
||||
MAIN_CLASS := jdk.internal.jshell.tool.JShellToolProvider, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.jstatd.gmk b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||
index e1657910c67..e9286d63094 100644
|
||||
--- a/make/launcher/Launcher-jdk.jstatd.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.jstatd.gmk
|
||||
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jstatd, \
|
||||
MAIN_CLASS := sun.tools.jstatd.Jstatd, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
# Hook to include the corresponding custom file, if present.
|
||||
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
|
||||
index 64bbbb7c949..a93fd2a9017 100644
|
||||
--- a/make/launcher/Launcher-jdk.pack.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.pack.gmk
|
||||
@@ -28,7 +28,6 @@ include LauncherCommon.gmk
|
||||
$(eval $(call SetupBuildLauncher, pack200, \
|
||||
MAIN_MODULE := java.base, \
|
||||
MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
))
|
||||
|
||||
################################################################################
|
||||
diff --git a/make/launcher/Launcher-jdk.rmic.gmk b/make/launcher/Launcher-jdk.rmic.gmk
|
||||
index b8a55900b0e..d60c3d9b60b 100644
|
||||
--- a/make/launcher/Launcher-jdk.rmic.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.rmic.gmk
|
||||
@@ -27,6 +27,5 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, rmic, \
|
||||
MAIN_CLASS := sun.rmi.rmic.Main, \
|
||||
- JAVA_ARGS := -XX:+DisableHotswapAgent, \
|
||||
CFLAGS := -DEXPAND_CLASSPATH_WILDCARDS, \
|
||||
))
|
||||
diff --git a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||
index bd39f8595b2..82311e69fd6 100644
|
||||
--- a/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||
+++ b/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk
|
||||
@@ -27,7 +27,6 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, jjs, \
|
||||
MAIN_CLASS := jdk.nashorn.tools.jjs.Main, \
|
||||
- JAVA_ARGS := --add-modules ALL-DEFAULT \
|
||||
- -XX:+DisableHotswapAgent, \
|
||||
+ JAVA_ARGS := --add-modules ALL-DEFAULT, \
|
||||
CFLAGS := -DENABLE_ARG_FILES, \
|
||||
))
|
||||
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||
index c5635bb8537..d7fee6a8c95 100644
|
||||
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||
@@ -4310,11 +4310,17 @@ void Arguments::setup_hotswap_agent() {
|
||||
if (DumpSharedSpaces)
|
||||
return;
|
||||
|
||||
- if (!AllowEnhancedClassRedefinition)
|
||||
+ if (HotswapAgent == NULL || strcmp(HotswapAgent, "disabled") == 0)
|
||||
return;
|
||||
|
||||
+ // Force AllowEnhancedClassRedefinition if HA is enabled
|
||||
+ AllowEnhancedClassRedefinition = true;
|
||||
+
|
||||
+ bool ha_fatjar = strcmp(HotswapAgent, "fatjar") == 0;
|
||||
+ bool ha_core = strcmp(HotswapAgent, "core") == 0;
|
||||
+
|
||||
// Set HotswapAgent
|
||||
- if (!DisableHotswapAgent) {
|
||||
+ if (ha_fatjar || ha_core) {
|
||||
|
||||
char ext_path_str[JVM_MAXPATHLEN];
|
||||
|
||||
@@ -4333,23 +4339,27 @@ void Arguments::setup_hotswap_agent() {
|
||||
}
|
||||
}
|
||||
if (ext_path_length < JVM_MAXPATHLEN - 10) {
|
||||
- jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||
- "%shotswap%shotswap-agent.jar", os::file_separator(), os::file_separator());
|
||||
- }
|
||||
-
|
||||
- int fd = ::open(ext_path_str, O_RDONLY);
|
||||
- if (fd >= 0) {
|
||||
- os::close(fd);
|
||||
- size_t length = strlen(ext_path_str) + 1;
|
||||
- char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
|
||||
- jio_snprintf(options, length, "%s", ext_path_str);
|
||||
- add_init_agent("instrument", ext_path_str, false);
|
||||
- jio_fprintf(defaultStream::output_stream(), "Starting HotswapAgent '%s'\n", ext_path_str);
|
||||
- }
|
||||
-// else
|
||||
-// {
|
||||
-// jio_fprintf(defaultStream::error_stream(), "HotswapAgent not found on path:'%s'\n", ext_path_str);
|
||||
-// }
|
||||
+ if (ha_fatjar) {
|
||||
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||
+ "%shotswap%shotswap-agent.jar", os::file_separator(), os::file_separator());
|
||||
+ } else {
|
||||
+ jio_snprintf(ext_path_str + ext_path_length, sizeof(ext_path_str) - ext_path_length,
|
||||
+ "%shotswap%shotswap-agent-core.jar", os::file_separator(), os::file_separator());
|
||||
+ }
|
||||
+ int fd = ::open(ext_path_str, O_RDONLY);
|
||||
+ if (fd >= 0) {
|
||||
+ os::close(fd);
|
||||
+ size_t length = strlen(ext_path_str) + 1;
|
||||
+ char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
|
||||
+ jio_snprintf(options, length, "%s", ext_path_str);
|
||||
+ add_init_agent("instrument", ext_path_str, false);
|
||||
+ jio_fprintf(defaultStream::output_stream(), "Starting HotswapAgent '%s'\n", ext_path_str);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ jio_fprintf(defaultStream::error_stream(), "HotswapAgent not found on path:'%s'!\n", ext_path_str);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
// TODO: open it only for org.hotswap.agent module
|
||||
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||
index 16d8030fd1c..94044c4831c 100644
|
||||
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.cpp
|
||||
@@ -199,6 +199,26 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
+class JVMFlagConstraint_ccstr : public JVMFlagConstraint {
|
||||
+ JVMFlagConstraintFunc_ccstr _constraint;
|
||||
+ const ccstr* _ptr;
|
||||
+
|
||||
+public:
|
||||
+ // the "name" argument must be a string literal
|
||||
+ JVMFlagConstraint_ccstr(const char* name, const ccstr* ptr,
|
||||
+ JVMFlagConstraintFunc_ccstr func,
|
||||
+ ConstraintType type) : JVMFlagConstraint(name, type), _constraint(func), _ptr(ptr) {}
|
||||
+
|
||||
+ JVMFlag::Error apply(bool verbose) {
|
||||
+ ccstr value = *_ptr;
|
||||
+ return _constraint(value, verbose);
|
||||
+ }
|
||||
+
|
||||
+ JVMFlag::Error apply_ccstr(ccstr value, bool verbose) {
|
||||
+ return _constraint(value, verbose);
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
// No constraint emitting
|
||||
void emit_constraint_no(...) { /* NOP */ }
|
||||
|
||||
@@ -239,6 +259,9 @@ void emit_constraint_size_t(const char* name, const size_t* ptr, JVMFlagConstrai
|
||||
void emit_constraint_double(const char* name, const double* ptr, JVMFlagConstraintFunc_double func, JVMFlagConstraint::ConstraintType type) {
|
||||
JVMFlagConstraintList::add(new JVMFlagConstraint_double(name, ptr, func, type));
|
||||
}
|
||||
+void emit_constraint_ccstr(const char* name, ccstr* ptr, JVMFlagConstraintFunc_ccstr func, JVMFlagConstraint::ConstraintType type) {
|
||||
+ JVMFlagConstraintList::add(new JVMFlagConstraint_ccstr(name, ptr, func, type));
|
||||
+}
|
||||
|
||||
// Generate code to call emit_constraint_xxx function
|
||||
#define EMIT_CONSTRAINT_PRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name,&name
|
||||
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||
index 9c27f1db955..b644f7b817a 100644
|
||||
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintList.hpp
|
||||
@@ -47,6 +47,7 @@ typedef JVMFlag::Error (*JVMFlagConstraintFunc_uintx)(uintx value, bool verbose)
|
||||
typedef JVMFlag::Error (*JVMFlagConstraintFunc_uint64_t)(uint64_t value, bool verbose);
|
||||
typedef JVMFlag::Error (*JVMFlagConstraintFunc_size_t)(size_t value, bool verbose);
|
||||
typedef JVMFlag::Error (*JVMFlagConstraintFunc_double)(double value, bool verbose);
|
||||
+typedef JVMFlag::Error (*JVMFlagConstraintFunc_ccstr)(ccstr value, bool verbose);
|
||||
|
||||
class JVMFlagConstraint : public CHeapObj<mtArguments> {
|
||||
public:
|
||||
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||
index 6559d4252f0..21afac72a2e 100644
|
||||
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.cpp
|
||||
@@ -140,3 +140,13 @@ JVMFlag::Error ThreadLocalHandshakesConstraintFunc(bool value, bool verbose) {
|
||||
}
|
||||
return JVMFlag::SUCCESS;
|
||||
}
|
||||
+
|
||||
+JVMFlag::Error HotswapAgentConstraintFunc(char const* value, bool verbose) {
|
||||
+ if (value != NULL) {
|
||||
+ if (strcmp("disabled", value) != 0 && strcmp("fatjar", value) != 0 && strcmp("core", value) != 0 && strcmp("external", value) != 0) {
|
||||
+ JVMFlag::printError(verbose, "HotswapAgent(%s) must be one of disabled,fatjar,core or external.\n", value);
|
||||
+ return JVMFlag::VIOLATES_CONSTRAINT;
|
||||
+ }
|
||||
+ }
|
||||
+ return JVMFlag::SUCCESS;
|
||||
+}
|
||||
diff --git a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||
index 8763b83fd37..c9ed15a89e1 100644
|
||||
--- a/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||
+++ b/src/hotspot/share/runtime/flags/jvmFlagConstraintsRuntime.hpp
|
||||
@@ -46,5 +46,6 @@ JVMFlag::Error PerfDataSamplingIntervalFunc(intx value, bool verbose);
|
||||
|
||||
JVMFlag::Error ThreadLocalHandshakesConstraintFunc(bool value, bool verbose);
|
||||
|
||||
+JVMFlag::Error HotswapAgentConstraintFunc(char const* value, bool verbose);
|
||||
|
||||
#endif /* SHARE_VM_RUNTIME_JVMFLAGCONSTRAINTSRUNTIME_HPP */
|
||||
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||
index d4453de1ff5..8c41f0af888 100644
|
||||
--- a/src/hotspot/share/runtime/globals.hpp
|
||||
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||
@@ -2686,8 +2686,16 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||
"Allow enhanced class redefinition beyond swapping method " \
|
||||
"bodies") \
|
||||
\
|
||||
- product(bool, DisableHotswapAgent, DISABLED_HOTSWAP_AGENT, \
|
||||
- "Disable integrated Hotswap Agent (HotswapVM only)")
|
||||
+ product(ccstr, HotswapAgent, "disabled", \
|
||||
+ "Specify HotswapAgent image to be used." \
|
||||
+ "disabled: hotswap agent is disabled (default)" \
|
||||
+ "fatjar: full HA. Use integrated hotswap-agent.jar" \
|
||||
+ "core: core HA. Use integrated hotswap-agent-core.jar" \
|
||||
+ "external: external HA. use external HA, open required JDK " \
|
||||
+ "modules.") \
|
||||
+ constraint(HotswapAgentConstraintFunc, AfterErgo)
|
||||
+
|
||||
+
|
||||
#define VM_FLAGS(develop, \
|
||||
develop_pd, \
|
||||
product, \
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,333 @@
|
||||
From f279999a412cc87c6f4a7eed7e1e2ad34655b4fe Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||
Date: Mon, 8 Mar 2021 02:22:54 +0700
|
||||
Subject: [PATCH 26/28] Support for redefinition of Well Known classses
|
||||
(java.*,jdk.*, sun.*)
|
||||
|
||||
---
|
||||
src/hotspot/share/ci/ciKlass.hpp | 1 +
|
||||
src/hotspot/share/ci/ciObjectFactory.cpp | 34 +++++++++++
|
||||
src/hotspot/share/ci/ciObjectFactory.hpp | 6 ++
|
||||
.../share/classfile/systemDictionary.cpp | 10 +++
|
||||
.../share/classfile/systemDictionary.hpp | 2 +
|
||||
src/hotspot/share/classfile/vmSymbols.hpp | 2 +
|
||||
src/hotspot/share/compiler/compileBroker.cpp | 11 ++++
|
||||
src/hotspot/share/memory/universe.cpp | 8 +++
|
||||
src/hotspot/share/memory/universe.hpp | 3 +
|
||||
.../prims/jvmtiEnhancedRedefineClasses.cpp | 61 ++++++++++++++++++-
|
||||
.../prims/jvmtiEnhancedRedefineClasses.hpp | 2 +
|
||||
11 files changed, 139 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hotspot/share/ci/ciKlass.hpp b/src/hotspot/share/ci/ciKlass.hpp
|
||||
index 896f489453a..c610c365aba 100644
|
||||
--- a/src/hotspot/share/ci/ciKlass.hpp
|
||||
+++ b/src/hotspot/share/ci/ciKlass.hpp
|
||||
@@ -129,6 +129,7 @@ public:
|
||||
void print_name_on(outputStream* st);
|
||||
|
||||
const char* external_name() const;
|
||||
+ Klass* new_version() { return get_Klass()->new_version(); }
|
||||
};
|
||||
|
||||
#endif // SHARE_VM_CI_CIKLASS_HPP
|
||||
diff --git a/src/hotspot/share/ci/ciObjectFactory.cpp b/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||
index 66bbe835e7b..107c16fa5cf 100644
|
||||
--- a/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||
+++ b/src/hotspot/share/ci/ciObjectFactory.cpp
|
||||
@@ -70,7 +70,10 @@ GrowableArray<ciMetadata*>* ciObjectFactory::_shared_ci_metadata = NULL;
|
||||
ciSymbol* ciObjectFactory::_shared_ci_symbols[vmSymbols::SID_LIMIT];
|
||||
int ciObjectFactory::_shared_ident_limit = 0;
|
||||
volatile bool ciObjectFactory::_initialized = false;
|
||||
+volatile bool ciObjectFactory::_reinitialize_wk_klasses = false;
|
||||
|
||||
+// TODO: review...
|
||||
+Arena* ciObjectFactory::_initial_arena = NULL;
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// ciObjectFactory::ciObjectFactory
|
||||
@@ -112,6 +115,7 @@ void ciObjectFactory::initialize() {
|
||||
// compiler thread that initializes the initial ciObjectFactory which
|
||||
// creates the shared ciObjects that all later ciObjectFactories use.
|
||||
Arena* arena = new (mtCompiler) Arena(mtCompiler);
|
||||
+ ciObjectFactory::_initial_arena = arena;
|
||||
ciEnv initial(arena);
|
||||
ciEnv* env = ciEnv::current();
|
||||
env->_factory->init_shared_objects();
|
||||
@@ -120,6 +124,36 @@ void ciObjectFactory::initialize() {
|
||||
|
||||
}
|
||||
|
||||
+// (DCEVM) wk classes could be modified
|
||||
+void ciObjectFactory::reinitialize_wk_classes() {
|
||||
+ ASSERT_IN_VM;
|
||||
+ JavaThread* thread = JavaThread::current();
|
||||
+ HandleMark handle_mark(thread);
|
||||
+
|
||||
+ // This Arena is long lived and exists in the resource mark of the
|
||||
+ // compiler thread that initializes the initial ciObjectFactory which
|
||||
+ // creates the shared ciObjects that all later ciObjectFactories use.
|
||||
+ // Arena* arena = new (mtCompiler) Arena(mtCompiler);
|
||||
+ ciEnv initial(ciObjectFactory::_initial_arena);
|
||||
+ ciEnv* env = ciEnv::current();
|
||||
+ env->_factory->do_reinitialize_wk_classes();
|
||||
+ _reinitialize_wk_klasses = false;
|
||||
+}
|
||||
+
|
||||
+// (DCEVM) wk classes could be modified
|
||||
+void ciObjectFactory::do_reinitialize_wk_classes() {
|
||||
+#define WK_KLASS_DEFN(name, ignore_s, opt) \
|
||||
+ if (ciEnv::_##name != NULL && ciEnv::_##name->new_version() != NULL) { \
|
||||
+ int old_ident = ciEnv::_##name->ident(); \
|
||||
+ ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass(); \
|
||||
+ ciEnv::_##name->compute_nonstatic_fields(); \
|
||||
+ ciEnv::_##name->set_ident(old_ident); \
|
||||
+ }
|
||||
+
|
||||
+ WK_KLASSES_DO(WK_KLASS_DEFN)
|
||||
+#undef WK_KLASS_DEFN
|
||||
+}
|
||||
+
|
||||
void ciObjectFactory::init_shared_objects() {
|
||||
|
||||
_next_ident = 1; // start numbering CI objects at 1
|
||||
diff --git a/src/hotspot/share/ci/ciObjectFactory.hpp b/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||
index 3e9d48c4cdc..79059f6e2e8 100644
|
||||
--- a/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||
+++ b/src/hotspot/share/ci/ciObjectFactory.hpp
|
||||
@@ -41,9 +41,11 @@ class ciObjectFactory : public ResourceObj {
|
||||
|
||||
private:
|
||||
static volatile bool _initialized;
|
||||
+ static volatile bool _reinitialize_wk_klasses;
|
||||
static GrowableArray<ciMetadata*>* _shared_ci_metadata;
|
||||
static ciSymbol* _shared_ci_symbols[];
|
||||
static int _shared_ident_limit;
|
||||
+ static Arena* _initial_arena;
|
||||
|
||||
Arena* _arena;
|
||||
GrowableArray<ciMetadata*>* _ci_metadata;
|
||||
@@ -89,10 +91,14 @@ private:
|
||||
ciInstance* get_unloaded_instance(ciInstanceKlass* klass);
|
||||
|
||||
static int compare_cimetadata(ciMetadata** a, ciMetadata** b);
|
||||
+ void do_reinitialize_wk_classes();
|
||||
public:
|
||||
static bool is_initialized() { return _initialized; }
|
||||
+ static bool is_reinitialize_wk_klasses() { return _reinitialize_wk_klasses; }
|
||||
+ static void set_reinitialize_wk_klasses() { _reinitialize_wk_klasses = true; }
|
||||
|
||||
static void initialize();
|
||||
+ static void reinitialize_wk_classes();
|
||||
void init_shared_objects();
|
||||
void remove_symbols();
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index 789b5fb1e6d..25e577a664c 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -1983,6 +1983,16 @@ bool SystemDictionary::is_well_known_klass(Symbol* class_name) {
|
||||
}
|
||||
#endif
|
||||
|
||||
+bool SystemDictionary::update_well_known_klass(InstanceKlass* old_klass, InstanceKlass* new_klass) {
|
||||
+ for (int id = FIRST_WKID; id < WKID_LIMIT; id++) {
|
||||
+ if (well_known_klass((WKID) id) == old_klass) {
|
||||
+ *well_known_klass_addr((WKID)id) = new_klass;
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
bool SystemDictionary::resolve_wk_klass(WKID id, int init_opt, TRAPS) {
|
||||
assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
|
||||
int info = wk_init_info[id - FIRST_WKID];
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.hpp b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||
index 1dbbffa197f..4220978a025 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.hpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.hpp
|
||||
@@ -467,6 +467,8 @@ public:
|
||||
static bool is_well_known_klass(Symbol* class_name);
|
||||
#endif
|
||||
|
||||
+ static bool update_well_known_klass(InstanceKlass* new_klass, InstanceKlass* old_klass);
|
||||
+
|
||||
// Enhanced class redefinition
|
||||
static void remove_from_hierarchy(InstanceKlass* k);
|
||||
static void update_constraints_after_redefinition();
|
||||
diff --git a/src/hotspot/share/classfile/vmSymbols.hpp b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
index 2409af9b06e..daaa8d12375 100644
|
||||
--- a/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
+++ b/src/hotspot/share/classfile/vmSymbols.hpp
|
||||
@@ -355,6 +355,8 @@
|
||||
template(exit_method_name, "exit") \
|
||||
template(add_method_name, "add") \
|
||||
template(remove_method_name, "remove") \
|
||||
+ template(registerNatives_method_name, "registerNatives") \
|
||||
+ template(initIDs_method_name, "initIDs") \
|
||||
template(parent_name, "parent") \
|
||||
template(threads_name, "threads") \
|
||||
template(groups_name, "groups") \
|
||||
diff --git a/src/hotspot/share/compiler/compileBroker.cpp b/src/hotspot/share/compiler/compileBroker.cpp
|
||||
index 765b8ffa4dc..25271feb41f 100644
|
||||
--- a/src/hotspot/share/compiler/compileBroker.cpp
|
||||
+++ b/src/hotspot/share/compiler/compileBroker.cpp
|
||||
@@ -1877,6 +1877,17 @@ void CompileBroker::compiler_thread_loop() {
|
||||
if (method()->number_of_breakpoints() == 0) {
|
||||
// Compile the method.
|
||||
if ((UseCompiler || AlwaysCompileLoopMethods) && CompileBroker::should_compile_new_jobs()) {
|
||||
+
|
||||
+ // TODO: review usage of CompileThread_lock (DCEVM)
|
||||
+ if (ciObjectFactory::is_reinitialize_wk_klasses())
|
||||
+ {
|
||||
+ ASSERT_IN_VM;
|
||||
+ MutexLocker only_one (CompileThread_lock, thread);
|
||||
+ if (ciObjectFactory::is_reinitialize_wk_klasses()) {
|
||||
+ ciObjectFactory::reinitialize_wk_classes();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
invoke_compiler_on_method(task);
|
||||
thread->start_idle_timer();
|
||||
} else {
|
||||
diff --git a/src/hotspot/share/memory/universe.cpp b/src/hotspot/share/memory/universe.cpp
|
||||
index 3dc4cc1323c..6b88271b5ef 100644
|
||||
--- a/src/hotspot/share/memory/universe.cpp
|
||||
+++ b/src/hotspot/share/memory/universe.cpp
|
||||
@@ -1030,6 +1030,14 @@ void Universe::initialize_known_methods(TRAPS) {
|
||||
vmSymbols::doStackWalk_signature(), false, CHECK);
|
||||
}
|
||||
|
||||
+void Universe::reinitialize_loader_addClass_method(TRAPS) {
|
||||
+ // Set up method for registering loaded classes in class loader vector
|
||||
+ initialize_known_method(_loader_addClass_cache,
|
||||
+ SystemDictionary::ClassLoader_klass(),
|
||||
+ "addClass",
|
||||
+ vmSymbols::class_void_signature(), false, CHECK);
|
||||
+}
|
||||
+
|
||||
void universe2_init() {
|
||||
EXCEPTION_MARK;
|
||||
Universe::genesis(CATCH);
|
||||
diff --git a/src/hotspot/share/memory/universe.hpp b/src/hotspot/share/memory/universe.hpp
|
||||
index 742dada0e8f..d1af82b5fa7 100644
|
||||
--- a/src/hotspot/share/memory/universe.hpp
|
||||
+++ b/src/hotspot/share/memory/universe.hpp
|
||||
@@ -349,6 +349,9 @@ class Universe: AllStatic {
|
||||
// Function to initialize these
|
||||
static void initialize_known_methods(TRAPS);
|
||||
|
||||
+ // Enhanced class redefinition
|
||||
+ static void reinitialize_loader_addClass_method(TRAPS);
|
||||
+
|
||||
static oop null_ptr_exception_instance() { return _null_ptr_exception_instance; }
|
||||
static oop arithmetic_exception_instance() { return _arithmetic_exception_instance; }
|
||||
static oop virtual_machine_error_instance() { return _virtual_machine_error_instance; }
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index f4bde7504c8..80d4e68ccae 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -497,6 +497,16 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||
redefine_single_class(_new_classes->at(i), thread);
|
||||
}
|
||||
|
||||
+ // Update possible redefinition of well-known classes (like ClassLoader)
|
||||
+ for (int i = 0; i < _new_classes->length(); i++) {
|
||||
+ InstanceKlass* cur = _new_classes->at(i);
|
||||
+ if (cur->old_version() != NULL && SystemDictionary::update_well_known_klass(InstanceKlass::cast(cur->old_version()), cur))
|
||||
+ {
|
||||
+ log_trace(redefine, class, obsolete, metadata)("Well known class updated %s", cur->external_name());
|
||||
+ ciObjectFactory::set_reinitialize_wk_klasses();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
// Deoptimize all compiled code that depends on this class (do only once, because it clears whole cache)
|
||||
// if (_max_redefinition_flags > Klass::ModifyClass) {
|
||||
flush_dependent_code(NULL, thread);
|
||||
@@ -672,12 +682,56 @@ void VM_EnhancedRedefineClasses::doit() {
|
||||
_timer_vm_op_doit.stop();
|
||||
}
|
||||
|
||||
+void VM_EnhancedRedefineClasses::reinitializeJDKClasses() {
|
||||
+ if (!_new_classes->is_empty()) {
|
||||
+ ResourceMark rm(Thread::current());
|
||||
+
|
||||
+ for (int i = 0; i < _new_classes->length(); i++) {
|
||||
+ InstanceKlass* cur = _new_classes->at(i);
|
||||
+
|
||||
+ if (cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/")) {
|
||||
+
|
||||
+ if (cur == SystemDictionary::ClassLoader_klass()) {
|
||||
+ // ClassLoader.addClass method is cached in Universe, we must redefine
|
||||
+ Universe::reinitialize_loader_addClass_method(Thread::current());
|
||||
+ log_trace(redefine, class, obsolete, metadata)("Reinitialize ClassLoade addClass method cache.");
|
||||
+ }
|
||||
+
|
||||
+ // naive assumptions that only JDK classes has native static "registerNative" and "initIDs" methods
|
||||
+ int end;
|
||||
+ Symbol* signature = vmSymbols::registerNatives_method_name();
|
||||
+ int midx = cur->find_method_by_name(signature, &end);
|
||||
+ if (midx == -1) {
|
||||
+ signature = vmSymbols::initIDs_method_name();
|
||||
+ midx = cur->find_method_by_name(signature, &end);
|
||||
+ }
|
||||
+ Method* m = NULL;
|
||||
+ if (midx != -1) {
|
||||
+ m = cur->methods()->at(midx);
|
||||
+ }
|
||||
+ if (m != NULL && m->is_static() && m->is_native()) {
|
||||
+ // call static registerNative if present
|
||||
+ JavaValue result(T_VOID);
|
||||
+ JavaCalls::call_static(&result,
|
||||
+ cur,
|
||||
+ signature,
|
||||
+ vmSymbols::void_method_signature(),
|
||||
+ Thread::current());
|
||||
+ log_trace(redefine, class, obsolete, metadata)("Reregister natives of JDK class %s", cur->external_name());
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
// Cleanup - runs in JVM thread
|
||||
// - free used memory
|
||||
// - end GC
|
||||
void VM_EnhancedRedefineClasses::doit_epilogue() {
|
||||
VM_GC_Operation::doit_epilogue();
|
||||
|
||||
+ reinitializeJDKClasses();
|
||||
+
|
||||
if (_new_classes != NULL) {
|
||||
delete _new_classes;
|
||||
}
|
||||
@@ -1589,7 +1643,12 @@ void VM_EnhancedRedefineClasses::check_methods_and_mark_as_obsolete() {
|
||||
|
||||
// obsolete methods need a unique idnum so they become new entries in
|
||||
// the jmethodID cache in InstanceKlass
|
||||
- assert(old_method->method_idnum() == new_method->method_idnum(), "must match");
|
||||
+ if (old_method->method_idnum() != new_method->method_idnum()) {
|
||||
+ log_error(redefine, class, normalize)
|
||||
+ ("Method not matched: %d != %d old: %s = new: %s", old_method->method_idnum(), new_method->method_idnum(),
|
||||
+ old_method->name_and_sig_as_C_string(), new_method->name_and_sig_as_C_string());
|
||||
+ // assert(old_method->method_idnum() == new_method->method_idnum(), "must match");
|
||||
+ }
|
||||
// u2 num = InstanceKlass::cast(_the_class_oop)->next_method_idnum();
|
||||
// if (num != ConstMethod::UNSET_IDNUM) {
|
||||
// old_method->set_method_idnum(num);
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
index 4c0412d343d..79ea17b0d47 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.hpp
|
||||
@@ -141,6 +141,8 @@ class VM_EnhancedRedefineClasses: public VM_GC_Operation {
|
||||
|
||||
void flush_dependent_code(InstanceKlass* k_h, TRAPS);
|
||||
|
||||
+ void reinitializeJDKClasses();
|
||||
+
|
||||
static void check_class(InstanceKlass* k_oop, TRAPS);
|
||||
|
||||
static void dump_methods();
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 416d06e7e5f3517e9303b0b5a705888e4db740bd Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 19 Mar 2021 19:13:38 +0100
|
||||
Subject: [PATCH 27/28] JBR-3458: Skip dynamic proxy classes based on
|
||||
com.sun.proxy
|
||||
|
||||
---
|
||||
src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 80d4e68ccae..10c375d601c 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -689,7 +689,8 @@ void VM_EnhancedRedefineClasses::reinitializeJDKClasses() {
|
||||
for (int i = 0; i < _new_classes->length(); i++) {
|
||||
InstanceKlass* cur = _new_classes->at(i);
|
||||
|
||||
- if (cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/")) {
|
||||
+ if ((cur->name()->starts_with("java/") || cur->name()->starts_with("jdk/") || cur->name()->starts_with("sun/"))
|
||||
+ && cur->name()->index_of_at(0, "$$") == -1) { // skip dynamic proxies
|
||||
|
||||
if (cur == SystemDictionary::ClassLoader_klass()) {
|
||||
// ClassLoader.addClass method is cached in Universe, we must redefine
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
From 88e0325768b074607f5f9edfbb7f8e4a76159942 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 20 Mar 2021 20:51:08 +0100
|
||||
Subject: [PATCH 28/28] JBR-3459: Fix race condition in
|
||||
ClassLoaderDataGraph::classes_do
|
||||
|
||||
InstanceKlass in ClassLoaderData can be uninitialized when
|
||||
ClassLoaderDataGraph::classes_do is called. Using
|
||||
ClassLoaderDataGraph::dictionary_classes_do is safe but problem is still
|
||||
persisting with anonymous classes.
|
||||
---
|
||||
src/hotspot/share/classfile/classLoaderData.cpp | 10 ++++++++++
|
||||
src/hotspot/share/classfile/classLoaderData.hpp | 4 ++++
|
||||
.../share/prims/jvmtiEnhancedRedefineClasses.cpp | 13 +++++++++++--
|
||||
3 files changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
index 4e06b09e7d5..f319cca3b2b 100644
|
||||
--- a/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
+++ b/src/hotspot/share/classfile/classLoaderData.cpp
|
||||
@@ -1166,6 +1166,16 @@ void ClassLoaderDataGraph::classes_do(KlassClosure* klass_closure) {
|
||||
}
|
||||
}
|
||||
|
||||
+void ClassLoaderDataGraph::anonymous_classes_do(KlassClosure* klass_closure) {
|
||||
+ Thread* thread = Thread::current();
|
||||
+ for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||
+ if (cld->is_anonymous()) {
|
||||
+ Handle holder(thread, cld->holder_phantom());
|
||||
+ cld->classes_do(klass_closure);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void ClassLoaderDataGraph::classes_do(void f(Klass* const)) {
|
||||
Thread* thread = Thread::current();
|
||||
for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
|
||||
diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
index 16711dca237..b10fafa01e5 100644
|
||||
--- a/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
+++ b/src/hotspot/share/classfile/classLoaderData.hpp
|
||||
@@ -108,6 +108,10 @@ class ClassLoaderDataGraph : public AllStatic {
|
||||
// for redefinition. These classes are removed during the next class unloading.
|
||||
// Walking the ClassLoaderDataGraph also includes anonymous classes.
|
||||
static void classes_do(KlassClosure* klass_closure);
|
||||
+
|
||||
+ // Enhanced class redefinition
|
||||
+ static void anonymous_classes_do(KlassClosure* klass_closure);
|
||||
+
|
||||
static void classes_do(void f(Klass* const));
|
||||
static void methods_do(void f(Method*));
|
||||
static void modules_do(void f(ModuleEntry*));
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
index 10c375d601c..5de5f78aea0 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnhancedRedefineClasses.cpp
|
||||
@@ -2130,8 +2130,17 @@ jvmtiError VM_EnhancedRedefineClasses::find_sorted_affected_classes(TRAPS) {
|
||||
AffectedKlassClosure closure(_affected_klasses);
|
||||
// Updated in j10, from original SystemDictionary::classes_do
|
||||
|
||||
- ClassLoaderDataGraph::classes_do(&closure);
|
||||
- //ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||
+ // 0. we can't use ClassLoaderDataGraph::classes_do since classes can be uninitialized in cld,
|
||||
+ // fully initialized class is in system dictionary
|
||||
+ // ClassLoaderDataGraph::classes_do(&closure);
|
||||
+
|
||||
+ // 1. Scan over dictionaries
|
||||
+ ClassLoaderDataGraph::dictionary_classes_do(&closure);
|
||||
+
|
||||
+ // 2. Anonymous class is not in dictionary, we have to iterate anonymous cld directly, but there is race cond...
|
||||
+ // TODO: review ... anonymous class is added to cld before InstanceKlass initialization,
|
||||
+ // find out how to check if the InstanceKlass is initialized
|
||||
+ ClassLoaderDataGraph::anonymous_classes_do(&closure);
|
||||
|
||||
log_trace(redefine, class, load)("%d classes affected", _affected_klasses->length());
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -168,14 +168,6 @@ JAVADOC_TOP := \
|
||||
font-family: DejaVu Sans, Arial, Helvetica, sans-serif; \
|
||||
font-weight: normal;">$(DRAFT_TEXT)</div>
|
||||
|
||||
JDK_INDEX_CONTENT := \
|
||||
<!DOCTYPE html> \
|
||||
<html lang="en"> \
|
||||
<head> \
|
||||
<meta http-equiv="refresh" content="0;url=api/index.html"> \
|
||||
</head> \
|
||||
</html>
|
||||
|
||||
################################################################################
|
||||
# JDK javadoc titles/text snippets
|
||||
|
||||
@@ -485,14 +477,7 @@ $(eval $(call SetupApiDocsGeneration, REFERENCE_API, \
|
||||
|
||||
################################################################################
|
||||
|
||||
JDK_INDEX_HTML := $(DOCS_OUTPUTDIR)/index.html
|
||||
|
||||
$(JDK_INDEX_HTML):
|
||||
$(ECHO) '$(JDK_INDEX_CONTENT)' > $@
|
||||
|
||||
JDK_INDEX_TARGETS += $(JDK_INDEX_HTML)
|
||||
|
||||
# Copy the global resources
|
||||
# Copy the global resources, including the top-level redirect index.html
|
||||
GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources/
|
||||
$(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
|
||||
SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
|
||||
|
||||
@@ -532,6 +532,7 @@ define SetupRunGtestTestBody
|
||||
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
|
||||
-jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
|
||||
--gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
|
||||
--gtest_catch_exceptions=0 \
|
||||
$$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
|
||||
$$(GTEST_JAVA_OPTIONS) $$($1_AOT_OPTIONS) \
|
||||
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
|
||||
|
||||
@@ -715,9 +715,21 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
# CFLAGS PER CPU
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
# COMMON to gcc and clang
|
||||
AC_MSG_CHECKING([if $1 is x86])
|
||||
if test "x$FLAGS_CPU" = xx86; then
|
||||
# Force compatibility with i586 on 32 bit intel platforms.
|
||||
$1_CFLAGS_CPU="-march=i586"
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([if control flow protection is enabled by additional compiler flags])
|
||||
if echo "${EXTRA_CFLAGS}${EXTRA_CXXFLAGS}${EXTRA_ASFLAGS}" | ${GREP} -q 'fcf-protection' ; then
|
||||
# cf-protection requires CMOV and thus i686
|
||||
$1_CFLAGS_CPU="-march=i686"
|
||||
AC_MSG_RESULT([yes, forcing ${$1_CFLAGS_CPU}])
|
||||
else
|
||||
# Force compatibility with i586 on 32 bit intel platforms.
|
||||
$1_CFLAGS_CPU="-march=i586"
|
||||
AC_MSG_RESULT([no, forcing ${$1_CFLAGS_CPU}])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
||||
# Assume clang or gcc.
|
||||
# FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
|
||||
OS_LDFLAGS_JVM_ONLY="-Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
|
||||
OS_LDFLAGS_JDK_ONLY="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
OS_LDFLAGS="-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -209,13 +209,13 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
|
||||
|
||||
# Export variables according to old definitions, prefix with $2 if present.
|
||||
LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \
|
||||
$OS_LDFLAGS_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
||||
$OS_LDFLAGS $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}"
|
||||
$2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_JDK_LIB_ONLY \
|
||||
${$1_LDFLAGS_JDK_LIBPATH} $SHARED_LIBRARY_FLAGS"
|
||||
$2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \
|
||||
${$1_CPU_EXECUTABLE_LDFLAGS}"
|
||||
|
||||
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS_JVM_ONLY \
|
||||
$2JVM_LDFLAGS="$BASIC_LDFLAGS $BASIC_LDFLAGS_JVM_ONLY $OS_LDFLAGS $OS_LDFLAGS_JVM_ONLY \
|
||||
$DEBUGLEVEL_LDFLAGS $DEBUGLEVEL_LDFLAGS_JVM_ONLY $BASIC_LDFLAGS_ONLYCXX \
|
||||
${$1_CPU_LDFLAGS} ${$1_CPU_LDFLAGS_JVM_ONLY} ${$2EXTRA_LDFLAGS}"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -107,6 +107,16 @@ AC_DEFUN([FLAGS_SETUP_ASFLAGS],
|
||||
[
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
JVM_BASIC_ASFLAGS="-x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
|
||||
|
||||
# Fix linker warning.
|
||||
# Code taken from make/autoconf/flags-cflags.m4 and adapted.
|
||||
JVM_BASIC_ASFLAGS+="-DMAC_OS_X_VERSION_MIN_REQUIRED=$MACOSX_VERSION_MIN_NODOTS \
|
||||
-mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
|
||||
if test -n "$MACOSX_VERSION_MAX"; then
|
||||
JVM_BASIC_ASFLAGS+="$OS_CFLAGS \
|
||||
-DMAC_OS_X_VERSION_MAX_ALLOWED=$MACOSX_VERSION_MAX_NODOTS"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -291,11 +291,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
[AS_HELP_STRING([--with-native-debug-symbols],
|
||||
[set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])],
|
||||
[
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
if test "x$withval" = xexternal || test "x$withval" = xzipped; then
|
||||
AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols])
|
||||
fi
|
||||
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
if test "x$withval" = xinternal; then
|
||||
AC_MSG_ERROR([Windows does not support the parameter 'internal' for --with-native-debug-symbols])
|
||||
fi
|
||||
@@ -305,12 +301,7 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
|
||||
if test "x$STATIC_BUILD" = xtrue; then
|
||||
with_native_debug_symbols="none"
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
# AIX doesn't support 'external' so use 'internal' as default
|
||||
with_native_debug_symbols="internal"
|
||||
else
|
||||
with_native_debug_symbols="external"
|
||||
fi
|
||||
with_native_debug_symbols="external"
|
||||
fi
|
||||
])
|
||||
AC_MSG_RESULT([$with_native_debug_symbols])
|
||||
|
||||
@@ -173,6 +173,16 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
|
||||
FREETYPE_BASE_DIR="$SYSROOT/usr"
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
|
||||
|
||||
if test "x$FOUND_FREETYPE" != "xyes" ; then
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include],
|
||||
[$FREETYPE_BASE_DIR/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI], [well-known location])
|
||||
fi
|
||||
|
||||
if test "x$FOUND_FREETYPE" != "xyes" ; then
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include],
|
||||
[$FREETYPE_BASE_DIR/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI], [well-known location])
|
||||
fi
|
||||
|
||||
if (test "x$FOUND_FREETYPE" != "xyes"); then
|
||||
FREETYPE_BASE_DIR="$SYSROOT/usr/X11"
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
|
||||
|
||||
@@ -68,6 +68,10 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
|
||||
x_libraries="$SYSROOT/usr/lib64"
|
||||
elif test -f "$SYSROOT/usr/lib/libX11.so"; then
|
||||
x_libraries="$SYSROOT/usr/lib"
|
||||
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"; then
|
||||
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"
|
||||
elif test -f "$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"; then
|
||||
x_libraries="$SYSROOT/usr/lib/$OPENJDK_TARGET_CPU_AUTOCONF-$OPENJDK_TARGET_OS-$OPENJDK_TARGET_ABI/libX11.so"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -209,6 +209,33 @@ 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_ABI.
|
||||
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_ABI],
|
||||
[
|
||||
case "$1" in
|
||||
*linux*-musl)
|
||||
VAR_ABI=musl
|
||||
;;
|
||||
*linux*-gnu)
|
||||
VAR_ABI=gnu
|
||||
;;
|
||||
*linux*-gnueabi)
|
||||
VAR_ABI=gnueabi
|
||||
;;
|
||||
*linux*-gnueabihf)
|
||||
VAR_ABI=gnueabihf
|
||||
;;
|
||||
*linux*-gnuabi64)
|
||||
VAR_ABI=gnuabi64
|
||||
;;
|
||||
*)
|
||||
VAR_ABI=default
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Expects $host_os $host_cpu $build_os and $build_cpu
|
||||
# and $with_target_bits to have been setup!
|
||||
#
|
||||
@@ -229,6 +256,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu, $build_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_ABI($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
|
||||
@@ -245,6 +273,8 @@ 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_CPU_AUTOCONF="$build_cpu"
|
||||
OPENJDK_BUILD_ABI="$VAR_ABI"
|
||||
AC_SUBST(OPENJDK_BUILD_OS)
|
||||
AC_SUBST(OPENJDK_BUILD_OS_TYPE)
|
||||
AC_SUBST(OPENJDK_BUILD_OS_ENV)
|
||||
@@ -252,6 +282,8 @@ 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_CPU_AUTOCONF)
|
||||
AC_SUBST(OPENJDK_BUILD_ABI)
|
||||
|
||||
AC_MSG_CHECKING([openjdk-build os-cpu])
|
||||
AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
|
||||
@@ -259,6 +291,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu, $host_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_ABI($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
|
||||
@@ -275,7 +308,9 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
|
||||
OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
|
||||
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
|
||||
OPENJDK_TARGET_CPU_AUTOCONF="$host_cpu"
|
||||
OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
|
||||
OPENJDK_TARGET_ABI="$VAR_ABI"
|
||||
|
||||
AC_SUBST(OPENJDK_TARGET_OS)
|
||||
AC_SUBST(OPENJDK_TARGET_OS_TYPE)
|
||||
@@ -285,6 +320,8 @@ 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_CPU_AUTOCONF)
|
||||
AC_SUBST(OPENJDK_TARGET_ABI)
|
||||
|
||||
AC_MSG_CHECKING([openjdk-target os-cpu])
|
||||
AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
|
||||
@@ -382,7 +382,7 @@ GCOV_ENABLED=@GCOV_ENABLED@
|
||||
export ASAN_ENABLED:=@ASAN_ENABLED@
|
||||
export DEVKIT_LIB_DIR:=@DEVKIT_LIB_DIR@
|
||||
ifeq ($(ASAN_ENABLED), yes)
|
||||
export ASAN_OPTIONS="handle_segv=0 detect_leaks=0"
|
||||
export ASAN_OPTIONS=handle_segv=0 detect_leaks=0
|
||||
ifneq ($(DEVKIT_LIB_DIR),)
|
||||
export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(DEVKIT_LIB_DIR)
|
||||
endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, 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
|
||||
@@ -87,6 +87,7 @@ VS_SDK_INSTALLDIR_2017=
|
||||
VS_VS_PLATFORM_NAME_2017="v141"
|
||||
VS_SDK_PLATFORM_NAME_2017=
|
||||
VS_SUPPORTED_2017=true
|
||||
VS_TOOLSET_SUPPORTED_2017=true
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -98,7 +99,7 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
METHOD="$3"
|
||||
|
||||
BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VS_BASE)
|
||||
# In VS 2017, the default installation is in a subdir named after the edition.
|
||||
# In VS 2017 and VS 2019, the default installation is in a subdir named after the edition.
|
||||
# Find the first one present and use that.
|
||||
if test "x$VS_EDITIONS" != x; then
|
||||
for edition in $VS_EDITIONS; do
|
||||
@@ -177,6 +178,15 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
|
||||
# build environment and assigns it to VS_ENV_CMD
|
||||
AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
[
|
||||
# VS2017 provides the option to install previous minor versions of the MSVC
|
||||
# toolsets. It is not possible to directly download earlier minor versions of
|
||||
# VS2017 and in order to build with a previous minor compiler toolset version,
|
||||
# it is now possible to compile with earlier minor versions by passing
|
||||
# -vcvars_ver=<toolset_version> argument to vcvarsall.bat.
|
||||
AC_ARG_WITH(msvc-toolset-version, [AS_HELP_STRING([--with-msvc-toolset-version],
|
||||
[specific MSVC toolset version to use, passed as -vcvars_ver argument to
|
||||
pass to vcvarsall.bat (Windows only)])])
|
||||
|
||||
VS_VERSION="$1"
|
||||
eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}"
|
||||
eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}"
|
||||
@@ -184,6 +194,7 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
eval VS_EDITIONS="\${VS_EDITIONS_${VS_VERSION}}"
|
||||
eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}"
|
||||
eval VS_ENV_ARGS="\${VS_ENV_ARGS_${VS_VERSION}}"
|
||||
eval VS_TOOLSET_SUPPORTED="\${VS_TOOLSET_SUPPORTED_${VS_VERSION}}"
|
||||
|
||||
VS_ENV_CMD=""
|
||||
|
||||
@@ -241,6 +252,12 @@ AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
|
||||
TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
|
||||
[C:/Program Files (x86)/$SDK_INSTALL_DIR], [well-known name])
|
||||
fi
|
||||
|
||||
if test "x$VS_TOOLSET_SUPPORTED" != x; then
|
||||
if test "x$with_msvc_toolset_version" != x; then
|
||||
VS_ENV_ARGS="$VS_ENV_ARGS -vcvars_ver=$with_msvc_toolset_version"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
################################################################################
|
||||
@@ -397,6 +414,8 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo VCToolsRedistDir="'\"$VCToolsRedistDir \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
|
||||
>> $EXTRACT_VC_ENV_BAT_FILE
|
||||
$ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
|
||||
@@ -442,6 +461,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
|
||||
VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
|
||||
VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
|
||||
VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
|
||||
VCToolsRedistDir=`$ECHO "$VCToolsRedistDir" | $SED 's/\\\\* *$//'`
|
||||
WindowsSdkDir=`$ECHO "$WindowsSdkDir" | $SED 's/\\\\* *$//'`
|
||||
WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
|
||||
if test -z "$WINDOWSSDKDIR"; then
|
||||
@@ -561,6 +581,8 @@ AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
|
||||
POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
|
||||
fi
|
||||
else
|
||||
CYGWIN_VC_TOOLS_REDIST_DIR="$VCToolsRedistDir"
|
||||
BASIC_FIXUP_PATH(CYGWIN_VC_TOOLS_REDIST_DIR)
|
||||
# Probe: Using well-known location from VS 2017
|
||||
if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
|
||||
POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_INSTALL_DIR/Redist/MSVC/*/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`"
|
||||
|
||||
@@ -28,16 +28,16 @@
|
||||
|
||||
DEFAULT_VERSION_FEATURE=11
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=10
|
||||
DEFAULT_VERSION_UPDATE=13
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2021-01-19
|
||||
DEFAULT_VERSION_DATE=2021-10-19
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
||||
DEFAULT_PROMOTED_VERSION_PRE=
|
||||
|
||||
LAUNCHER_NAME=openjdk
|
||||
PRODUCT_NAME=OpenJDK
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -239,15 +239,30 @@ ifeq ($(ALLOW_ABSOLUTE_PATHS_IN_OUTPUT)-$(FILE_MACRO_CFLAGS), false-)
|
||||
) \
|
||||
)
|
||||
|
||||
# When compiling with relative paths, the deps file comes out with relative
|
||||
# paths.
|
||||
# When compiling with relative paths, the deps file may come out with relative
|
||||
# paths, and that path may start with './'. First remove any leading ./, then
|
||||
# add WORKSPACE_ROOT to any line not starting with /, while allowing for
|
||||
# leading spaces. There may also be multiple entries on the same line, so start
|
||||
# with splitting such lines.
|
||||
# Non GNU sed (BSD on macosx) cannot substitue in literal \n using regex.
|
||||
# Instead use a bash escaped literal newline. To avoid having unmatched quotes
|
||||
# ruin the ability for an editor to properly syntax highlight this file, define
|
||||
# that newline sequence as a separate variable and add the closing quote behind
|
||||
# a comment.
|
||||
sed_newline := \'$$'\n''#'
|
||||
ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
define fix-deps-file
|
||||
$(SED) -e 's|\./|$(WORKSPACE_ROOT)/|g' $1.tmp > $1
|
||||
endef
|
||||
else
|
||||
define fix-deps-file
|
||||
$(SED) -e 's|^\([ ]*\)|\1$(WORKSPACE_ROOT)|' $1.tmp > $1
|
||||
$(SED) \
|
||||
-e 's|\([^ ]\) \{1,\}\([^\\:]\)|\1 \\$(sed_newline) \2|g' \
|
||||
$1.tmp \
|
||||
| $(SED) \
|
||||
-e 's|^\([ ]*\)\./|\1|' \
|
||||
-e '/^[ ]*[^/ ]/s|^\([ ]*\)|\1$(WORKSPACE_ROOT)/|' \
|
||||
> $1
|
||||
endef
|
||||
endif
|
||||
else
|
||||
@@ -823,13 +838,15 @@ define SetupNativeCompilationBody
|
||||
-include $$($1_PCH_DEPS_TARGETS_FILE)
|
||||
|
||||
$1_PCH_COMMAND := $$($1_CC) $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
|
||||
$$($1_OPT_CFLAGS) -x c++-header -c $(C_FLAG_DEPS) $$($1_PCH_DEPS_FILE)
|
||||
$$($1_OPT_CFLAGS) -x c++-header -c $(C_FLAG_DEPS) \
|
||||
$$(addsuffix .tmp, $$($1_PCH_DEPS_FILE))
|
||||
|
||||
$$($1_PCH_FILE): $$($1_PRECOMPILED_HEADER) $$($1_COMPILE_VARDEPS_FILE)
|
||||
$$(call LogInfo, Generating precompiled header)
|
||||
$$(call MakeDir, $$(@D))
|
||||
$$(call ExecuteWithLog, $$@, $$(call MakeCommandRelative, \
|
||||
$$($1_PCH_COMMAND) $$< -o $$@))
|
||||
$$(call fix-deps-file, $$($1_PCH_DEPS_FILE))
|
||||
$(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_PCH_DEPS_FILE) \
|
||||
> $$($1_PCH_DEPS_TARGETS_FILE)
|
||||
|
||||
@@ -991,6 +1008,13 @@ define SetupNativeCompilationBody
|
||||
$(CD) $$($1_OUTPUT_DIR) && \
|
||||
$$($1_OBJCOPY) --add-gnu-debuglink=$$($1_DEBUGINFO_FILES) $$($1_TARGET)
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
# AIX does not provide the equivalent of OBJCOPY to extract debug symbols,
|
||||
# so we copy the compiled object with symbols to the .debuginfo file, which
|
||||
# happens prior to the STRIP_CMD on the original target object file.
|
||||
$1_DEBUGINFO_FILES := $$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).debuginfo
|
||||
$1_CREATE_DEBUGINFO_CMDS := $(CP) $$($1_TARGET) $$($1_DEBUGINFO_FILES)
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$1_DEBUGINFO_FILES := \
|
||||
$$($1_OUTPUT_DIR)/$$($1_BASENAME).dSYM/Contents/Info.plist \
|
||||
|
||||
@@ -75,7 +75,7 @@ define SetupTestFilesCompilationBody
|
||||
|
||||
# Locate all files with the matching prefix
|
||||
$1_FILE_LIST := \
|
||||
$$(call FindFiles, $$($1_SOURCE_DIRS), $$($1_PREFIX)*.c)
|
||||
$$(call FindFiles, $$($1_SOURCE_DIRS), $$($1_PREFIX)*.c $$($1_PREFIX)*.m)
|
||||
|
||||
$1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE))
|
||||
$1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_FILE_LIST))
|
||||
|
||||
@@ -918,11 +918,12 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
},
|
||||
|
||||
jtreg: {
|
||||
server: "javare",
|
||||
revision: "4.2",
|
||||
build_number: "b13",
|
||||
server: "jpg",
|
||||
product: "jtreg",
|
||||
version: "5.1",
|
||||
build_number: "b01",
|
||||
checksum_file: "MD5_VALUES",
|
||||
file: "jtreg_bin-4.2.zip",
|
||||
file: "bundles/jtreg_bin-5.1.zip",
|
||||
environment_name: "JT_HOME",
|
||||
environment_path: input.get("jtreg", "install_path") + "/jtreg/bin"
|
||||
},
|
||||
@@ -1160,15 +1161,15 @@ var concatObjects = function (o1, o2) {
|
||||
* @param patch Override patch version
|
||||
* @returns {String} The numeric version string
|
||||
*/
|
||||
var getVersion = function (feature, interim, update, patch) {
|
||||
var getVersion = function (feature, interim, update, patch, extra1, extra2, extra3) {
|
||||
var version_numbers = getVersionNumbers();
|
||||
var version = (feature != null ? feature : version_numbers.get("DEFAULT_VERSION_FEATURE"))
|
||||
+ "." + (interim != null ? interim : version_numbers.get("DEFAULT_VERSION_INTERIM"))
|
||||
+ "." + (update != null ? update : version_numbers.get("DEFAULT_VERSION_UPDATE"))
|
||||
+ "." + (patch != null ? patch : version_numbers.get("DEFAULT_VERSION_PATCH"))
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA1")
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA2")
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA3");
|
||||
+ "." + (extra1 != null ? extra1 : version_numbers.get("DEFAULT_VERSION_EXTRA1"))
|
||||
+ "." + (extra2 != null ? extra2 : version_numbers.get("DEFAULT_VERSION_EXTRA2"))
|
||||
+ "." + (extra3 != null ? extra3 : version_numbers.get("DEFAULT_VERSION_EXTRA3"));
|
||||
while (version.match(".*\\.0$")) {
|
||||
version = version.substring(0, version.length - 2);
|
||||
}
|
||||
|
||||
43
make/conf/test-dependencies
Normal file
43
make/conf/test-dependencies
Normal file
@@ -0,0 +1,43 @@
|
||||
#
|
||||
# Copyright (c) 2020, 2021, 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=11
|
||||
JTREG_VERSION=5.1
|
||||
JTREG_BUILD=b01
|
||||
GTEST_VERSION=1.8.1
|
||||
|
||||
LINUX_X64_BOOT_JDK_FILENAME=openjdk-11_linux-x64_bin.tar.gz
|
||||
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz
|
||||
LINUX_X64_BOOT_JDK_SHA256=8770f600fc3b89bf331213c7aa21f8eedd9ca5d96036d1cd48cb2748a3dbefd2
|
||||
|
||||
WINDOWS_X64_BOOT_JDK_FILENAME=openjdk-11_windows-x64_bin.zip
|
||||
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7.zip
|
||||
WINDOWS_X64_BOOT_JDK_SHA256=c54123dd4b0d6473221539e7003b8ca1c1757c5588c46465565b03bf8781f807
|
||||
|
||||
MACOS_X64_BOOT_JDK_FILENAME=openjdk-11_osx-x64_bin.tar.gz
|
||||
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_mac_hotspot_11.0.12_7.tar.gz
|
||||
MACOS_X64_BOOT_JDK_SHA256=13d056ee9a57bf2d5b3af4504c8f8cf7a246c4dff78f96b70dd05dad98075855
|
||||
24
make/data/cacerts/haricaeccrootca2015
Normal file
24
make/data/cacerts/haricaeccrootca2015
Normal file
@@ -0,0 +1,24 @@
|
||||
Owner: CN=Hellenic Academic and Research Institutions ECC RootCA 2015, O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
|
||||
Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015, O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
|
||||
Serial number: 0
|
||||
Valid from: Tue Jul 07 10:37:12 GMT 2015 until: Sat Jun 30 10:37:12 GMT 2040
|
||||
Signature algorithm name: SHA256withECDSA
|
||||
Subject Public Key Algorithm: 384-bit EC key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN
|
||||
BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
|
||||
c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl
|
||||
bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv
|
||||
b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ
|
||||
BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj
|
||||
YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5
|
||||
MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0
|
||||
dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg
|
||||
QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa
|
||||
jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC
|
||||
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi
|
||||
C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep
|
||||
lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof
|
||||
TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
||||
-----END CERTIFICATE-----
|
||||
42
make/data/cacerts/haricarootca2015
Normal file
42
make/data/cacerts/haricarootca2015
Normal file
@@ -0,0 +1,42 @@
|
||||
Owner: CN=Hellenic Academic and Research Institutions RootCA 2015, O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
|
||||
Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015, O=Hellenic Academic and Research Institutions Cert. Authority, L=Athens, C=GR
|
||||
Serial number: 0
|
||||
Valid from: Tue Jul 07 10:11:21 GMT 2015 until: Sat Jun 30 10:11:21 GMT 2040
|
||||
Signature algorithm name: SHA256withRSA
|
||||
Subject Public Key Algorithm: 4096-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix
|
||||
DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k
|
||||
IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT
|
||||
N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v
|
||||
dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG
|
||||
A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh
|
||||
ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx
|
||||
QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
|
||||
dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA
|
||||
4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0
|
||||
AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10
|
||||
4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C
|
||||
ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV
|
||||
9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD
|
||||
gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6
|
||||
Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq
|
||||
NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko
|
||||
LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
|
||||
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV
|
||||
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd
|
||||
ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I
|
||||
XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI
|
||||
M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot
|
||||
9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V
|
||||
Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea
|
||||
j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh
|
||||
X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ
|
||||
l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf
|
||||
bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4
|
||||
pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK
|
||||
e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0
|
||||
vm9qp/UsQu0yrbYhnr68
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,27 +0,0 @@
|
||||
Owner: CN=DST Root CA X3, O=Digital Signature Trust Co.
|
||||
Issuer: CN=DST Root CA X3, O=Digital Signature Trust Co.
|
||||
Serial number: 44afb080d6a327ba893039862ef8406b
|
||||
Valid from: Sat Sep 30 21:12:19 GMT 2000 until: Thu Sep 30 14:01:15 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 2048-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
|
||||
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
|
||||
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
|
||||
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
|
||||
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
|
||||
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
|
||||
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
|
||||
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
|
||||
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
|
||||
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
|
||||
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
|
||||
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
|
||||
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
|
||||
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
|
||||
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
|
||||
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
|
||||
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
Owner: CN=Sonera Class2 CA, O=Sonera, C=FI
|
||||
Issuer: CN=Sonera Class2 CA, O=Sonera, C=FI
|
||||
Serial number: 1d
|
||||
Valid from: Fri Apr 06 07:29:40 GMT 2001 until: Tue Apr 06 07:29:40 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 2048-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP
|
||||
MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx
|
||||
MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV
|
||||
BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o
|
||||
Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt
|
||||
5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s
|
||||
3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej
|
||||
vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu
|
||||
8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw
|
||||
DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG
|
||||
MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil
|
||||
zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/
|
||||
3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD
|
||||
FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6
|
||||
Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2
|
||||
ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,27 +0,0 @@
|
||||
Owner: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
|
||||
Issuer: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
|
||||
Serial number: 36122296c5e338a520a1d25f4cd70954
|
||||
Valid from: Thu Aug 01 00:00:00 GMT 1996 until: Fri Jan 01 23:59:59 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDNjCCAp+gAwIBAgIQNhIilsXjOKUgodJfTNcJVDANBgkqhkiG9w0BAQUFADCB
|
||||
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
|
||||
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
|
||||
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
|
||||
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
|
||||
cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIxMDEwMTIzNTk1OVow
|
||||
gc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcT
|
||||
CUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNV
|
||||
BAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRo
|
||||
YXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1z
|
||||
ZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
||||
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560
|
||||
ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j
|
||||
+ao6hnO2RlNYyIkFvYMRuHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBlkKyID1bZ5jA01CbH0FDxkt5r1DmI
|
||||
CSLGpmODA/eZd9iy5Ri4XWPz1HP7bJyZePFLeH0ZJMMrAoT4vCLZiiLXoPxx7JGH
|
||||
IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga
|
||||
WuFg3GQjPEIuTQ==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Serial number: b92f60cc889fa17a4609b85b706c8aaf
|
||||
Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw
|
||||
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns
|
||||
YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
|
||||
MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
||||
aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe
|
||||
Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX
|
||||
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj
|
||||
IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx
|
||||
KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
|
||||
eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B
|
||||
AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM
|
||||
HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw
|
||||
DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC
|
||||
AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji
|
||||
nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
|
||||
rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn
|
||||
jBJ7xUS0rg==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,21 +0,0 @@
|
||||
Owner: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
|
||||
Serial number: 3c9131cb1ff6d01b0e9ab8d044bf12be
|
||||
Valid from: Mon Jan 29 00:00:00 GMT 1996 until: Wed Aug 02 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
|
||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
||||
MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
||||
CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
|
||||
2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
|
||||
2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,26 +0,0 @@
|
||||
Owner: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Issuer: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
|
||||
Serial number: 7dd9fe07cfa81eb7107967fba78934c6
|
||||
Valid from: Mon May 18 00:00:00 GMT 1998 until: Tue Aug 01 23:59:59 GMT 2028
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 1
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
|
||||
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
|
||||
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
|
||||
MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
|
||||
emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
|
||||
DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
|
||||
FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
|
||||
UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
|
||||
YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
|
||||
MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
|
||||
AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
|
||||
pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
|
||||
13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
|
||||
AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
|
||||
U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
|
||||
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
|
||||
oJ2daZH9
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,24 +0,0 @@
|
||||
Owner: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
|
||||
Issuer: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
|
||||
Serial number: 67c8e1e8e3be1cbdfc913b8ea6238749
|
||||
Valid from: Wed Jan 01 00:00:00 GMT 1997 until: Fri Jan 01 23:59:59 GMT 2021
|
||||
Signature algorithm name: SHA1withRSA
|
||||
Subject Public Key Algorithm: 1024-bit RSA key
|
||||
Version: 3
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICsDCCAhmgAwIBAgIQZ8jh6OO+HL38kTuOpiOHSTANBgkqhkiG9w0BAQUFADCB
|
||||
izELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxML
|
||||
RHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENl
|
||||
cnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcN
|
||||
OTcwMTAxMDAwMDAwWhcNMjEwMTAxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
|
||||
BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNV
|
||||
BAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNV
|
||||
BAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
|
||||
MIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u
|
||||
6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522
|
||||
FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
|
||||
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAS+mqF4EF+3kKMZ/F
|
||||
QfRWVKvpwuWXjhj+kckMPiZkyaFMJ2SnvQGTVXFuF0853BvcSTUQOSP/ypvIz2Y/
|
||||
3Ewa1IEGQlIf4SaxFhe65nByMUToTo1b5NP50OOPJWQx5yr4GIg2GlLFDUE1G2m3
|
||||
JvUXzMEZXkt8XOKDgJH6L/uatxY=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2008, 2019, 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
|
||||
@@ -48,7 +48,7 @@ public class $NAME_CLZ$ extends Charset implements HistoricallyNamedCharset
|
||||
}
|
||||
|
||||
public CharsetDecoder newDecoder() {
|
||||
return new SingleByte.Decoder(this, b2c, $ASCIICOMPATIBLE$);
|
||||
return new SingleByte.Decoder(this, b2c, $ASCIICOMPATIBLE$, $LATIN1DECODABLE$);
|
||||
}
|
||||
|
||||
public CharsetEncoder newEncoder() {
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<!--
|
||||
Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
|
||||
This code is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License version 2 only, as
|
||||
published by the Free Software Foundation.
|
||||
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
|
||||
@@ -20,21 +23,11 @@
|
||||
or visit www.oracle.com if you need additional information or have any
|
||||
questions.
|
||||
-->
|
||||
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;url=api/index.html">
|
||||
<title>Java API Documentation redirect</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Verify that high resolution system icons are used JCheckBoxMenuItem
|
||||
on HiDPI displays.
|
||||
|
||||
If the display does not support HiDPI mode press PASS.
|
||||
|
||||
1. Run the test on HiDPI Display.
|
||||
2. Press the Menu in the applet
|
||||
3. Check that the icon on the JCheckBoxMenuItem is smooth
|
||||
If so, press PASS, else press FAIL.
|
||||
|
||||
<applet code="bug8031573.class" width=250 height=250></applet>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +1,4 @@
|
||||
File-Date: 2019-09-16
|
||||
File-Date: 2020-09-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: aa
|
||||
@@ -1530,7 +1530,7 @@ Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
Subtag: adb
|
||||
Description: Adabe
|
||||
Description: Atauran
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -2707,6 +2707,7 @@ Type: language
|
||||
Subtag: aoh
|
||||
Description: Arma
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: aoi
|
||||
@@ -3770,6 +3771,7 @@ Type: language
|
||||
Subtag: ayy
|
||||
Description: Tayabas Ayta
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ayz
|
||||
@@ -4085,6 +4087,7 @@ Type: language
|
||||
Subtag: bbz
|
||||
Description: Babalia Creole Arabic
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Macrolanguage: ar
|
||||
%%
|
||||
Type: language
|
||||
@@ -5755,6 +5758,7 @@ Type: language
|
||||
Subtag: bpb
|
||||
Description: Barbacoas
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: bpd
|
||||
@@ -6011,7 +6015,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: brf
|
||||
Description: Bera
|
||||
Description: Bira
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -7374,6 +7378,7 @@ Type: language
|
||||
Subtag: cca
|
||||
Description: Cauca
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ccc
|
||||
@@ -7480,6 +7485,7 @@ Type: language
|
||||
Subtag: cdg
|
||||
Description: Chamari
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: cdh
|
||||
@@ -7875,6 +7881,11 @@ Description: Cibak
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ckm
|
||||
Description: Chakavian
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ckn
|
||||
Description: Kaang Chin
|
||||
Added: 2013-09-10
|
||||
@@ -8121,6 +8132,13 @@ Description: Con
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: cnp
|
||||
Description: Northern Ping Chinese
|
||||
Description: Northern Pinghua
|
||||
Added: 2020-03-28
|
||||
Macrolanguage: zh
|
||||
%%
|
||||
Type: language
|
||||
Subtag: cnr
|
||||
Description: Montenegrin
|
||||
Added: 2018-01-23
|
||||
@@ -8564,6 +8582,13 @@ Description: Sochiapan Chinantec
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: csp
|
||||
Description: Southern Ping Chinese
|
||||
Description: Southern Pinghua
|
||||
Added: 2020-03-28
|
||||
Macrolanguage: zh
|
||||
%%
|
||||
Type: language
|
||||
Subtag: csq
|
||||
Description: Croatia Sign Language
|
||||
Added: 2009-07-29
|
||||
@@ -9318,6 +9343,7 @@ Macrolanguage: doi
|
||||
Type: language
|
||||
Subtag: dgr
|
||||
Description: Dogrib
|
||||
Description: Tłı̨chǫ
|
||||
Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
@@ -9334,6 +9360,7 @@ Type: language
|
||||
Subtag: dgu
|
||||
Description: Degaru
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dgw
|
||||
@@ -9720,6 +9747,11 @@ Description: Dugwor
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dmf
|
||||
Description: Medefaidrin
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dmg
|
||||
Description: Upper Kinabatangan
|
||||
Added: 2009-07-29
|
||||
@@ -10041,6 +10073,8 @@ Type: language
|
||||
Subtag: drr
|
||||
Description: Dororo
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: kzk
|
||||
%%
|
||||
Type: language
|
||||
Subtag: drs
|
||||
@@ -10330,6 +10364,11 @@ Description: Diri
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dwk
|
||||
Description: Dawik Kui
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dwl
|
||||
Description: Walo Kumbe Dogon
|
||||
Added: 2009-07-29
|
||||
@@ -10455,6 +10494,11 @@ Description: Karenggapa
|
||||
Added: 2013-09-10
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ebc
|
||||
Description: Beginci
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ebg
|
||||
Description: Ebughu
|
||||
Added: 2009-07-29
|
||||
@@ -10576,6 +10620,7 @@ Type: language
|
||||
Subtag: ekc
|
||||
Description: Eastern Karnic
|
||||
Added: 2013-09-10
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: eke
|
||||
@@ -11215,6 +11260,11 @@ Description: Fyer
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: fif
|
||||
Description: Faifi
|
||||
Added: 2020-06-08
|
||||
%%
|
||||
Type: language
|
||||
Subtag: fil
|
||||
Description: Filipino
|
||||
Description: Pilipino
|
||||
@@ -11881,6 +11931,7 @@ Added: 2009-07-29
|
||||
Type: language
|
||||
Subtag: gdh
|
||||
Description: Gadjerawang
|
||||
Description: Gajirrabeng
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -11970,6 +12021,11 @@ Description: Gade
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gef
|
||||
Description: Gerai
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: geg
|
||||
Description: Gengle
|
||||
Added: 2009-07-29
|
||||
@@ -12381,6 +12437,8 @@ Type: language
|
||||
Subtag: gli
|
||||
Description: Guliguli
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: kzk
|
||||
%%
|
||||
Type: language
|
||||
Subtag: glj
|
||||
@@ -12476,6 +12534,12 @@ Added: 2009-07-29
|
||||
Scope: collection
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gmr
|
||||
Description: Mirning
|
||||
Description: Mirniny
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gmu
|
||||
Description: Gumalu
|
||||
Added: 2009-07-29
|
||||
@@ -13155,6 +13219,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gwc
|
||||
Description: Gawri
|
||||
Description: Kalami
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -13859,6 +13924,11 @@ Description: Chhattisgarhi
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: hng
|
||||
Description: Hungu
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: hnh
|
||||
Description: ǁAni
|
||||
Added: 2009-07-29
|
||||
@@ -14140,6 +14210,7 @@ Added: 2009-07-29
|
||||
Type: language
|
||||
Subtag: huc
|
||||
Description: ǂHua
|
||||
Description: ǂʼAmkhoe
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -15910,6 +15981,7 @@ Added: 2009-07-29
|
||||
Type: language
|
||||
Subtag: kaa
|
||||
Description: Kara-Kalpak
|
||||
Description: Karakalpak
|
||||
Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
@@ -17067,8 +17139,9 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: kjf
|
||||
Description: Khalaj
|
||||
Description: Khalaj [Indo-Iranian]
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: kjg
|
||||
@@ -17248,7 +17321,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: kkq
|
||||
Description: Kaiku
|
||||
Description: Kaeku
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -17344,7 +17417,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: klj
|
||||
Description: Turkic Khalaj
|
||||
Description: Khalaj
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -18497,6 +18570,7 @@ Added: 2009-07-29
|
||||
Type: language
|
||||
Subtag: kui
|
||||
Description: Kuikúro-Kalapálo
|
||||
Description: Kalapalo
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -18908,6 +18982,8 @@ Type: language
|
||||
Subtag: kxl
|
||||
Description: Nepali Kurux
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: kru
|
||||
%%
|
||||
Type: language
|
||||
Subtag: kxm
|
||||
@@ -18953,6 +19029,8 @@ Type: language
|
||||
Subtag: kxu
|
||||
Description: Kui (India)
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Comments: see dwk, uki
|
||||
%%
|
||||
Type: language
|
||||
Subtag: kxv
|
||||
@@ -20337,6 +20415,7 @@ Type: language
|
||||
Subtag: lmz
|
||||
Description: Lumbee
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: lna
|
||||
@@ -22788,6 +22867,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: moe
|
||||
Description: Innu
|
||||
Description: Montagnais
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -26199,6 +26279,11 @@ Description: Sangtam Naga
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: nsb
|
||||
Description: Lower Nossob
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: nsc
|
||||
Description: Nshi
|
||||
Added: 2009-07-29
|
||||
@@ -26667,6 +26752,8 @@ Type: language
|
||||
Subtag: nxu
|
||||
Description: Narau
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: bpp
|
||||
%%
|
||||
Type: language
|
||||
Subtag: nxx
|
||||
@@ -28166,7 +28253,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: pfe
|
||||
Description: Peere
|
||||
Description: Pere
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
@@ -28572,6 +28659,7 @@ Type: language
|
||||
Subtag: plp
|
||||
Description: Palpa
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: plq
|
||||
@@ -31132,6 +31220,8 @@ Type: language
|
||||
Subtag: sdm
|
||||
Description: Semandang
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Comments: see ebc, gef, sdq
|
||||
%%
|
||||
Type: language
|
||||
Subtag: sdn
|
||||
@@ -31150,6 +31240,11 @@ Description: Sherdukpen
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: sdq
|
||||
Description: Semandang
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: sdr
|
||||
Description: Oraon Sadri
|
||||
Added: 2009-07-29
|
||||
@@ -33502,6 +33597,7 @@ Type: language
|
||||
Subtag: tbb
|
||||
Description: Tapeba
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: tbc
|
||||
@@ -34219,6 +34315,8 @@ Type: language
|
||||
Subtag: thw
|
||||
Description: Thudam
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-06-08
|
||||
Preferred-Value: ola
|
||||
%%
|
||||
Type: language
|
||||
Subtag: thx
|
||||
@@ -36240,6 +36338,11 @@ Description: Ukhwejo
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: uki
|
||||
Description: Kui (India)
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ukk
|
||||
Description: Muak Sa-aak
|
||||
Added: 2017-02-23
|
||||
@@ -36271,6 +36374,11 @@ Description: Ukue
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ukv
|
||||
Description: Kuku
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ukw
|
||||
Description: Ukwuani-Aboh-Ndoni
|
||||
Added: 2009-07-29
|
||||
@@ -37760,6 +37868,11 @@ Description: Kunbarlang
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: wlh
|
||||
Description: Welaun
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: wli
|
||||
Description: Waioli
|
||||
Added: 2009-07-29
|
||||
@@ -39232,6 +39345,11 @@ Description: Nganakarti
|
||||
Added: 2013-09-10
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xnm
|
||||
Description: Ngumbarl
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xnn
|
||||
Description: Northern Kankanay
|
||||
Added: 2009-07-29
|
||||
@@ -39334,22 +39452,45 @@ Description: Pirriya
|
||||
Added: 2013-09-10
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpb
|
||||
Description: Northeastern Tasmanian
|
||||
Description: Pyemmairrener
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpc
|
||||
Description: Pecheneg
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpd
|
||||
Description: Oyster Bay Tasmanian
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpe
|
||||
Description: Liberia Kpelle
|
||||
Added: 2009-07-29
|
||||
Macrolanguage: kpe
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpf
|
||||
Description: Southeast Tasmanian
|
||||
Description: Nuenonne
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpg
|
||||
Description: Phrygian
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xph
|
||||
Description: North Midlands Tasmanian
|
||||
Description: Tyerrenoterpanner
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpi
|
||||
Description: Pictish
|
||||
Added: 2009-07-29
|
||||
@@ -39365,6 +39506,11 @@ Description: Kulina Pano
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpl
|
||||
Description: Port Sorell Tasmanian
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpm
|
||||
Description: Pumpokol
|
||||
Added: 2009-07-29
|
||||
@@ -39410,11 +39556,34 @@ Description: Punic
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpv
|
||||
Description: Northern Tasmanian
|
||||
Description: Tommeginne
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpw
|
||||
Description: Northwestern Tasmanian
|
||||
Description: Peerapper
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpx
|
||||
Description: Southwestern Tasmanian
|
||||
Description: Toogee
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpy
|
||||
Description: Puyo
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xpz
|
||||
Description: Bruny Island Tasmanian
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xqa
|
||||
Description: Karakhanid
|
||||
Added: 2009-07-29
|
||||
@@ -39468,6 +39637,8 @@ Type: language
|
||||
Subtag: xrq
|
||||
Description: Karranga
|
||||
Added: 2013-09-10
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: dmw
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xrr
|
||||
@@ -39700,6 +39871,8 @@ Type: language
|
||||
Subtag: xtz
|
||||
Description: Tasmanian
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Comments: see xpb, xpd, xpf, xph, xpl, xpv, xpw, xpx, xpz
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xua
|
||||
@@ -39729,6 +39902,7 @@ Added: 2009-07-29
|
||||
Type: language
|
||||
Subtag: xul
|
||||
Description: Ngunawal
|
||||
Description: Nunukul
|
||||
Added: 2013-09-10
|
||||
%%
|
||||
Type: language
|
||||
@@ -41321,6 +41495,11 @@ Description: Zari
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: zba
|
||||
Description: Balaibalan
|
||||
Added: 2020-03-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: zbc
|
||||
Description: Central Berawan
|
||||
Added: 2009-07-29
|
||||
@@ -41486,6 +41665,8 @@ Type: language
|
||||
Subtag: zir
|
||||
Description: Ziriya
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: scv
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ziw
|
||||
@@ -42463,6 +42644,7 @@ Type: extlang
|
||||
Subtag: bbz
|
||||
Description: Babalia Creole Arabic
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2020-03-28
|
||||
Preferred-Value: bbz
|
||||
Prefix: ar
|
||||
Macrolanguage: ar
|
||||
@@ -42580,6 +42762,15 @@ Prefix: zh
|
||||
Macrolanguage: zh
|
||||
%%
|
||||
Type: extlang
|
||||
Subtag: cnp
|
||||
Description: Northern Ping Chinese
|
||||
Description: Northern Pinghua
|
||||
Added: 2020-03-28
|
||||
Preferred-Value: cnp
|
||||
Prefix: zh
|
||||
Macrolanguage: zh
|
||||
%%
|
||||
Type: extlang
|
||||
Subtag: coa
|
||||
Description: Cocos Islands Malay
|
||||
Added: 2009-07-29
|
||||
@@ -42647,6 +42838,15 @@ Preferred-Value: csn
|
||||
Prefix: sgn
|
||||
%%
|
||||
Type: extlang
|
||||
Subtag: csp
|
||||
Description: Southern Ping Chinese
|
||||
Description: Southern Pinghua
|
||||
Added: 2020-03-28
|
||||
Preferred-Value: csp
|
||||
Prefix: zh
|
||||
Macrolanguage: zh
|
||||
%%
|
||||
Type: extlang
|
||||
Subtag: csq
|
||||
Description: Croatia Sign Language
|
||||
Added: 2009-07-29
|
||||
@@ -44928,6 +45128,11 @@ Description: Tirhuta
|
||||
Added: 2011-08-16
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Toto
|
||||
Description: Toto
|
||||
Added: 2020-05-12
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Ugar
|
||||
Description: Ugaritic
|
||||
Added: 2005-10-16
|
||||
@@ -46630,6 +46835,12 @@ Comments: Denotes conventions established by the Academia Brasileira de
|
||||
Letras in 1943 and generally used in Brazil until 2009
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: akuapem
|
||||
Description: Akuapem Twi
|
||||
Added: 2017-06-05
|
||||
Prefix: tw
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: alalc97
|
||||
Description: ALA-LC Romanization, 1997 edition
|
||||
Added: 2009-12-09
|
||||
@@ -46648,12 +46859,6 @@ Comments: Aluku dialect of the "Busi Nenge Tongo" English-based Creole
|
||||
continuum in Eastern Suriname and Western French Guiana
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: akuapem
|
||||
Description: Akuapem Twi
|
||||
Added: 2017-06-05
|
||||
Prefix: tw
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: ao1990
|
||||
Description: Portuguese Language Orthographic Agreement of 1990 (Acordo
|
||||
Ortográfico da Língua Portuguesa de 1990)
|
||||
@@ -47129,6 +47334,16 @@ Comments: Pamaka dialect of the "Busi Nenge Tongo" English-based
|
||||
Creole continuum in Eastern Suriname and Western French Guiana
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: peano
|
||||
Description: Latino Sine Flexione
|
||||
Description: Interlingua de API
|
||||
Description: Interlingua de Peano
|
||||
Prefix: la
|
||||
Comments: Peano’s Interlingua, created in 1903 by Giuseppe Peano as an
|
||||
international auxiliary language
|
||||
Added: 2020-03-12
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: petr1708
|
||||
Description: Petrine orthography
|
||||
Added: 2010-10-10
|
||||
@@ -47266,6 +47481,23 @@ Comments: The subtag represents Branislau Taraskievic's Belarusian
|
||||
Miensk 2005).
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: tongyong
|
||||
Description: Tongyong Pinyin romanization
|
||||
Added: 2020-06-08
|
||||
Prefix: zh-Latn
|
||||
Comments: Former official transcription standard for Mandarin Chinese in
|
||||
Taiwan.
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: tunumiit
|
||||
Description: Tunumiisiut
|
||||
Description: East Greenlandic
|
||||
Description: Østgrønlandsk
|
||||
Added: 2020-07-16
|
||||
Prefix: kl
|
||||
Comments: Also known as Tunumiit oraasiat
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: uccor
|
||||
Description: Unified Cornish orthography of Revived Cornish
|
||||
Added: 2008-10-14
|
||||
@@ -47318,6 +47550,14 @@ Comments: Vallader is one of the five traditional written standards or
|
||||
"idioms" of the Romansh language.
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: vecdruka
|
||||
Description: Latvian orthography used before 1920s ("vecā druka")
|
||||
Added: 2020-09-26
|
||||
Prefix: lv
|
||||
Comments: The subtag represents the old orthography of the Latvian
|
||||
language used during c. 1600s–1920s.
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: vivaraup
|
||||
Description: Vivaro-Alpine
|
||||
Added: 2018-04-22
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2020d
|
||||
tzdata2021a
|
||||
|
||||
@@ -409,36 +409,87 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
|
||||
# Ghana
|
||||
|
||||
# From Paul Eggert (2018-01-30):
|
||||
# Whitman says DST was observed from 1931 to "the present";
|
||||
# Shanks & Pottenger say 1936 to 1942 with 20 minutes of DST,
|
||||
# with transitions on 09-01 and 12-31 at 00:00.
|
||||
# Page 33 of Parish GCB, Colonial Reports - Annual. No. 1066. Gold
|
||||
# Coast. Report for 1919. (March 1921), OCLC 784024077
|
||||
# http://libsysdigi.library.illinois.edu/ilharvest/africana/books2011-05/5530214/5530214_1919/5530214_1919_opt.pdf
|
||||
# lists the Determination of the Time Ordinance, 1919, No. 18,
|
||||
# "to advance the time observed locally by the space of twenty minutes
|
||||
# during the last four months of each year; the object in view being
|
||||
# to extend during those months the period of daylight-time available
|
||||
# for evening recreation after office hours."
|
||||
# Vanessa Ogle, The Global Transformation of Time, 1870-1950 (2015), p 33,
|
||||
# writes "In 1919, the Gold Coast (Ghana as of 1957) made Greenwich
|
||||
# time its legal time and simultaneously legalized a summer time of
|
||||
# UTC - 00:20 minutes from March to October."; a footnote lists
|
||||
# the ordinance as being dated 1919-11-24.
|
||||
# The Crown Colonist, Volume 12 (1942), p 176, says "the Government
|
||||
# intend advancing Gold Coast time half an hour ahead of G.M.T.
|
||||
# The actual date of the alteration has not yet been announced."
|
||||
# These sources are incomplete and contradictory. Possibly what is
|
||||
# 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.
|
||||
# From P Chan (2020-11-20):
|
||||
# Interpretation Amendment Ordinance, 1915 (No.24 of 1915) [1915-11-02]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1915, p 69-71
|
||||
# https://books.google.com/books?id=ErA-AQAAIAAJ&pg=PA70
|
||||
# This Ordinance added "'Time' shall mean Greenwich Mean Time" to the
|
||||
# Interpretation Ordinance, 1876.
|
||||
#
|
||||
# Determination of the Time Ordinance, 1919 (No. 18 of 1919) [1919-11-24]
|
||||
# Ordinances of the Gold Coast, Ashanti, Northern Territories 1919, p 75-76
|
||||
# https://books.google.com/books?id=MbA-AQAAIAAJ&pg=PA75
|
||||
# This Ordinance removed the previous definition of time and introduced DST.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 214)
|
||||
# The Laws of the Gold Coast (including Togoland Under British Mandate)
|
||||
# Vol. II (1937), p 2328
|
||||
# https://books.google.com/books?id=Z7M-AQAAIAAJ&pg=PA2328
|
||||
# Revised edition of the 1919 Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1940 (No. 9 of 1940) [1940-04-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1940, p 22
|
||||
# https://books.google.com/books?id=1ao-AQAAIAAJ&pg=PA22
|
||||
# This Ordinance changed the forward transition from September to May.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment) Regulations, 1942
|
||||
# (Regulations No. 6 of 1942) [1942-01-31, commenced on 1942-02-08]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 48
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA48
|
||||
# These regulations advanced the [standard] time by thirty minutes.
|
||||
#
|
||||
# Defence (Time Determination Ordinance Amendment (No.2)) Regulations,
|
||||
# 1942 (Regulations No. 28 of 1942) [1942-04-25]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1942, p 87
|
||||
# https://books.google.com/books?id=Das-AQAAIAAJ&pg=PA87
|
||||
# These regulations abolished DST and changed the time to GMT+0:30.
|
||||
#
|
||||
# Defence (Revocation) (No.4) Regulations, 1945 (Regulations No. 45 of
|
||||
# 1945) [1945-10-24, commenced on 1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 256
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA256
|
||||
# These regulations revoked the previous two sets of Regulations.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1945 (No. 18 of 1945) [1946-01-06]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1945, p 69
|
||||
# https://books.google.com/books?id=9as-AQAAIAAJ&pg=PA69
|
||||
# This Ordinance abolished DST.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1950 (No. 26 of 1950) [1950-07-22]
|
||||
# Annual Volume of the Laws of the Gold Coast:
|
||||
# Containing All Legislation Enacted During Year 1950, p 35
|
||||
# https://books.google.com/books?id=e60-AQAAIAAJ&pg=PA35
|
||||
# This Ordinance restored DST but with thirty minutes offset.
|
||||
#
|
||||
# Time Determination Ordinance (Cap. 264)
|
||||
# The Laws of the Gold Coast, Vol. V (1954), p 380
|
||||
# https://books.google.com/books?id=Mqc-AQAAIAAJ&pg=PA380
|
||||
# Revised edition of the Time Determination Ordinance.
|
||||
#
|
||||
# Time Determination (Amendment) Ordinance, 1956 (No. 21 of 1956) [1956-08-29]
|
||||
# Annual Volume of the Ordinances of the Gold Coast Enacted During the
|
||||
# Year 1956, p 83
|
||||
# https://books.google.com/books?id=VLE-AQAAIAAJ&pg=PA83
|
||||
# This Ordinance abolished DST.
|
||||
|
||||
# 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 -
|
||||
Rule Ghana 1919 only - Nov 24 0:00 0:20 +0020
|
||||
Rule Ghana 1920 1942 - Jan 1 2:00 0 GMT
|
||||
Rule Ghana 1920 1939 - Sep 1 2:00 0:20 +0020
|
||||
Rule Ghana 1940 1941 - May 1 2:00 0:20 +0020
|
||||
Rule Ghana 1950 1955 - Sep 1 2:00 0:30 +0030
|
||||
Rule Ghana 1951 1956 - Jan 1 2:00 0 GMT
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Accra -0:00:52 - LMT 1918
|
||||
0:00 Ghana GMT/+0020
|
||||
Zone Africa/Accra -0:00:52 - LMT 1915 Nov 2
|
||||
0:00 Ghana %s 1942 Feb 8
|
||||
0:30 - +0030 1946 Jan 6
|
||||
0:00 Ghana %s
|
||||
|
||||
# Guinea
|
||||
# See Africa/Abidjan.
|
||||
@@ -456,11 +507,54 @@ Zone Africa/Bissau -1:02:20 - LMT 1912 Jan 1 1:00u
|
||||
0:00 - GMT
|
||||
|
||||
# Kenya
|
||||
|
||||
# From P Chan (2020-10-24):
|
||||
#
|
||||
# The standard time of GMT+2:30 was adopted in the East Africa Protectorate....
|
||||
# [The Official Gazette, 1908-05-01, p 274]
|
||||
# https://books.google.com/books?id=e-cAC-sjPSEC&pg=PA274
|
||||
#
|
||||
# At midnight on 30 June 1928 the clocks throughout Kenya was put forward
|
||||
# half an hour by the Alteration of Time Ordinance, 1928.
|
||||
# https://gazettes.africa/archive/ke/1928/ke-government-gazette-dated-1928-05-11-no-28.pdf
|
||||
# [Ordinance No. 11 of 1928, The Offical Gazette, 1928-06-26, p 813]
|
||||
# https://books.google.com/books?id=2S0S6os32ZUC&pg=PA813
|
||||
#
|
||||
# The 1928 ordinance was repealed by the Alteration of Time (repeal) Ordinance,
|
||||
# 1929 and the time was restored to GMT+2:30 at midnight on 4 January 1930.
|
||||
# [Ordinance No. 97 of 1929, The Official Gazette, 1929-12-31, p 2701]
|
||||
# https://books.google.com/books?id=_g18jIZQlwwC&pg=PA2701
|
||||
#
|
||||
# The Alteration of Time Ordinance, 1936 changed the time to GMT+2:45
|
||||
# and repealed the previous ordinance at midnight on 31 December 1936.
|
||||
# [The Official Gazette, 1936-07-21, p 705]
|
||||
# https://books.google.com/books?id=K7j41z0aC5wC&pg=PA705
|
||||
#
|
||||
# The Defence (Amendment of Laws No. 120) Regulations changed the time
|
||||
# to GMT+3 at midnight on 31 July 1942.
|
||||
# [Kenya Official Gazette Supplement No. 32, 1942-07-21, p 331]
|
||||
# https://books.google.com/books?hl=zh-TW&id=c_E-AQAAIAAJ&pg=PA331
|
||||
# The provision of the 1936 ordinance was not repealed and was later
|
||||
# incorporated in the Interpretation and General Clauses Ordinance in 1948.
|
||||
# Although it was overridden by the 1942 regulations.
|
||||
# [The Laws of Kenya in force on 1948-09-21, Title I, Chapter 1, 31]
|
||||
# https://dds.crl.edu/item/217517 (p.101)
|
||||
# In 1950 the Interpretation and General Clauses Ordinance was amended to adopt
|
||||
# GMT+3 permanently as the 1942 regulations were due to expire on 10 December.
|
||||
# https://books.google.com/books?id=jvR8mUDAwR0C&pg=PA787
|
||||
# [Ordinance No. 44 of 1950, Kenya Ordinances 1950, Vol. XXIX, p 294]
|
||||
# https://books.google.com/books?id=-_dQAQAAMAAJ&pg=PA294
|
||||
|
||||
# From Paul Eggert (2020-10-24):
|
||||
# The 1908-05-01 announcement does not give an effective date,
|
||||
# so just say "1908 May".
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
|
||||
3:00 - EAT 1930
|
||||
2:30 - +0230 1940
|
||||
2:45 - +0245 1960
|
||||
Zone Africa/Nairobi 2:27:16 - LMT 1908 May
|
||||
2:30 - +0230 1928 Jun 30 24:00
|
||||
3:00 - EAT 1930 Jan 4 24:00
|
||||
2:30 - +0230 1936 Dec 31 24:00
|
||||
2:45 - +0245 1942 Jul 31 24:00
|
||||
3:00 - EAT
|
||||
Link Africa/Nairobi Africa/Addis_Ababa # Ethiopia
|
||||
Link Africa/Nairobi Africa/Asmara # Eritrea
|
||||
@@ -1247,8 +1341,69 @@ Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Nigeria
|
||||
|
||||
# From P Chan (2020-12-03):
|
||||
# GMT was adopted as the standard time of Lagos on 1905-07-01.
|
||||
# Lagos Weekly Record, 1905-06-24, p 3
|
||||
# http://ddsnext.crl.edu/titles/31558#?c=0&m=668&s=0&cv=2&r=0&xywh=1446%2C5221%2C1931%2C1235
|
||||
# says "It is officially notified that on and after the 1st of July 1905
|
||||
# Greenwich Mean Solar Time will be adopted thought the Colony and
|
||||
# Protectorate, and that it will be necessary to put all clocks 13 minutes and
|
||||
# 35 seconds back, recording local mean time."
|
||||
#
|
||||
# It seemed that Lagos returned to LMT on 1908-07-01.
|
||||
# [The Lagos Standard], 1908-07-01, p 5
|
||||
# http://ddsnext.crl.edu/titles/31556#?c=0&m=78&s=0&cv=4&r=0&xywh=-92%2C3590%2C3944%2C2523
|
||||
# says "Scarcely have the people become accustomed to this new time, when
|
||||
# another official notice has now appeared announcing that from and after the
|
||||
# 1st July next, return will be made to local mean time."
|
||||
#
|
||||
# From P Chan (2020-11-27):
|
||||
# On 1914-01-01, standard time of GMT+0:30 was adopted for the unified Nigeria.
|
||||
# Colonial Reports - Annual. No. 878. Nigeria. Report for 1914. (April 1916),
|
||||
# p 27
|
||||
# https://libsysdigi.library.illinois.edu/ilharvest/Africana/Books2011-05/3064634/3064634_1914/3064634_1914_opt.pdf#page=27
|
||||
# "On January 1st [1914], a universal standard time for Nigeria was adopted,
|
||||
# viz., half an hour fast on Greenwich mean time, corresponding to the meridian
|
||||
# 7 [degrees] 30' E. long."
|
||||
# Lloyd's Register of Shipping (1915) says "Hitherto the time observed in Lagos
|
||||
# was the local mean time. On 1st January, 1914, standard time for the whole of
|
||||
# Nigeria was introduced ... Lagos time has been advanced about 16 minutes
|
||||
# accordingly."
|
||||
#
|
||||
# In 1919, standard time was changed to GMT+1.
|
||||
# Interpretation Ordinance (Cap 2)
|
||||
# The Laws of Nigeria, Containing the Ordinances of Nigeria, in Force on the
|
||||
# 1st Day of January, 1923, Vol.I [p 16]
|
||||
# https://books.google.com/books?id=BOMrAQAAMAAJ&pg=PA16
|
||||
# "The expression 'Standard time' means standard time as used in Nigeria:
|
||||
# namely, 60 minutes in advance of Greenwich mean time. (As amended by 18 of
|
||||
# 1919, s. 2.)"
|
||||
# From Tim Parenti (2020-12-10):
|
||||
# The Lagos Weekly Record, 1919-09-20, p 3 details discussion on the first
|
||||
# reading of this Bill by the Legislative Council of the Colony of Nigeria on
|
||||
# Thursday 1919-08-28:
|
||||
# http://ddsnext.crl.edu/titles/31558?terms&item_id=303484#?m=1118&c=1&s=0&cv=2&r=0&xywh=1261%2C3408%2C2994%2C1915
|
||||
# "The proposal is that the Globe should be divided into twelve zones East and
|
||||
# West of Greenwich, of one hour each, Nigeria falling into the zone with a
|
||||
# standard of one hour fast on Greenwich Mean Time. Nigeria standard time is
|
||||
# now 30 minutes in advance of Greenwich Mean Time ... according to the new
|
||||
# proposal, standard time will be advanced another 30 minutes". It was further
|
||||
# proposed that the firing of the time guns likewise be adjusted by 30 minutes
|
||||
# to compensate.
|
||||
# From Tim Parenti (2020-12-10), per P Chan (2020-12-11):
|
||||
# The text of Ordinance 18 of 1919, published in Nigeria Gazette, Vol 6, No 52,
|
||||
# shows that the change was assented to the following day and took effect "on
|
||||
# the 1st day of September, 1919."
|
||||
# Nigeria Gazette and Supplements 1919 Jan-Dec, Reference: 73266B-40,
|
||||
# img 245-246
|
||||
# https://microform.digital/boa/collections/77/volumes/539/nigeria-lagos-1887-1919
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Lagos 0:13:36 - LMT 1919 Sep
|
||||
Zone Africa/Lagos 0:13:35 - LMT 1905 Jul 1
|
||||
0:00 - GMT 1908 Jul 1
|
||||
0:13:35 - LMT 1914 Jan 1
|
||||
0:30 - +0030 1919 Sep 1
|
||||
1:00 - WAT
|
||||
Link Africa/Lagos Africa/Bangui # Central African Republic
|
||||
Link Africa/Lagos Africa/Brazzaville # Rep. of the Congo
|
||||
@@ -1321,8 +1476,21 @@ Zone Africa/Sao_Tome 0:26:56 - LMT 1884
|
||||
# See Africa/Abidjan.
|
||||
|
||||
# Seychelles
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# Standard Time was adopted on 1907-01-01.
|
||||
#
|
||||
# Standard Time Ordinance (Chapter 237)
|
||||
# The Laws of Seychelles in Force on the 31st December, 1971, Vol. 6, p 571
|
||||
# https://books.google.com/books?id=efE-AQAAIAAJ&pg=PA571
|
||||
#
|
||||
# From Tim Parenti (2020-12-05):
|
||||
# A footnote on https://books.google.com/books?id=DYdDAQAAMAAJ&pg=PA1689
|
||||
# confirms that Ordinance No. 9 of 1906 "was brought into force on the 1st
|
||||
# January, 1907."
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
Zone Indian/Mahe 3:41:48 - LMT 1907 Jan 1 # Victoria
|
||||
4:00 - +04
|
||||
# From Paul Eggert (2001-05-30):
|
||||
# Aldabra, Farquhar, and Desroches, originally dependencies of the
|
||||
@@ -1382,11 +1550,17 @@ Zone Africa/Khartoum 2:10:08 - LMT 1931
|
||||
3:00 - EAT 2017 Nov 1
|
||||
2:00 - CAT
|
||||
|
||||
# From Steffen Thorsen (2021-01-18):
|
||||
# "South Sudan will change its time zone by setting the clock back 1
|
||||
# hour on February 1, 2021...."
|
||||
# from https://eyeradio.org/south-sudan-adopts-new-time-zone-makuei/
|
||||
|
||||
# South Sudan
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
3:00 - EAT 2021 Feb 1 00:00
|
||||
2:00 - CAT
|
||||
|
||||
# Tanzania
|
||||
# See Africa/Nairobi.
|
||||
|
||||
@@ -1746,40 +1746,180 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
# high on my favorite-country list (and not only because my wife's
|
||||
# family is from India).
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
# From P Chan (2020-10-27), with corrections:
|
||||
#
|
||||
# 1940-1946 Supplement No. 2 to the Palestine Gazette
|
||||
# # issue page Order No. dated start end note
|
||||
# 1 1010 729 67 of 1940 1940-05-22 1940-05-31* 1940-09-30* revoked by #2
|
||||
# 2 1013 758 73 of 1940 1940-05-31 1940-05-31 1940-09-30
|
||||
# 3 1055 1574 196 of 1940 1940-11-06 1940-11-16 1940-12-31
|
||||
# 4 1066 1811 208 of 1940 1940-12-17 1940-12-31 1941-12-31
|
||||
# 5 1156 1967 116 of 1941 1941-12-16 1941-12-31 1942-12-31* amended by #6
|
||||
# 6 1228 1608 86 of 1942 1942-10-14 1941-12-31 1942-10-31
|
||||
# 7 1256 279 21 of 1943 1943-03-18 1943-03-31 1943-10-31
|
||||
# 8 1323 249 19 of 1944 1944-03-13 1944-03-31 1944-10-31
|
||||
# 9 1402 328 20 of 1945 1945-04-05 1945-04-15 1945-10-31
|
||||
#10 1487 596 14 of 1946 1946-04-04 1946-04-15 1946-10-31
|
||||
#
|
||||
# 1948 Iton Rishmi (Official Gazette of the Provisional Government)
|
||||
# # issue page dated start end
|
||||
#11 2 7 1948-05-20 1948-05-22 1948-10-31*
|
||||
# ^This moved timezone to +04, replaced by #12 from 1948-08-31 24:00 GMT.
|
||||
#12 17 (Annex B) 84 1948-08-22 1948-08-31 1948-10-31
|
||||
#
|
||||
# 1949-2000 Kovetz HaTakanot (Collection of Regulations)
|
||||
# # issue page dated start end note
|
||||
#13 6 133 1949-03-23 1949-04-30 1949-10-31
|
||||
#14 80 755 1950-03-17 1950-04-15 1950-09-14
|
||||
#15 164 782 1951-03-22 1951-03-31 1951-09-29* amended by #16
|
||||
#16 206 1940 1951-09-23 ---------- 1951-10-22* amended by #17
|
||||
#17 212 78 1951-10-19 ---------- 1951-11-10
|
||||
#18 254 652 1952-03-03 1952-04-19 1952-09-27* amended by #19
|
||||
#19 300 11 1952-09-15 ---------- 1952-10-18
|
||||
#20 348 817 1953-03-03 1953-04-11 1953-09-12
|
||||
#21 420 385 1954-02-17 1954-06-12 1954-09-11
|
||||
#22 497 548 1955-01-14 1955-06-11 1955-09-10
|
||||
#23 591 608 1956-03-12 1956-06-02 1956-09-29
|
||||
#24 680 957 1957-02-08 1957-04-27 1957-09-21
|
||||
#25 3192 1418 1974-06-28 1974-07-06 1974-10-12
|
||||
#26 3322 1389 1975-04-03 1975-04-19 1975-08-30
|
||||
#27 4146 2089 1980-07-15 1980-08-02 1980-09-13
|
||||
#28 4604 1081 1984-02-22 1984-05-05* 1984-08-25* revoked by #29
|
||||
#29 4619 1312 1984-04-06 1984-05-05 1984-08-25
|
||||
#30 4744 475 1984-12-23 1985-04-13 1985-09-14* amended by #31
|
||||
#31 4851 1848 1985-08-18 ---------- 1985-08-31
|
||||
#32 4932 899 1986-04-22 1986-05-17 1986-09-06
|
||||
#33 5013 580 1987-02-15 1987-04-18* 1987-08-22* revoked by #34
|
||||
#34 5021 744 1987-03-30 1987-04-14 1987-09-12
|
||||
#35 5096 659 1988-02-14 1988-04-09 1988-09-03
|
||||
#36 5167 514 1989-02-03 1989-04-29 1989-09-02
|
||||
#37 5248 375 1990-01-23 1990-03-24 1990-08-25
|
||||
#38 5335 612 1991-02-10 1991-03-09* 1991-08-31 amended by #39
|
||||
# 1992-03-28 1992-09-05
|
||||
#39 5339 709 1991-03-04 1991-03-23 ----------
|
||||
#40 5506 503 1993-02-18 1993-04-02 1993-09-05
|
||||
# 1994-04-01 1994-08-28
|
||||
# 1995-03-31 1995-09-03
|
||||
#41 5731 438 1996-01-01 1996-03-14 1996-09-15
|
||||
# 1997-03-13* 1997-09-18* overridden by 1997 Temp Prov
|
||||
# 1998-03-19* 1998-09-17* revoked by #42
|
||||
#42 5853 1243 1997-09-18 1998-03-19 1998-09-05
|
||||
#43 5937 77 1998-10-18 1999-04-02 1999-09-03
|
||||
# 2000-04-14* 2000-09-15* revoked by #44
|
||||
# 2001-04-13* 2001-09-14* revoked by #44
|
||||
#44 6024 39 2000-03-14 2000-04-14 2000-10-22* overridden by 2000 Temp Prov
|
||||
# 2001-04-06* 2001-10-10* overridden by 2000 Temp Prov
|
||||
# 2002-03-29* 2002-10-29* overridden by 2000 Temp Prov
|
||||
#
|
||||
# These are laws enacted by the Knesset since the Minister could only alter the
|
||||
# transition dates at least six months in advanced under the 1992 Law.
|
||||
# dated start end
|
||||
# 1997 Temporary Provisions 1997-03-06 1997-03-20 1997-09-13
|
||||
# 2000 Temporary Provisions 2000-07-28 ---------- 2000-10-06
|
||||
# 2001-04-09 2001-09-24
|
||||
# 2002-03-29 2002-10-07
|
||||
# 2003-03-28 2003-10-03
|
||||
# 2004-04-07 2004-09-22
|
||||
# Note:
|
||||
# Transition times in 1940-1957 (#1-#24) were midnight GMT,
|
||||
# in 1974-1998 (#25-#42 and the 1997 Temporary Provisions) were midnight,
|
||||
# in 1999-April 2000 (#43,#44) were 02:00,
|
||||
# in the 2000 Temporary Provisions were 01:00.
|
||||
#
|
||||
# -----------------------------------------------------------------------------
|
||||
# Links:
|
||||
# 1 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=687
|
||||
# 2 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=716
|
||||
# 3 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=721
|
||||
# 4 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=958
|
||||
# 5 https://findit.library.yale.edu/images_layout/view?parentoid=15537502&increment=558
|
||||
# 6 https://findit.library.yale.edu/images_layout/view?parentoid=15537511&increment=105
|
||||
# 7 https://findit.library.yale.edu/images_layout/view?parentoid=15537516&increment=278
|
||||
# 8 https://findit.library.yale.edu/images_layout/view?parentoid=15537522&increment=248
|
||||
# 9 https://findit.library.yale.edu/images_layout/view?parentoid=15537530&increment=329
|
||||
#10 https://findit.library.yale.edu/images_layout/view?parentoid=15537537&increment=601
|
||||
#11 https://www.nevo.co.il/law_word/law12/er-002.pdf#page=3
|
||||
#12 https://www.nevo.co.il/law_word/law12/er-017-t2.pdf#page=4
|
||||
#13 https://www.nevo.co.il/law_word/law06/tak-0006.pdf#page=3
|
||||
#14 https://www.nevo.co.il/law_word/law06/tak-0080.pdf#page=7
|
||||
#15 https://www.nevo.co.il/law_word/law06/tak-0164.pdf#page=10
|
||||
#16 https://www.nevo.co.il/law_word/law06/tak-0206.pdf#page=4
|
||||
#17 https://www.nevo.co.il/law_word/law06/tak-0212.pdf#page=2
|
||||
#18 https://www.nevo.co.il/law_word/law06/tak-0254.pdf#page=4
|
||||
#19 https://www.nevo.co.il/law_word/law06/tak-0300.pdf#page=5
|
||||
#20 https://www.nevo.co.il/law_word/law06/tak-0348.pdf#page=3
|
||||
#21 https://www.nevo.co.il/law_word/law06/tak-0420.pdf#page=5
|
||||
#22 https://www.nevo.co.il/law_word/law06/tak-0497.pdf#page=10
|
||||
#23 https://www.nevo.co.il/law_word/law06/tak-0591.pdf#page=6
|
||||
#24 https://www.nevo.co.il/law_word/law06/tak-0680.pdf#page=3
|
||||
#25 https://www.nevo.co.il/law_word/law06/tak-3192.pdf#page=2
|
||||
#26 https://www.nevo.co.il/law_word/law06/tak-3322.pdf#page=5
|
||||
#27 https://www.nevo.co.il/law_word/law06/tak-4146.pdf#page=2
|
||||
#28 https://www.nevo.co.il/law_word/law06/tak-4604.pdf#page=7
|
||||
#29 https://www.nevo.co.il/law_word/law06/tak-4619.pdf#page=2
|
||||
#30 https://www.nevo.co.il/law_word/law06/tak-4744.pdf#page=11
|
||||
#31 https://www.nevo.co.il/law_word/law06/tak-4851.pdf#page=2
|
||||
#32 https://www.nevo.co.il/law_word/law06/tak-4932.pdf#page=19
|
||||
#33 https://www.nevo.co.il/law_word/law06/tak-5013.pdf#page=8
|
||||
#34 https://www.nevo.co.il/law_word/law06/tak-5021.pdf#page=8
|
||||
#35 https://www.nevo.co.il/law_word/law06/tak-5096.pdf#page=3
|
||||
#36 https://www.nevo.co.il/law_word/law06/tak-5167.pdf#page=2
|
||||
#37 https://www.nevo.co.il/law_word/law06/tak-5248.pdf#page=7
|
||||
#38 https://www.nevo.co.il/law_word/law06/tak-5335.pdf#page=6
|
||||
#39 https://www.nevo.co.il/law_word/law06/tak-5339.pdf#page=7
|
||||
#40 https://www.nevo.co.il/law_word/law06/tak-5506.pdf#page=19
|
||||
#41 https://www.nevo.co.il/law_word/law06/tak-5731.pdf#page=2
|
||||
#42 https://www.nevo.co.il/law_word/law06/tak-5853.pdf#page=3
|
||||
#43 https://www.nevo.co.il/law_word/law06/tak-5937.pdf#page=9
|
||||
#44 https://www.nevo.co.il/law_word/law06/tak-6024.pdf#page=4
|
||||
#
|
||||
# Time Determination (Temporary Provisions) Law, 1997
|
||||
# https://www.nevo.co.il/law_html/law19/p201_003.htm
|
||||
#
|
||||
# Time Determination (Temporary Provisions) Law, 2000
|
||||
# https://www.nevo.co.il/law_html/law19/p201_004.htm
|
||||
#
|
||||
# Time Determination Law, 1992 and amendments
|
||||
# https://www.nevo.co.il/law_html/law01/p201_002.htm
|
||||
# https://main.knesset.gov.il/Activity/Legislation/Laws/Pages/LawPrimary.aspx?lawitemid=2001174
|
||||
|
||||
# From Paul Eggert (2020-10-27):
|
||||
# Several of the midnight transitions mentioned above are ambiguous;
|
||||
# are they 00:00, 00:00s, 24:00, or 24:00s? When resolving these ambiguities,
|
||||
# try to minimize changes from previous tzdb versions, for lack of better info.
|
||||
# Commentary from previous versions is included below, to help explain this.
|
||||
|
||||
# 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
|
||||
Rule Zion 1944 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1945 only - Apr 16 0:00 1:00 D
|
||||
Rule Zion 1945 only - Nov 1 2:00 0 S
|
||||
Rule Zion 1946 only - Apr 16 2:00 1:00 D
|
||||
Rule Zion 1946 only - Nov 1 0:00 0 S
|
||||
Rule Zion 1948 only - May 23 0:00 2:00 DD
|
||||
Rule Zion 1948 only - Sep 1 0:00 1:00 D
|
||||
Rule Zion 1948 1949 - Nov 1 2:00 0 S
|
||||
Rule Zion 1949 only - May 1 0:00 1:00 D
|
||||
Rule Zion 1950 only - Apr 16 0:00 1:00 D
|
||||
Rule Zion 1950 only - Sep 15 3:00 0 S
|
||||
Rule Zion 1951 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1951 only - Nov 11 3:00 0 S
|
||||
Rule Zion 1952 only - Apr 20 2:00 1:00 D
|
||||
Rule Zion 1952 only - Oct 19 3:00 0 S
|
||||
Rule Zion 1953 only - Apr 12 2:00 1:00 D
|
||||
Rule Zion 1953 only - Sep 13 3:00 0 S
|
||||
Rule Zion 1954 only - Jun 13 0:00 1:00 D
|
||||
Rule Zion 1954 only - Sep 12 0:00 0 S
|
||||
Rule Zion 1955 only - Jun 11 2:00 1:00 D
|
||||
Rule Zion 1955 only - Sep 11 0:00 0 S
|
||||
Rule Zion 1956 only - Jun 3 0:00 1:00 D
|
||||
Rule Zion 1956 only - Sep 30 3:00 0 S
|
||||
Rule Zion 1957 only - Apr 29 2:00 1:00 D
|
||||
Rule Zion 1957 only - Sep 22 0:00 0 S
|
||||
Rule Zion 1974 only - Jul 7 0:00 1:00 D
|
||||
Rule Zion 1974 only - Oct 13 0:00 0 S
|
||||
Rule Zion 1975 only - Apr 20 0:00 1:00 D
|
||||
Rule Zion 1975 only - Aug 31 0:00 0 S
|
||||
Rule Zion 1940 only - May 31 24:00u 1:00 D
|
||||
Rule Zion 1940 only - Sep 30 24:00u 0 S
|
||||
Rule Zion 1940 only - Nov 16 24:00u 1:00 D
|
||||
Rule Zion 1942 1946 - Oct 31 24:00u 0 S
|
||||
Rule Zion 1943 1944 - Mar 31 24:00u 1:00 D
|
||||
Rule Zion 1945 1946 - Apr 15 24:00u 1:00 D
|
||||
Rule Zion 1948 only - May 22 24:00u 2:00 DD
|
||||
Rule Zion 1948 only - Aug 31 24:00u 1:00 D
|
||||
Rule Zion 1948 1949 - Oct 31 24:00u 0 S
|
||||
Rule Zion 1949 only - Apr 30 24:00u 1:00 D
|
||||
Rule Zion 1950 only - Apr 15 24:00u 1:00 D
|
||||
Rule Zion 1950 only - Sep 14 24:00u 0 S
|
||||
Rule Zion 1951 only - Mar 31 24:00u 1:00 D
|
||||
Rule Zion 1951 only - Nov 10 24:00u 0 S
|
||||
Rule Zion 1952 only - Apr 19 24:00u 1:00 D
|
||||
Rule Zion 1952 only - Oct 18 24:00u 0 S
|
||||
Rule Zion 1953 only - Apr 11 24:00u 1:00 D
|
||||
Rule Zion 1953 only - Sep 12 24:00u 0 S
|
||||
Rule Zion 1954 only - Jun 12 24:00u 1:00 D
|
||||
Rule Zion 1954 only - Sep 11 24:00u 0 S
|
||||
Rule Zion 1955 only - Jun 11 24:00u 1:00 D
|
||||
Rule Zion 1955 only - Sep 10 24:00u 0 S
|
||||
Rule Zion 1956 only - Jun 2 24:00u 1:00 D
|
||||
Rule Zion 1956 only - Sep 29 24:00u 0 S
|
||||
Rule Zion 1957 only - Apr 27 24:00u 1:00 D
|
||||
Rule Zion 1957 only - Sep 21 24:00u 0 S
|
||||
Rule Zion 1974 only - Jul 6 24:00 1:00 D
|
||||
Rule Zion 1974 only - Oct 12 24:00 0 S
|
||||
Rule Zion 1975 only - Apr 19 24:00 1:00 D
|
||||
Rule Zion 1975 only - Aug 30 24:00 0 S
|
||||
|
||||
# From Alois Treindl (2019-03-06):
|
||||
# http://www.moin.gov.il/Documents/שעון%20קיץ/clock-50-years-7-2014.pdf
|
||||
@@ -1792,25 +1932,24 @@ Rule Zion 1975 only - Aug 31 0:00 0 S
|
||||
# From Paul Eggert (2019-03-06):
|
||||
# Also see this thread about the moin.gov.il URL:
|
||||
# https://mm.icann.org/pipermail/tz/2018-November/027194.html
|
||||
Rule Zion 1980 only - Aug 2 0:00 1:00 D
|
||||
Rule Zion 1980 only - Sep 13 1:00 0 S
|
||||
Rule Zion 1984 only - May 5 0:00 1:00 D
|
||||
Rule Zion 1984 only - Aug 25 1:00 0 S
|
||||
Rule Zion 1980 only - Aug 2 24:00s 1:00 D
|
||||
Rule Zion 1980 only - Sep 13 24:00s 0 S
|
||||
Rule Zion 1984 only - May 5 24:00s 1:00 D
|
||||
Rule Zion 1984 only - Aug 25 24:00s 0 S
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
Rule Zion 1985 only - Apr 14 0:00 1:00 D
|
||||
Rule Zion 1985 only - Sep 15 0:00 0 S
|
||||
Rule Zion 1986 only - May 18 0:00 1:00 D
|
||||
Rule Zion 1986 only - Sep 7 0:00 0 S
|
||||
Rule Zion 1987 only - Apr 15 0:00 1:00 D
|
||||
Rule Zion 1987 only - Sep 13 0:00 0 S
|
||||
Rule Zion 1985 only - Apr 13 24:00 1:00 D
|
||||
Rule Zion 1985 only - Aug 31 24:00 0 S
|
||||
Rule Zion 1986 only - May 17 24:00 1:00 D
|
||||
Rule Zion 1986 only - Sep 6 24:00 0 S
|
||||
Rule Zion 1987 only - Apr 14 24:00 1:00 D
|
||||
Rule Zion 1987 only - Sep 12 24:00 0 S
|
||||
|
||||
# From Avigdor Finkelstein (2014-03-05):
|
||||
# I check the Parliament (Knesset) records and there it's stated that the
|
||||
# [1988] transition should take place on Saturday night, when the Sabbath
|
||||
# ends and changes to Sunday.
|
||||
Rule Zion 1988 only - Apr 10 0:00 1:00 D
|
||||
Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
Rule Zion 1988 only - Apr 9 24:00 1:00 D
|
||||
Rule Zion 1988 only - Sep 3 24:00 0 S
|
||||
|
||||
# From Ephraim Silverberg
|
||||
# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
|
||||
@@ -1840,14 +1979,14 @@ Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
|
||||
|
||||
# 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
|
||||
Rule Zion 1990 only - Aug 26 0:00 0 S
|
||||
Rule Zion 1991 only - Mar 24 0:00 1:00 D
|
||||
Rule Zion 1991 only - Sep 1 0:00 0 S
|
||||
Rule Zion 1992 only - Mar 29 0:00 1:00 D
|
||||
Rule Zion 1992 only - Sep 6 0:00 0 S
|
||||
Rule Zion 1989 only - Apr 29 24:00 1:00 D
|
||||
Rule Zion 1989 only - Sep 2 24:00 0 S
|
||||
Rule Zion 1990 only - Mar 24 24:00 1:00 D
|
||||
Rule Zion 1990 only - Aug 25 24:00 0 S
|
||||
Rule Zion 1991 only - Mar 23 24:00 1:00 D
|
||||
Rule Zion 1991 only - Aug 31 24:00 0 S
|
||||
Rule Zion 1992 only - Mar 28 24:00 1:00 D
|
||||
Rule Zion 1992 only - Sep 5 24:00 0 S
|
||||
Rule Zion 1993 only - Apr 2 0:00 1:00 D
|
||||
Rule Zion 1993 only - Sep 5 0:00 0 S
|
||||
|
||||
@@ -1876,10 +2015,10 @@ Rule Zion 1995 only - Sep 3 0:00 0 S
|
||||
# where YYYY is the relevant year.
|
||||
|
||||
# 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
|
||||
Rule Zion 1997 only - Sep 14 0:00 0 S
|
||||
Rule Zion 1996 only - Mar 14 24:00 1:00 D
|
||||
Rule Zion 1996 only - Sep 15 24:00 0 S
|
||||
Rule Zion 1997 only - Mar 20 24:00 1:00 D
|
||||
Rule Zion 1997 only - Sep 13 24:00 0 S
|
||||
Rule Zion 1998 only - Mar 20 0:00 1:00 D
|
||||
Rule Zion 1998 only - Sep 6 0:00 0 S
|
||||
Rule Zion 1999 only - Apr 2 2:00 1:00 D
|
||||
@@ -1931,14 +2070,15 @@ Rule Zion 2010 only - Sep 12 2:00 0 S
|
||||
Rule Zion 2011 only - Oct 2 2:00 0 S
|
||||
Rule Zion 2012 only - Sep 23 2:00 0 S
|
||||
|
||||
# From Ephraim Silverberg (2013-06-27):
|
||||
# On June 23, 2013, the Israeli government approved changes to the
|
||||
# Time Decree Law. The next day, the changes passed the First Reading
|
||||
# in the Knesset. The law is expected to pass the Second and Third
|
||||
# (final) Readings by the beginning of September 2013.
|
||||
#
|
||||
# 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.
|
||||
# From Ephraim Silverberg (2020-10-26):
|
||||
# The current time law (2013) from the State of Israel can be viewed
|
||||
# (in Hebrew) at:
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/israel/announcements/2013+law.pdf
|
||||
# It translates to:
|
||||
# Every year, in the period from the Friday before the last Sunday in
|
||||
# the month of March at 02:00 a.m. until the last Sunday of the month
|
||||
# of October at 02:00 a.m., Israel Time will be advanced an additional
|
||||
# hour such that it will be UTC+3.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
|
||||
|
||||
@@ -37,16 +37,13 @@
|
||||
# Please see the notes below for the controversy about "EST" versus "AEST" etc.
|
||||
|
||||
# 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
|
||||
Rule Aus 1942 only - Mar 29 2:00 0 S
|
||||
Rule Aus 1942 only - Sep 27 2:00 1:00 D
|
||||
Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
|
||||
Rule Aus 1943 only - Oct 3 2:00 1:00 D
|
||||
# Go with Whitman and the Australian National Standards Commission, which
|
||||
# says W Australia didn't use DST in 1943/1944. Ignore Whitman's claim that
|
||||
# 1944/1945 was just like 1943/1944.
|
||||
Rule Aus 1917 only - Jan 1 2:00s 1:00 D
|
||||
Rule Aus 1917 only - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1942 only - Jan 1 2:00s 1:00 D
|
||||
Rule Aus 1942 only - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1942 only - Sep 27 2:00s 1:00 D
|
||||
Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
|
||||
Rule Aus 1943 only - Oct 3 2:00s 1:00 D
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
# Northern Territory
|
||||
@@ -138,8 +135,12 @@ Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
|
||||
# says King Island didn't observe DST from WWII until late 1971.
|
||||
#
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AT 1916 only - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule AT 1917 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 1917 1918 - Oct Sun>=22 2:00s 1:00 D
|
||||
Rule AT 1918 1919 - Mar Sun>=1 2:00s 0 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 only - Mar Sun>=29 2:00s 0 S
|
||||
Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 S
|
||||
Rule AT 1972 only - Feb lastSun 2:00s 0 S
|
||||
@@ -159,15 +160,9 @@ Rule AT 2007 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Australia/Hobart 9:49:16 - LMT 1895 Sep
|
||||
10:00 - AEST 1916 Oct 1 2:00
|
||||
10:00 1:00 AEDT 1917 Feb
|
||||
10:00 AT AE%sT 1919 Oct 24
|
||||
10:00 Aus AE%sT 1967
|
||||
10:00 AT AE%sT
|
||||
Zone Australia/Currie 9:35:28 - LMT 1895 Sep
|
||||
10:00 - AEST 1916 Oct 1 2:00
|
||||
10:00 1:00 AEDT 1917 Feb
|
||||
10:00 Aus AE%sT 1971 Jul
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Victoria
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
@@ -896,13 +891,36 @@ Zone Pacific/Wake 11:06:28 - LMT 1901
|
||||
|
||||
|
||||
# Vanuatu
|
||||
|
||||
# From P Chan (2020-11-27):
|
||||
# Joint Daylight Saving Regulation No 59 of 1973
|
||||
# New Hebrides Condominium Gazette No 336. December 1973
|
||||
# http://www.paclii.org/vu/other/VUNHGovGaz//1973/11.pdf#page=15
|
||||
#
|
||||
# Joint Daylight Saving (Repeal) Regulation No 10 of 1974
|
||||
# New Hebrides Condominium Gazette No 336. March 1974
|
||||
# http://www.paclii.org/vu/other/VUNHGovGaz//1974/3.pdf#page=11
|
||||
#
|
||||
# Summer Time Act No. 35 of 1982 [commenced 1983-09-01]
|
||||
# http://www.paclii.org/vu/other/VUGovGaz/1982/32.pdf#page=48
|
||||
#
|
||||
# Summer Time Act (Cap 157)
|
||||
# Laws of the Republic of Vanuatu Revised Edition 1988
|
||||
# http://www.paclii.org/cgi-bin/sinodisp/vu/legis/consol_act1988/sta147/sta147.html
|
||||
#
|
||||
# Summer Time (Amendment) Act No. 6 of 1991 [commenced 1991-11-11]
|
||||
# http://www.paclii.org/vu/legis/num_act/sta1991227/
|
||||
#
|
||||
# Summer Time (Repeal) Act No. 4 of 1993 [commenced 1993-05-03]
|
||||
# http://www.paclii.org/vu/other/VUGovGaz/1993/15.pdf#page=59
|
||||
|
||||
# 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 -
|
||||
Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 -
|
||||
Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
|
||||
Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 -
|
||||
Rule Vanuatu 1973 only - Dec 22 12:00u 1:00 -
|
||||
Rule Vanuatu 1974 only - Mar 30 12:00u 0 -
|
||||
Rule Vanuatu 1983 1991 - Sep Sat>=22 24:00 1:00 -
|
||||
Rule Vanuatu 1984 1991 - Mar Sat>=22 24:00 0 -
|
||||
Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
|
||||
Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
||||
11:00 Vanuatu +11/+12
|
||||
@@ -981,6 +999,25 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# Electronic Journal of Australian and New Zealand History (1997-03-03)
|
||||
# http://www.jcu.edu.au/aff/history/reviews/davison.htm
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Daylight Saving Act 1916 (No. 40 of 1916) [1916-12-21, commenced 1917-01-01]
|
||||
# http://classic.austlii.edu.au/au/legis/cth/num_act/dsa1916401916192/
|
||||
#
|
||||
# Daylight Saving Repeal Act 1917 (No. 35 of 1917) [1917-09-25]
|
||||
# http://classic.austlii.edu.au/au/legis/cth/num_act/dsra1917351917243/
|
||||
#
|
||||
# Statutory Rules 1941, No. 323 [1941-12-24]
|
||||
# https://www.legislation.gov.au/Details/C1941L00323
|
||||
#
|
||||
# Statutory Rules 1942, No. 392 [1942-09-10]
|
||||
# https://www.legislation.gov.au/Details/C1942L00392
|
||||
#
|
||||
# Statutory Rules 1943, No. 241 [1943-09-29]
|
||||
# https://www.legislation.gov.au/Details/C1943L00241
|
||||
#
|
||||
# All transition times should be 02:00 standard time.
|
||||
|
||||
|
||||
# From Paul Eggert (2005-12-08):
|
||||
# Implementation Dates of Daylight Saving Time within Australia
|
||||
# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
|
||||
@@ -1373,6 +1410,27 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# Tasmania
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Tasmania observed DST in 1916-1919.
|
||||
#
|
||||
# Daylight Saving Act, 1916 (7 Geo V, No 2) [1916-09-22]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsa19167gvn2267/
|
||||
#
|
||||
# Daylight Saving Amendment Act, 1917 (8 Geo V, No 5) [1917-10-01]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsaa19178gvn5347/
|
||||
#
|
||||
# Daylight Saving Act Repeal Act, 1919 (10 Geo V, No 9) [1919-10-24]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/tdsara191910gvn9339/
|
||||
#
|
||||
# King Island is mentioned in the 1967 Act but not the 1968 Act.
|
||||
# Therefore it possibly observed DST from 1968/69.
|
||||
#
|
||||
# Daylight Saving Act 1967 (No. 33 of 1967) [1967-09-22]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196733o1967211/
|
||||
#
|
||||
# Daylight Saving Act 1968 (No. 42 of 1968) [1968-10-15]
|
||||
# http://classic.austlii.edu.au/au/legis/tas/num_act/dsa196842o1968211/
|
||||
|
||||
# The rules for 1967 through 1991 were reported by George Shepherd
|
||||
# via Simon Woodhead via Robert Elz (1991-03-06):
|
||||
# # The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
|
||||
|
||||
@@ -72,6 +72,7 @@ Link Atlantic/Faroe Atlantic/Faeroe
|
||||
Link Europe/Oslo Atlantic/Jan_Mayen
|
||||
Link Australia/Sydney Australia/ACT
|
||||
Link Australia/Sydney Australia/Canberra
|
||||
Link Australia/Hobart Australia/Currie
|
||||
Link Australia/Lord_Howe Australia/LHI
|
||||
Link Australia/Sydney Australia/NSW
|
||||
Link Australia/Darwin Australia/North
|
||||
|
||||
@@ -26,12 +26,11 @@
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# These entries are mostly present for historical reasons, so that
|
||||
# people in areas not otherwise covered by the tz files could "zic -l"
|
||||
# to a timezone that was right for their area. These days, the
|
||||
# tz files cover almost all the inhabited world, and the only practical
|
||||
# need now for the entries that are not on UTC are for ships at sea
|
||||
# that cannot use POSIX TZ settings.
|
||||
# These entries are for uses not otherwise covered by the tz database.
|
||||
# Their main practical use is for platforms like Android that lack
|
||||
# support for POSIX-style TZ strings. On such platforms these entries
|
||||
# can be useful if the timezone database is wrong or if a ship or
|
||||
# aircraft at sea is not in a timezone.
|
||||
|
||||
# Starting with POSIX 1003.1-2001, the entries below are all
|
||||
# unnecessary as settings for the TZ environment variable. E.g.,
|
||||
|
||||
@@ -2915,6 +2915,19 @@ Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
||||
# The law has been published today on
|
||||
# http://publication.pravo.gov.ru/Document/View/0001201810110037
|
||||
|
||||
# From Alexander Krivenyshev (2020-11-27):
|
||||
# The State Duma approved (Nov 24, 2020) the transition of the Volgograd
|
||||
# region to the Moscow time zone....
|
||||
# https://sozd.duma.gov.ru/bill/1012130-7
|
||||
#
|
||||
# From Stepan Golosunov (2020-12-05):
|
||||
# Currently proposed text for the second reading (expected on December 8) ...
|
||||
# changes the date to December 27. https://v1.ru/text/gorod/2020/12/04/69601031/
|
||||
#
|
||||
# From Stepan Golosunov (2020-12-22):
|
||||
# The law was published today on
|
||||
# http://publication.pravo.gov.ru/Document/View/0001202012220002
|
||||
|
||||
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
3:00 - +03 1930 Jun 21
|
||||
4:00 - +04 1961 Nov 11
|
||||
@@ -2924,7 +2937,8 @@ Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
||||
4:00 - +04 2014 Oct 26 2:00s
|
||||
3:00 - +03 2018 Oct 28 2:00s
|
||||
4:00 - +04
|
||||
4:00 - +04 2020 Dec 27 2:00s
|
||||
3:00 - +03
|
||||
|
||||
# From Paul Eggert (2016-11-11):
|
||||
# Europe/Saratov covers:
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
# NIST format leap-seconds.list file, which can be copied from
|
||||
# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
|
||||
# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>.
|
||||
# The NIST file is used instead of its IERS upstream counterpart
|
||||
# <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list>
|
||||
# because under US law the NIST file is public domain
|
||||
# whereas the IERS file's copyright and license status is unclear.
|
||||
# For more about leap-seconds.list, please see
|
||||
# The NTP Timescale and Leap Seconds
|
||||
# <https://www.eecis.udel.edu/~mills/leap.html>.
|
||||
@@ -91,11 +95,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 2021 Jun 28 00:00:00
|
||||
#Expires 2021 Dec 28 00:00:00
|
||||
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000 (2016-07-08 00:00:00 UTC)
|
||||
#expires 1624838400 (2021-06-28 00:00:00 UTC)
|
||||
#expires 1640649600 (2021-12-28 00:00:00 UTC)
|
||||
|
||||
# Updated through IERS Bulletin C60
|
||||
# File expires on: 28 June 2021
|
||||
# Updated through IERS Bulletin C61
|
||||
# File expires on: 28 December 2021
|
||||
|
||||
@@ -2257,7 +2257,7 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# to say eight hours behind Greenwich Time.
|
||||
#
|
||||
# * O.I.C. 1980/02 INTERPRETATION ACT
|
||||
# [no online source found]
|
||||
# https://mm.icann.org/pipermail/tz/attachments/20201125/d5adc93b/CAYTOIC1980-02DST1980-01-04-0001.pdf
|
||||
#
|
||||
# * Yukon Daylight Saving Time, YOIC 1987/56
|
||||
# https://www.canlii.org/en/yk/laws/regu/yoic-1987-56/latest/yoic-1987-56.html
|
||||
@@ -2958,12 +2958,38 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
|
||||
#
|
||||
# For 1899 Milne gives -5:09:29.5; round that.
|
||||
#
|
||||
# From P Chan (2020-11-27, corrected on 2020-12-02):
|
||||
# There were two periods of DST observed in 1942-1945: 1942-05-01
|
||||
# midnight to 1944-12-31 midnight and 1945-02-01 to 1945-10-17 midnight.
|
||||
# "midnight" should mean 24:00 from the context.
|
||||
#
|
||||
# War Time Order 1942 [1942-05-01] and War Time (No. 2) Order 1942 [1942-09-29]
|
||||
# Appendix to the Statutes of 7 George VI. and the Year 1942. p 34, 43
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA34
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA3-PA43
|
||||
#
|
||||
# War Time Order 1943 [1943-03-31] and War Time Order 1944 [1943-12-29]
|
||||
# Appendix to the Statutes of 8 George VI. and the Year 1943. p 9-10, 28-29
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA9
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA4-PA28
|
||||
#
|
||||
# War Time Order 1945 [1945-01-31] and the Order which revoke War Time Order
|
||||
# 1945 [1945-10-16] Appendix to the Statutes of 9 George VI. and the Year
|
||||
# 1945. p 160, 247-248
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA160
|
||||
# https://books.google.com/books?id=5rlNAQAAIAAJ&pg=RA6-PA247
|
||||
#
|
||||
# From Sue Williams (2006-12-07):
|
||||
# The Bahamas announced about a month ago that they plan to change their DST
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bahamas 1942 only - May 1 24:00 1:00 W
|
||||
Rule Bahamas 1944 only - Dec 31 24:00 0 S
|
||||
Rule Bahamas 1945 only - Feb 1 0:00 1:00 W
|
||||
Rule Bahamas 1945 only - Aug 14 23:00u 1:00 P # Peace
|
||||
Rule Bahamas 1945 only - Oct 17 24:00 0 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]
|
||||
@@ -2987,34 +3013,161 @@ Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown
|
||||
-4:00 Barb A%sT
|
||||
|
||||
# Belize
|
||||
# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
|
||||
|
||||
# From P Chan (2020-11-03):
|
||||
# Below are some laws related to the time in British Honduras/Belize:
|
||||
#
|
||||
# Definition of Time Ordinance, 1927 (No.4 of 1927) [1927-04-01]
|
||||
# Ordinances of British Honduras Passed in the Year 1927, p 19-20
|
||||
# https://books.google.com/books?id=LqEpAQAAMAAJ&pg=RA3-PA19
|
||||
#
|
||||
# Definition of Time (Amendment) Ordinance, 1942 (No. 5 of 1942) [1942-06-27]
|
||||
# Ordinances of British Honduras Passed in the Year 1942, p 31-32
|
||||
# https://books.google.com/books?id=h6MpAQAAMAAJ&pg=RA6-PA95-IA44
|
||||
#
|
||||
# Definition of Time Ordinance, 1945 (No. 19 of 1945) [1945-12-15]
|
||||
# Ordinances of British Honduras Passed in the Year 1945, p 49-50
|
||||
# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA2-PP1
|
||||
#
|
||||
# Definition of Time Ordinance, 1947 (No. 1 of 1947) [1947-03-11]
|
||||
# Ordinances of British Honduras Passed in the Year 1947, p 1-2
|
||||
# https://books.google.com/books?id=xaMpAQAAMAAJ&pg=RA3-PA1
|
||||
#
|
||||
# Time (Definition of) Ordinance (Chapter 180)
|
||||
# The Laws of British Honduras in Force on the 15th Day of September, 1958 , Volume IV, p 2580
|
||||
# https://books.google.com/books?id=v5QpAQAAMAAJ&pg=PA2580
|
||||
#
|
||||
# Time (Definition of) (Amendment) Ordinance, 1968 (No. 13 of 1968) [1968-08-03]
|
||||
# https://books.google.com/books?id=xij7KEB_58wC&pg=RA1-PA428-IA9
|
||||
#
|
||||
# Definition of Time Act (Chapter 339)
|
||||
# Law of Belize, Revised Edition 2000
|
||||
# http://www.belizelaw.org/web/lawadmin/PDF%20files/cap339.pdf
|
||||
|
||||
# From Paul Eggert (2020-11-03):
|
||||
# The transitions below are derived from P Chan's sources, except that the
|
||||
# 1973 through 1983 transitions are from Shanks & Pottenger since we have
|
||||
# no better data there.
|
||||
|
||||
# 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 1918 1941 - Oct Sat>=1 24:00 0:30 -0530
|
||||
Rule Belize 1919 1942 - Feb Sat>=8 24:00 0 CST
|
||||
Rule Belize 1942 only - Jun 27 24:00 1:00 CWT
|
||||
Rule Belize 1945 only - Aug 14 23:00u 1:00 CPT
|
||||
Rule Belize 1945 only - Dec 15 24:00 0 CST
|
||||
Rule Belize 1947 1967 - Oct Sat>=1 24:00 0:30 -0530
|
||||
Rule Belize 1948 1968 - Feb Sat>=8 24:00 0 CST
|
||||
Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
|
||||
Rule Belize 1974 only - Feb 9 0:00 0 CST
|
||||
Rule Belize 1982 only - Dec 18 0:00 1:00 CDT
|
||||
Rule Belize 1983 only - Feb 12 0:00 0 CST
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Belize -5:52:48 - LMT 1912 Apr
|
||||
Zone America/Belize -5:52:48 - LMT 1912 Apr 1
|
||||
-6:00 Belize %s
|
||||
|
||||
# Bermuda
|
||||
|
||||
# From Paul Eggert (2020-11-24):
|
||||
# For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower,
|
||||
# Bermuda dockyard, Ireland I; round that.
|
||||
# Bermuda dockyard, Ireland I. This agrees with standard offset given in the
|
||||
# Daylight Saving Act, 1917 cited below. Round that to the nearest second.
|
||||
# It is not known when this time became standard for Bermuda; guess 1890.
|
||||
# The transition to -04 was specified by:
|
||||
# 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08]
|
||||
# https://books.google.com/books?id=7tdMAQAAIAAJ&pg=RA54-PP1
|
||||
|
||||
# From P Chan (2020-11-20):
|
||||
# Most of the information can be found online from the Bermuda National
|
||||
# Library - Digital Collection which includes The Royal Gazette (RG) until 1957
|
||||
# https://bnl.contentdm.oclc.org/digital/
|
||||
# I will cite the ID. For example, [10000] means
|
||||
# https://bnl.contentdm.oclc.org/digital/collection/BermudaNP02/id/10000
|
||||
#
|
||||
# 1917: Apr 5 midnight to Sep 30 midnight
|
||||
# Daylight Saving Act, 1917 (1917 No. 13) [1917-04-02]
|
||||
# Bermuda Acts and Resolves 1917, p 37-38
|
||||
# https://books.google.com/books?id=M-lCAQAAMAAJ&pg=PA36-IA2
|
||||
# RG, 1917-04-04, p 6 [42340] gives the spring forward date.
|
||||
#
|
||||
# 1918: Apr 13 midnight to Sep 15 midnight
|
||||
# Daylight Saving Act, 1918 (1918 No. 9) [1918-04-06]
|
||||
# Bermuda Acts and Resolves 1917, p 13
|
||||
# https://books.google.com/books?id=K-lCAQAAMAAJ&pg=RA1-PA7
|
||||
#
|
||||
# Note that local mean time was still used before 1930.
|
||||
#
|
||||
# During WWII, DST was introduced by Defence Regulations
|
||||
# 1942: Jan 11 02:00 to Oct 18 02:00 [113646], [115726]
|
||||
# 1943: Mar 21 02:00 to Oct 31 02:00 [116704], [118193]
|
||||
# 1944: Mar 12 02:00 to Nov 5 02:00 [119225], [121593]
|
||||
# 1945: Mar 11 02:00 to Nov 4 02:00 [122369], [124461]
|
||||
# RG, 1942-01-08, p 2, 1942-10-12, p 2 , 1943-03-06, p 2, 1943-09-03, p 1,
|
||||
# 1944-02-29, p 6, 1944-09-20, p 2, 1945-02-13, p 2, 1945-11-03, p 1
|
||||
#
|
||||
# In 1946, the House of Assembly rejected DST twice. [128686], [128076]
|
||||
# RG, 1946-03-16 p 1,1946-04-13 p 1
|
||||
#
|
||||
# 1947: third Sunday in May 02:00 to second Sunday in September 02:00
|
||||
# DST in 1947 was defined in the Daylight Saving Act, 1947 (1947: No. 12)
|
||||
# which expired at the end of the year. [125784] ,[132405], [144454], [138226]
|
||||
# RG, 1947-02-27, p 1, 1947-05-15, p 1, 1947-09-13, p 1, 1947-12-30, p 1
|
||||
#
|
||||
# 1948-1952: fourth Sunday in May 02:00 to first Sunday in September 02:00
|
||||
# DST in 1948 was defined in the Daylight Saving Act, 1948 (1948 : No. 12)
|
||||
# which was set to expired at the end of the year but it was extended until
|
||||
# the end of 1952 and was not further extended.
|
||||
# [129802], [139403], [146008], [135240], [144330], [139049], [143309],
|
||||
# [148271], [149773], [153589], [153802], [155924]
|
||||
# RG, 1948-04-13, p 1, 1948-05-22, p 1, 1948-09-04, p 1, 1949-05-21, p1,
|
||||
# 1949-09-03, p 1, 1950-05-27 p 1, 1950-09-02, p 1, 1951-05-27, p 1,
|
||||
# 1951-09-01, p 1, 1952-05-23, p 1, 1952-09-26, p 1, 1952-12-21, p 8
|
||||
#
|
||||
# In 1953-1955, the House of Assembly rejected DST each year. [158996],
|
||||
# [162620], [166720] RG, 1953-05-02, p 1, 1954-04-01 p 1, 1955-03-12, p 1
|
||||
#
|
||||
# 1956: fourth Sunday in May 02:00 to last Sunday in October 02:00
|
||||
# Time Zone (Seasonal Variation) Act, 1956 (1956: No.44) [1956-05-25]
|
||||
# Bermuda Public Acts 1956, p 331-332
|
||||
# https://books.google.com/books?id=Xs1AlmD_cEwC&pg=PA63
|
||||
#
|
||||
# The extension of the Act was rejected by the House of Assembly. [176218]
|
||||
# RG, 1956-12-13, p 1
|
||||
#
|
||||
# From the Chronological Table of Public and Private Acts up to 1985, it seems
|
||||
# that there does not exist other Acts related to DST before 1973.
|
||||
# https://books.google.com/books?id=r9hMAQAAIAAJ&pg=RA23-PA1
|
||||
# Public Acts of the Legislature of the Islands of Bermuda, Together with
|
||||
# Statutory Instruments in Force Thereunder, Vol VII
|
||||
|
||||
# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
|
||||
|
||||
# Next year, however, clocks in the US will go forward on the second Sunday
|
||||
# in March, until the first Sunday in November. And, after the Time Zone
|
||||
# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
|
||||
# Friday, the same thing will happen in Bermuda.
|
||||
# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bermuda 1917 only - Apr 5 24:00 1:00 -
|
||||
Rule Bermuda 1917 only - Sep 30 24:00 0 -
|
||||
Rule Bermuda 1918 only - Apr 13 24:00 1:00 -
|
||||
Rule Bermuda 1918 only - Sep 15 24:00 0 S
|
||||
Rule Bermuda 1942 only - Jan 11 2:00 1:00 D
|
||||
Rule Bermuda 1942 only - Oct 18 2:00 0 S
|
||||
Rule Bermuda 1943 only - Mar 21 2:00 1:00 D
|
||||
Rule Bermuda 1943 only - Oct 31 2:00 0 S
|
||||
Rule Bermuda 1944 1945 - Mar Sun>=8 2:00 1:00 D
|
||||
Rule Bermuda 1944 1945 - Nov Sun>=1 2:00 0 S
|
||||
Rule Bermuda 1947 only - May Sun>=15 2:00 1:00 D
|
||||
Rule Bermuda 1947 only - Sep Sun>=8 2:00 0 S
|
||||
Rule Bermuda 1948 1952 - May Sun>=22 2:00 1:00 D
|
||||
Rule Bermuda 1948 1952 - Sep Sun>=1 2:00 0 S
|
||||
Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D
|
||||
Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
-4:00 - AST 1974 Apr 28 2:00
|
||||
Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
|
||||
-4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00
|
||||
-4:00 Bermuda A%sT 1974 Apr 28 2:00
|
||||
-4:00 Canada A%sT 1976
|
||||
-4:00 US A%sT
|
||||
|
||||
@@ -3597,7 +3750,7 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
# "Eastern Standard Times Begins 2007
|
||||
# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
|
||||
# indicating that the normal ET rules are followed.
|
||||
#
|
||||
|
||||
# From Paul Eggert (2014-08-19):
|
||||
# The 2014-08-13 Cabinet meeting decided to stay on UT -04 year-round. See:
|
||||
# http://tcweeklynews.com/daylight-savings-time-to-be-maintained-p5353-127.htm
|
||||
@@ -3612,19 +3765,42 @@ Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
|
||||
# during the summer months and Standard Time, also known as Local
|
||||
# Time, during the winter months with effect from April 2018 ...
|
||||
# https://www.gov.uk/government/news/turks-and-caicos-post-cabinet-meeting-statement--3
|
||||
#
|
||||
# From Paul Eggert (2017-08-26):
|
||||
# The date of effect of the spring 2018 change appears to be March 11,
|
||||
# which makes more sense. See: Hamilton D. Time change back
|
||||
# by March 2018 for TCI. Magnetic Media. 2017-08-25.
|
||||
# http://magneticmediatv.com/2017/08/time-change-back-by-march-2018-for-tci/
|
||||
#
|
||||
# From P Chan (2020-11-27):
|
||||
# Standard Time Declaration Order 2015 (L.N. 15/2015)
|
||||
# http://online.fliphtml5.com/fizd/czin/#p=2
|
||||
#
|
||||
# Standard Time Declaration Order 2017 (L.N. 31/2017)
|
||||
# http://online.fliphtml5.com/fizd/dmcu/#p=2
|
||||
#
|
||||
# From Tim Parenti (2020-12-05):
|
||||
# Although L.N. 31/2017 reads that it "shall come into operation at 2:00 a.m.
|
||||
# on 11th March 2018", a precise interpretation here poses some problems. The
|
||||
# order states that "the standard time to be observed throughout the Turks and
|
||||
# Caicos Islands shall be the same time zone as the Eastern United States of
|
||||
# America" and further clarifies "[f]or the avoidance of doubt" that it
|
||||
# "applies to the Eastern Standard Time as well as any changes thereto for
|
||||
# Daylight Saving Time." However, as clocks in Turks and Caicos approached
|
||||
# 02:00 -04, and thus the declared implementation time, it was still 01:00 EST
|
||||
# (-05), as DST in the Eastern US would not start until an hour later.
|
||||
#
|
||||
# Since it is unlikely that those on the islands switched their clocks twice in
|
||||
# the span of an hour, we assume instead that the adoption of EDT actually took
|
||||
# effect once clocks in the Eastern US had sprung forward, from 03:00 -04.
|
||||
# This discrepancy only affects the time zone abbreviation and DST flag for the
|
||||
# intervening hour, not wall clock times, as -04 was maintained throughout.
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Grand_Turk -4:44:32 - LMT 1890
|
||||
-5:07:10 - KMT 1912 Feb # Kingston Mean Time
|
||||
-5:00 - EST 1979
|
||||
-5:00 US E%sT 2015 Nov Sun>=1 2:00
|
||||
-4:00 - AST 2018 Mar 11 3:00
|
||||
-5:00 US E%sT 2015 Mar 8 2:00
|
||||
-4:00 - AST 2018 Mar 11 3:00
|
||||
-5:00 US E%sT
|
||||
|
||||
# British Virgin Is
|
||||
|
||||
@@ -79,8 +79,7 @@ AS -1416-17042 Pacific/Pago_Pago
|
||||
AT +4813+01620 Europe/Vienna
|
||||
AU -3133+15905 Australia/Lord_Howe Lord Howe Island
|
||||
AU -5430+15857 Antarctica/Macquarie Macquarie Island
|
||||
AU -4253+14719 Australia/Hobart Tasmania (most areas)
|
||||
AU -3956+14352 Australia/Currie Tasmania (King Island)
|
||||
AU -4253+14719 Australia/Hobart Tasmania
|
||||
AU -3749+14458 Australia/Melbourne Victoria
|
||||
AU -3352+15113 Australia/Sydney New South Wales (most areas)
|
||||
AU -3157+14127 Australia/Broken_Hill New South Wales (Yancowinna)
|
||||
@@ -153,9 +152,9 @@ CA +682059-1334300 America/Inuvik Mountain - NT (west)
|
||||
CA +4906-11631 America/Creston MST - BC (Creston)
|
||||
CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
|
||||
CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
|
||||
CA +6043-13503 America/Whitehorse MST - Yukon (east)
|
||||
CA +6404-13925 America/Dawson MST - Yukon (west)
|
||||
CA +4916-12307 America/Vancouver Pacific - BC (most areas)
|
||||
CA +6043-13503 America/Whitehorse Pacific - Yukon (east)
|
||||
CA +6404-13925 America/Dawson Pacific - Yukon (west)
|
||||
CC -1210+09655 Indian/Cocos
|
||||
CD -0418+01518 Africa/Kinshasa Dem. Rep. of Congo (west)
|
||||
CD -1140+02728 Africa/Lubumbashi Dem. Rep. of Congo (east)
|
||||
@@ -360,8 +359,8 @@ RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area
|
||||
# Programs should use zone1970.tab instead; see above.
|
||||
UA +4457+03406 Europe/Simferopol Crimea
|
||||
RU +5836+04939 Europe/Kirov MSK+00 - Kirov
|
||||
RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd
|
||||
RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan
|
||||
RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd
|
||||
RU +5134+04602 Europe/Saratov MSK+01 - Saratov
|
||||
RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk
|
||||
RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia
|
||||
|
||||
@@ -99,6 +99,16 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
ADLCFLAGS += -DAIX=1
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ADLCFLAGS += -D_ALLBSD_SOURCE=1 -D_GNU_SOURCE=1
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
ADLCFLAGS += -DR18_RESERVED=1
|
||||
endif
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
ifeq ($(call isTargetCpuBits, 64), true)
|
||||
ADLCFLAGS += -D_WIN64=1
|
||||
endif
|
||||
ifeq ($(HOTSPOT_TARGET_CPU_ARCH), aarch64)
|
||||
ADLCFLAGS += -DR18_RESERVED=1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2008, 2019, 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
|
||||
@@ -46,6 +46,7 @@ public class SBCS {
|
||||
String hisName = cs.hisName;
|
||||
String pkgName = cs.pkgName;
|
||||
boolean isASCII = cs.isASCII;
|
||||
boolean isLatin1Decodable = true;
|
||||
|
||||
StringBuilder b2cSB = new StringBuilder();
|
||||
StringBuilder b2cNRSB = new StringBuilder();
|
||||
@@ -69,6 +70,9 @@ public class SBCS {
|
||||
c2bOff += 0x100;
|
||||
c2bIndex[e.cp>>8] = 1;
|
||||
}
|
||||
if (e.cp > 0xFF) {
|
||||
isLatin1Decodable = false;
|
||||
}
|
||||
}
|
||||
|
||||
Formatter fm = new Formatter(b2cSB);
|
||||
@@ -178,6 +182,9 @@ public class SBCS {
|
||||
if (line.indexOf("$ASCIICOMPATIBLE$") != -1) {
|
||||
line = line.replace("$ASCIICOMPATIBLE$", isASCII ? "true" : "false");
|
||||
}
|
||||
if (line.indexOf("$LATIN1DECODABLE$") != -1) {
|
||||
line = line.replace("$LATIN1DECODABLE$", isLatin1Decodable ? "true" : "false");
|
||||
}
|
||||
if (line.indexOf("$B2CTABLE$") != -1) {
|
||||
line = line.replace("$B2CTABLE$", b2c);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 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
|
||||
@@ -33,10 +33,12 @@ import java.nio.file.Paths;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* This tool reads the IANA Language Subtag Registry data file downloaded from
|
||||
@@ -75,32 +77,49 @@ public class EquivMapsGenerator {
|
||||
String type = null;
|
||||
String tag = null;
|
||||
String preferred = null;
|
||||
String prefix = null;
|
||||
|
||||
for (String line : Files.readAllLines(Paths.get(filename),
|
||||
Charset.forName("UTF-8"))) {
|
||||
line = line.toLowerCase(Locale.ROOT);
|
||||
int index = line.indexOf(' ')+1;
|
||||
int index = line.indexOf(' ') + 1;
|
||||
if (line.startsWith("file-date:")) {
|
||||
LSRrevisionDate = line.substring(index);
|
||||
} else if (line.startsWith("type:")) {
|
||||
type = line.substring(index);
|
||||
} else if (line.startsWith("tag:") || line.startsWith("subtag:")) {
|
||||
tag = line.substring(index);
|
||||
} else if (line.startsWith("preferred-value:")
|
||||
&& !type.equals("extlang")) {
|
||||
} else if (line.startsWith("preferred-value:")) {
|
||||
preferred = line.substring(index);
|
||||
processDeprecatedData(type, tag, preferred);
|
||||
} else if (line.startsWith("prefix:")) {
|
||||
prefix = line.substring(index);
|
||||
} else if (line.equals("%%")) {
|
||||
processDeprecatedData(type, tag, preferred, prefix);
|
||||
type = null;
|
||||
tag = null;
|
||||
preferred = null;
|
||||
prefix = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Last entry
|
||||
processDeprecatedData(type, tag, preferred, prefix);
|
||||
}
|
||||
|
||||
private static void processDeprecatedData(String type,
|
||||
String tag,
|
||||
String preferred) {
|
||||
String preferred,
|
||||
String prefix) {
|
||||
StringBuilder sb;
|
||||
|
||||
if (type == null || tag == null || preferred == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (type.equals("extlang") && prefix != null) {
|
||||
tag = prefix + "-" + tag;
|
||||
}
|
||||
|
||||
if (type.equals("region") || type.equals("variant")) {
|
||||
if (!initialRegionVariantMap.containsKey(preferred)) {
|
||||
sb = new StringBuilder("-");
|
||||
@@ -113,7 +132,7 @@ public class EquivMapsGenerator {
|
||||
+ " A region/variant subtag \"" + preferred
|
||||
+ "\" is registered for more than one subtags.");
|
||||
}
|
||||
} else { // language, grandfahered, and redundant
|
||||
} else { // language, extlang, grandfathered, and redundant
|
||||
if (!initialLanguageMap.containsKey(preferred)) {
|
||||
sb = new StringBuilder(preferred);
|
||||
sb.append(',');
|
||||
@@ -131,7 +150,12 @@ public class EquivMapsGenerator {
|
||||
private static void generateEquivalentMap() {
|
||||
String[] subtags;
|
||||
for (String preferred : initialLanguageMap.keySet()) {
|
||||
subtags = initialLanguageMap.get(preferred).toString().split(",");
|
||||
// There are cases where the same tag may appear in two entries, e.g.,
|
||||
// "yue" is defined both as extlang and redundant. Remove the dup.
|
||||
subtags = Arrays.stream(initialLanguageMap.get(preferred).toString().split(","))
|
||||
.distinct()
|
||||
.collect(Collectors.toList())
|
||||
.toArray(new String[0]);
|
||||
|
||||
if (subtags.length == 2) {
|
||||
sortedLanguageMap1.put(subtags[0], subtags[1]);
|
||||
@@ -215,10 +239,7 @@ public class EquivMapsGenerator {
|
||||
+ " static final Map<String, String[]> multiEquivsMap;\n"
|
||||
+ " static final Map<String, String> regionVariantEquivMap;\n\n"
|
||||
+ " static {\n"
|
||||
+ " singleEquivMap = new HashMap<>();\n"
|
||||
+ " multiEquivsMap = new HashMap<>();\n"
|
||||
+ " regionVariantEquivMap = new HashMap<>();\n\n"
|
||||
+ " // This is an auto-generated file and should not be manually edited.\n";
|
||||
+ " singleEquivMap = new HashMap<>(";
|
||||
|
||||
private static final String footerText =
|
||||
" }\n\n"
|
||||
@@ -242,6 +263,12 @@ public class EquivMapsGenerator {
|
||||
Paths.get(fileName))) {
|
||||
writer.write(getOpenJDKCopyright());
|
||||
writer.write(headerText
|
||||
+ (int)(sortedLanguageMap1.size() / 0.75f + 1) + ");\n"
|
||||
+ " multiEquivsMap = new HashMap<>("
|
||||
+ (int)(sortedLanguageMap2.size() / 0.75f + 1) + ");\n"
|
||||
+ " regionVariantEquivMap = new HashMap<>("
|
||||
+ (int)(sortedRegionVariantMap.size() / 0.75f + 1) + ");\n\n"
|
||||
+ " // This is an auto-generated file and should not be manually edited.\n"
|
||||
+ " // LSR Revision: " + LSRrevisionDate);
|
||||
writer.newLine();
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
package propertiesparser.gen;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import propertiesparser.parser.Message;
|
||||
import propertiesparser.parser.MessageFile;
|
||||
import propertiesparser.parser.MessageInfo;
|
||||
@@ -44,11 +46,12 @@ import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.TreeSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -150,7 +153,11 @@ public class ClassGenerator {
|
||||
public void generateFactory(MessageFile messageFile, File outDir) {
|
||||
Map<FactoryKind, List<Map.Entry<String, Message>>> groupedEntries =
|
||||
messageFile.messages.entrySet().stream()
|
||||
.collect(Collectors.groupingBy(e -> FactoryKind.parseFrom(e.getKey().split("\\.")[1])));
|
||||
.collect(
|
||||
Collectors.groupingBy(
|
||||
e -> FactoryKind.parseFrom(e.getKey().split("\\.")[1]),
|
||||
TreeMap::new,
|
||||
toList()));
|
||||
//generate nested classes
|
||||
List<String> nestedDecls = new ArrayList<>();
|
||||
Set<String> importedTypes = new TreeSet<>();
|
||||
|
||||
@@ -245,7 +245,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBAWT, \
|
||||
LIBS_macosx := -lmlib_image \
|
||||
-framework Cocoa \
|
||||
-framework OpenGL \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework JavaRuntimeSupport \
|
||||
-framework ApplicationServices \
|
||||
-framework AudioToolbox, \
|
||||
@@ -391,7 +390,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
|
||||
common/awt/debug \
|
||||
libawt/java2d, \
|
||||
HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
|
||||
DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \
|
||||
DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation stringop-truncation, \
|
||||
DISABLED_WARNINGS_clang := tautological-compare, \
|
||||
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
|
||||
DISABLED_WARNINGS_microsoft := 4819, \
|
||||
@@ -572,105 +571,43 @@ endif
|
||||
###########################################################################
|
||||
|
||||
ifeq ($(USE_EXTERNAL_HARFBUZZ), true)
|
||||
LIBHARFBUZZ_LIBS := $(HARFBUZZ_LIBS)
|
||||
LIBFONTMANAGER_EXTRA_SRC =
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS)
|
||||
else
|
||||
HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
|
||||
# This is better than adding EXPORT_ALL_SYMBOLS
|
||||
ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang solstudio), )
|
||||
HARFBUZZ_CFLAGS += -DHB_EXTERN=__attribute__\(\(visibility\(\"default\"\)\)\)
|
||||
else ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||
HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\)
|
||||
endif
|
||||
LIBFONTMANAGER_EXTRA_SRC = libharfbuzz
|
||||
HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
|
||||
-DHB_NO_PRAGMA_GCC_DIAGNOSTIC
|
||||
endif
|
||||
ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
|
||||
HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
|
||||
endif
|
||||
|
||||
LIBHARFBUZZ_LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
ifeq ($(CC_VERSION_NUMBER), 4.4.7)
|
||||
LIBHARFBUZZ_LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
|
||||
$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
endif
|
||||
endif
|
||||
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += libharfbuzz/hb-ft.cc \
|
||||
libharfbuzz/hb-coretext.cc
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
|
||||
-DHB_NO_PRAGMA_GCC_DIAGNOSTIC
|
||||
endif
|
||||
ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
|
||||
HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
|
||||
endif
|
||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
|
||||
endif
|
||||
HARFBUZZ_EXTRA_HEADER_DIRS := \
|
||||
libharfbuzz/hb-ucdn
|
||||
|
||||
LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
|
||||
HARFBUZZ_DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing
|
||||
HARFBUZZ_DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
|
||||
maybe-uninitialized class-memaccess
|
||||
HARFBUZZ_DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
|
||||
tautological-constant-out-of-range-compare int-to-pointer-cast \
|
||||
undef missing-field-initializers range-loop-analysis
|
||||
HARFBUZZ_DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138
|
||||
|
||||
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
|
||||
LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-ft.cc
|
||||
|
||||
LIBHARFBUZZ_CFLAGS += $(HARFBUZZ_CFLAGS)
|
||||
|
||||
# For use by libfontmanager:
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBHARFBUZZ_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjharfbuzz/jharfbuzz.lib
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBHARFBUZZ_LIBS := -ljharfbuzz
|
||||
endif
|
||||
|
||||
LIBHARFBUZZ_EXTRA_HEADER_DIRS := \
|
||||
libjharfbuzz/hb-ucdn \
|
||||
#
|
||||
|
||||
LIBHARFBUZZ_OPTIMIZATION := HIGH
|
||||
|
||||
LIBHARFBUZZ_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \
|
||||
NAME := jharfbuzz, \
|
||||
EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \
|
||||
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
|
||||
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
|
||||
OPTIMIZATION := $(LIBHARFBUZZ_OPTIMIZATION), \
|
||||
CFLAGS_windows = -DCC_NOEX, \
|
||||
EXTRA_HEADER_DIRS := $(LIBHARFBUZZ_EXTRA_HEADER_DIRS), \
|
||||
WARNINGS_AS_ERRORS_xlc := false, \
|
||||
DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing, \
|
||||
DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
|
||||
maybe-uninitialized class-memaccess, \
|
||||
DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
|
||||
tautological-constant-out-of-range-compare int-to-pointer-cast \
|
||||
undef missing-field-initializers, \
|
||||
DISABLED_WARNINGS_C_solstudio := \
|
||||
E_INTEGER_OVERFLOW_DETECTED \
|
||||
E_ARG_INCOMPATIBLE_WITH_ARG_L \
|
||||
E_ENUM_VAL_OVERFLOWS_INT_MAX, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := \
|
||||
truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
|
||||
hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \
|
||||
LDFLAGS := $(LIBHARFBUZZ_LDFLAGS), \
|
||||
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
|
||||
LDFLAGS_aix := -Wl$(COMMA)-berok, \
|
||||
LIBS := $(BUILD_LIBHARFBUZZ), \
|
||||
LIBS_unix := $(LIBM) $(LIBCXX), \
|
||||
LIBS_macosx := -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
|
||||
LIBS_windows := user32.lib, \
|
||||
))
|
||||
|
||||
ifeq ($(FREETYPE_TO_USE), bundled)
|
||||
$(BUILD_LIBHARFBUZZ): $(BUILD_LIBFREETYPE)
|
||||
endif
|
||||
|
||||
TARGETS += $(BUILD_LIBHARFBUZZ)
|
||||
LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
|
||||
|
||||
endif
|
||||
|
||||
###########################################################################
|
||||
|
||||
LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
|
||||
libjharfbuzz \
|
||||
libharfbuzz \
|
||||
common/awt \
|
||||
common/font \
|
||||
libawt/java2d \
|
||||
@@ -678,10 +615,10 @@ LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
|
||||
libawt/java2d/loops \
|
||||
#
|
||||
|
||||
LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) $(HARFBUZZ_FLAGS)
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS) $(LIBFREETYPE_LIBS)
|
||||
LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS)
|
||||
|
||||
LIBFONTMANAGER_OPTIMIZATION := HIGH
|
||||
LIBFONTMANAGER_OPTIMIZATION := HIGHEST
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
|
||||
@@ -720,18 +657,13 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
||||
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \
|
||||
OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \
|
||||
CFLAGS_windows = -DCC_NOEX, \
|
||||
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
|
||||
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS) $(HARFBUZZ_EXTRA_HEADER_DIRS), \
|
||||
EXTRA_SRC := $(LIBFONTMANAGER_EXTRA_SRC), \
|
||||
WARNINGS_AS_ERRORS_xlc := false, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare unused-function int-to-pointer-cast, \
|
||||
DISABLED_WARNINGS_clang := sign-compare, \
|
||||
DISABLED_WARNINGS_C_solstudio := \
|
||||
E_INTEGER_OVERFLOW_DETECTED \
|
||||
E_ARG_INCOMPATIBLE_WITH_ARG_L \
|
||||
E_ENUM_VAL_OVERFLOWS_INT_MAX, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := \
|
||||
truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
|
||||
hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
|
||||
DISABLED_WARNINGS_microsoft := 4018 4146 4244 4996 4996 4146 4334 4819 4101 4068 4805 4138, \
|
||||
DISABLED_WARNINGS_gcc := $(HARFBUZZ_DISABLED_WARNINGS_gcc), \
|
||||
DISABLED_WARNINGS_CXX_gcc := $(HARFBUZZ_DISABLED_WARNINGS_CXX_gcc), \
|
||||
DISABLED_WARNINGS_clang := $(HARFBUZZ_DISABLED_WARNINGS_clang), \
|
||||
DISABLED_WARNINGS_microsoft := $(HARFBUZZ_DISABLED_WARNINGS_microsoft), \
|
||||
LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
|
||||
$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
@@ -739,17 +671,13 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
||||
LDFLAGS_aix := -Wl$(COMMA)-berok, \
|
||||
LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
|
||||
LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
|
||||
LIBS_macosx := -lawt_lwawt, \
|
||||
LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
|
||||
LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
|
||||
$(WIN_AWT_LIB), \
|
||||
))
|
||||
|
||||
$(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
|
||||
|
||||
ifeq ($(USE_EXTERNAL_HARFBUZZ), false)
|
||||
$(BUILD_LIBFONTMANAGER): $(BUILD_LIBHARFBUZZ)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt)
|
||||
endif
|
||||
@@ -936,8 +864,7 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||
$(LIBM) -lpthread -liconv -losxapp \
|
||||
-framework ApplicationServices \
|
||||
-framework Foundation \
|
||||
-framework Cocoa \
|
||||
-framework JavaNativeFoundation
|
||||
-framework Cocoa
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib
|
||||
else
|
||||
@@ -1033,7 +960,6 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-framework Cocoa \
|
||||
-framework Security \
|
||||
-framework ExceptionHandling \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework JavaRuntimeSupport \
|
||||
-framework OpenGL \
|
||||
-framework QuartzCore -ljava, \
|
||||
@@ -1071,7 +997,6 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-framework Cocoa \
|
||||
-framework Carbon \
|
||||
-framework ApplicationServices \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework JavaRuntimeSupport \
|
||||
-ljava -ljvm, \
|
||||
))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -110,9 +110,9 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := \
|
||||
-lobjc \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework CoreServices \
|
||||
-framework Security \
|
||||
-framework Foundation \
|
||||
$(JDKLIB_LIBS), \
|
||||
))
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := \
|
||||
-ljava \
|
||||
-framework Accelerate \
|
||||
-framework ApplicationServices \
|
||||
-framework AudioToolbox \
|
||||
@@ -103,13 +104,14 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-framework Cocoa \
|
||||
-framework Security \
|
||||
-framework ExceptionHandling \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework JavaRuntimeSupport \
|
||||
-framework OpenGL \
|
||||
-framework IOSurface \
|
||||
-framework QuartzCore, \
|
||||
))
|
||||
|
||||
$(BUILD_LIBOSXAPP): $(call FindLib, java.base, java)
|
||||
|
||||
TARGETS += $(BUILD_LIBOSXAPP)
|
||||
|
||||
##############################################################################
|
||||
@@ -127,7 +129,6 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
-losxapp \
|
||||
-framework Cocoa \
|
||||
-framework ApplicationServices \
|
||||
-framework JavaNativeFoundation \
|
||||
-framework JavaRuntimeSupport \
|
||||
-framework SystemConfiguration \
|
||||
$(JDKLIB_LIBS), \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2021, 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
|
||||
@@ -78,8 +78,8 @@ ifneq ($(BUILD_CRYPTO), false)
|
||||
DISABLED_WARNINGS_clang := deprecated-declarations, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := -framework JavaNativeFoundation -framework Cocoa \
|
||||
-framework SystemConfiguration -framework Kerberos, \
|
||||
LIBS := -framework Cocoa -framework SystemConfiguration \
|
||||
-framework Kerberos, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBOSXKRB5)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2015, 2019, 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
|
||||
@@ -65,9 +65,9 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
|
||||
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(SA_CFLAGS) $(SA_CXXFLAGS), \
|
||||
EXTRA_SRC := $(LIBSA_EXTRA_SRC), \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) $(SA_LDFLAGS), \
|
||||
LIBS_linux := -lthread_db $(LIBDL), \
|
||||
LIBS_linux := $(LIBDL), \
|
||||
LIBS_solaris := -ldl -ldemangle -lthread -lproc, \
|
||||
LIBS_macosx := -framework Foundation -framework JavaNativeFoundation \
|
||||
LIBS_macosx := -framework Foundation \
|
||||
-framework JavaRuntimeSupport -framework Security -framework CoreFoundation, \
|
||||
LIBS_windows := dbgeng.lib, \
|
||||
))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2015, 2021, 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
|
||||
@@ -76,11 +76,13 @@ else
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libTestMainKeyWindow := -ObjC
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := -framework Cocoa \
|
||||
-framework JavaNativeFoundation
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := \
|
||||
-framework Cocoa
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestDynamicStore := \
|
||||
-framework Cocoa -framework SystemConfiguration
|
||||
else
|
||||
BUILD_JDK_JTREG_EXCLUDE += libTestMainKeyWindow.c
|
||||
BUILD_JDK_JTREG_EXCLUDE += libTestMainKeyWindow.m
|
||||
BUILD_JDK_JTREG_EXCLUDE += libTestDynamicStore.m
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
@@ -54,4 +54,5 @@ jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs,
|
||||
jdk.hotspot.agent
|
||||
jdk.hotspot.agent,
|
||||
jdk.jcmd
|
||||
|
||||
1183
src/hotspot/cpu/aarch64/aarch64-asmtest.py
Normal file
1183
src/hotspot/cpu/aarch64/aarch64-asmtest.py
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -164,14 +164,11 @@ define(`BFM_INSN',`// This pattern is automatically generated from aarch64_ad.m4
|
||||
instruct $4$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift_count, immI rshift_count)
|
||||
%{
|
||||
match(Set dst EXTEND($1, $3, src, lshift_count, rshift_count));
|
||||
// Make sure we are not going to exceed what $4 can do.
|
||||
predicate((unsigned int)n->in(2)->get_int() <= $2
|
||||
&& (unsigned int)n->in(1)->in(2)->get_int() <= $2);
|
||||
|
||||
ins_cost(INSN_COST * 2);
|
||||
format %{ "$4 $dst, $src, $rshift_count - $lshift_count, #$2 - $lshift_count" %}
|
||||
ins_encode %{
|
||||
int lshift = $lshift_count$$constant, rshift = $rshift_count$$constant;
|
||||
int lshift = $lshift_count$$constant & $2;
|
||||
int rshift = $rshift_count$$constant & $2;
|
||||
int s = $2 - lshift;
|
||||
int r = (rshift - lshift) & $2;
|
||||
__ $4(as_Register($dst$$reg),
|
||||
@@ -235,46 +232,44 @@ instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask m
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
|
||||
define(`UBFIZ_INSN', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// We can use ubfiz when masking by a positive number and then left shifting the result.
|
||||
define(`UBFIZ_INSN', `// We can use ubfiz when masking by a positive number and then left shifting the result.
|
||||
// We know that the mask is positive because imm$1_bitmask guarantees it.
|
||||
instruct $2$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, imm$1_bitmask mask)
|
||||
instruct $3$1$8(iReg$2NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, $7 mask)
|
||||
%{
|
||||
match(Set dst (LShift$1 (And$1 src mask) lshift));
|
||||
predicate((unsigned int)n->in(2)->get_int() <= $3 &&
|
||||
(exact_log2$5(n->in(1)->in(2)->get_$4()+1) + (unsigned int)n->in(2)->get_int()) <= ($3+1));
|
||||
ifelse($8,,
|
||||
match(Set dst (LShift$1 (And$1 src mask) lshift));,
|
||||
match(Set dst ($8 (LShift$1 (And$1 src mask) lshift)));)
|
||||
ifelse($8,,
|
||||
predicate(($6(n->in(1)->in(2)->get_$5() + 1) + (n->in(2)->get_int() & $4)) <= ($4 + 1));,
|
||||
predicate(($6(n->in(1)->in(1)->in(2)->get_$5() + 1) + (n->in(1)->in(2)->get_int() & $4)) <= 31);)
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$2 $dst, $src, $lshift, $mask" %}
|
||||
format %{ "$3 $dst, $src, $lshift, $mask" %}
|
||||
ins_encode %{
|
||||
int lshift = $lshift$$constant;
|
||||
int lshift = $lshift$$constant & $4;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2$5(mask+1);
|
||||
__ $2(as_Register($dst$$reg),
|
||||
int width = $6(mask+1);
|
||||
__ $3(as_Register($dst$$reg),
|
||||
as_Register($src$$reg), lshift, width);
|
||||
%}
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
')
|
||||
UBFIZ_INSN(I, ubfizw, 31, int)
|
||||
UBFIZ_INSN(L, ubfiz, 63, long, _long)
|
||||
UBFIZ_INSN(I, I, ubfizw, 31, int, exact_log2, immI_bitmask)
|
||||
UBFIZ_INSN(L, L, ubfiz, 63, long, exact_log2_long, immL_bitmask)
|
||||
UBFIZ_INSN(I, L, ubfizw, 31, int, exact_log2, immI_bitmask, ConvI2L)
|
||||
UBFIZ_INSN(L, I, ubfiz, 63, long, exact_log2_long, immL_positive_bitmaskI, ConvL2I)
|
||||
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// If there is a convert I to L block between and AndI and a LShiftL, we can also match ubfiz
|
||||
instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask mask)
|
||||
define(`BFX1_INSN', `// If there is a convert $1 to $2 block between and And$1 and a LShift$2, we can also match ubfiz
|
||||
instruct ubfiz$1Conv$3$9(iReg$2NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, $8 mask)
|
||||
%{
|
||||
match(Set dst (LShiftL (ConvI2L(AndI src mask)) lshift));
|
||||
predicate((unsigned int)n->in(2)->get_int() <= 31 &&
|
||||
(exact_log2((unsigned int)n->in(1)->in(1)->in(2)->get_int()+1) + (unsigned int)n->in(2)->get_int()) <= 32);
|
||||
match(Set dst (LShift$2 (Conv$3 (And$1 src mask)) lshift));
|
||||
predicate(($4(n->in(1)->in(1)->in(2)->$5() + 1) + (n->in(2)->get_int() & $6)) <= $7);
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ubfiz $dst, $src, $lshift, $mask" %}
|
||||
ins_encode %{
|
||||
int lshift = $lshift$$constant;
|
||||
int lshift = $lshift$$constant & $6;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2(mask+1);
|
||||
__ ubfiz(as_Register($dst$$reg),
|
||||
@@ -282,7 +277,20 @@ instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask
|
||||
%}
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
|
||||
')dnl
|
||||
BFX1_INSN(I, L, I2L, exact_log2, get_int, 63, (63 + 1), immI_bitmask)
|
||||
BFX1_INSN(L, I, L2I, exact_log2_long, get_long, 31, 31, immL_positive_bitmaskI, x)
|
||||
// Can skip int2long conversions after AND with small bitmask
|
||||
instruct ubfizIConvI2LAndI(iRegLNoSp dst, iRegI src, immI_bitmask msk)
|
||||
%{
|
||||
match(Set dst (ConvI2L (AndI src msk)));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ubfiz $dst, $src, 0, exact_log2($msk + 1) " %}
|
||||
ins_encode %{
|
||||
__ ubfiz(as_Register($dst$$reg), as_Register($src$$reg), 0, exact_log2($msk$$constant + 1));
|
||||
%}
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
|
||||
// Rotations dnl
|
||||
define(`EXTRACT_INSN',`
|
||||
@@ -291,7 +299,7 @@ define(`EXTRACT_INSN',`
|
||||
instruct extr$3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI lshift, immI rshift, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 (LShift$1 src1 lshift) (URShift$1 src2 rshift)));
|
||||
predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & $2));
|
||||
predicate(0 == (((n->in(1)->in(2)->get_int() & $2) + (n->in(2)->in(2)->get_int() & $2)) & $2));
|
||||
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "extr $dst, $src1, $src2, #$rshift" %}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -135,7 +135,20 @@ void AbstractInterpreter::layout_activation(Method* method,
|
||||
// interpreter_frame_sender_sp interpreter_frame_sender_sp is
|
||||
// the original sp of the caller (the unextended_sp) and
|
||||
// sender_sp is fp+8/16 (32bit/64bit) XXX
|
||||
intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1;
|
||||
//
|
||||
// The interpreted method entry on AArch64 aligns SP to 16 bytes
|
||||
// before generating the fixed part of the activation frame. So there
|
||||
// may be a gap between the locals block and the saved sender SP. For
|
||||
// an interpreted caller we need to recreate this gap and exactly
|
||||
// align the incoming parameters with the caller's temporary
|
||||
// expression stack. For other types of caller frame it doesn't
|
||||
// matter.
|
||||
intptr_t* locals;
|
||||
if (caller->is_interpreted_frame()) {
|
||||
locals = caller->interpreter_frame_last_sp() + caller_actual_parameters - 1;
|
||||
} else {
|
||||
locals = interpreter_frame->sender_sp() + max_locals - 1;
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
if (caller->is_interpreted_frame()) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -188,7 +188,7 @@ public:
|
||||
static inline uint32_t extract(uint32_t val, int msb, int lsb) {
|
||||
int nbits = msb - lsb + 1;
|
||||
assert_cond(msb >= lsb);
|
||||
uint32_t mask = (1U << nbits) - 1;
|
||||
uint32_t mask = checked_cast<uint32_t>(right_n_bits(nbits));
|
||||
uint32_t result = val >> lsb;
|
||||
result &= mask;
|
||||
return result;
|
||||
@@ -203,7 +203,7 @@ public:
|
||||
int nbits = msb - lsb + 1;
|
||||
guarantee(val < (1U << nbits), "Field too big for insn");
|
||||
assert_cond(msb >= lsb);
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
|
||||
val <<= lsb;
|
||||
mask <<= lsb;
|
||||
unsigned target = *(unsigned *)a;
|
||||
@@ -217,7 +217,7 @@ public:
|
||||
int64_t chk = val >> (nbits - 1);
|
||||
guarantee (chk == -1 || chk == 0, "Field too big for insn");
|
||||
unsigned uval = val;
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
|
||||
uval &= mask;
|
||||
uval <<= lsb;
|
||||
mask <<= lsb;
|
||||
@@ -229,9 +229,9 @@ public:
|
||||
|
||||
void f(unsigned val, int msb, int lsb) {
|
||||
int nbits = msb - lsb + 1;
|
||||
guarantee(val < (1U << nbits), "Field too big for insn");
|
||||
guarantee(val < (1ULL << nbits), "Field too big for insn");
|
||||
assert_cond(msb >= lsb);
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
|
||||
val <<= lsb;
|
||||
mask <<= lsb;
|
||||
insn |= val;
|
||||
@@ -250,7 +250,7 @@ public:
|
||||
int64_t chk = val >> (nbits - 1);
|
||||
guarantee (chk == -1 || chk == 0, "Field too big for insn");
|
||||
unsigned uval = val;
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits));
|
||||
uval &= mask;
|
||||
f(uval, lsb + nbits - 1, lsb);
|
||||
}
|
||||
@@ -275,7 +275,7 @@ public:
|
||||
|
||||
unsigned get(int msb = 31, int lsb = 0) {
|
||||
int nbits = msb - lsb + 1;
|
||||
unsigned mask = ((1U << nbits) - 1) << lsb;
|
||||
unsigned mask = checked_cast<unsigned>(right_n_bits(nbits)) << lsb;
|
||||
assert_cond((bits & mask) == mask);
|
||||
return (insn & mask) >> lsb;
|
||||
}
|
||||
@@ -295,7 +295,7 @@ class PrePost {
|
||||
int _offset;
|
||||
Register _r;
|
||||
public:
|
||||
PrePost(Register reg, int o) : _r(reg), _offset(o) { }
|
||||
PrePost(Register reg, int o) : _offset(o), _r(reg) { }
|
||||
int offset() { return _offset; }
|
||||
Register reg() { return _r; }
|
||||
};
|
||||
@@ -306,10 +306,12 @@ public:
|
||||
};
|
||||
class Post : public PrePost {
|
||||
Register _idx;
|
||||
bool _is_postreg;
|
||||
public:
|
||||
Post(Register reg, int o) : PrePost(reg, o) { _idx = NULL; }
|
||||
Post(Register reg, Register idx) : PrePost(reg, 0) { _idx = idx; }
|
||||
Post(Register reg, int o) : PrePost(reg, o) { _idx = NULL; _is_postreg = false; }
|
||||
Post(Register reg, Register idx) : PrePost(reg, 0) { _idx = idx; _is_postreg = true; }
|
||||
Register idx_reg() { return _idx; }
|
||||
bool is_postreg() {return _is_postreg; }
|
||||
};
|
||||
|
||||
namespace ext
|
||||
@@ -330,7 +332,7 @@ class Address {
|
||||
ext::operation _op;
|
||||
public:
|
||||
extend() { }
|
||||
extend(int s, int o, ext::operation op) : _shift(s), _option(o), _op(op) { }
|
||||
extend(int s, int o, ext::operation op) : _option(o), _shift(s), _op(op) { }
|
||||
int option() const{ return _option; }
|
||||
int shift() const { return _shift; }
|
||||
ext::operation op() const { return _op; }
|
||||
@@ -375,32 +377,31 @@ class Address {
|
||||
Address()
|
||||
: _mode(no_mode) { }
|
||||
Address(Register r)
|
||||
: _mode(base_plus_offset), _base(r), _offset(0), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(0), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, int o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, long long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned int o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
#ifdef ASSERT
|
||||
Address(Register r, ByteSize disp)
|
||||
: _mode(base_plus_offset), _base(r), _offset(in_bytes(disp)),
|
||||
_index(noreg), _target(0) { }
|
||||
: _base(r), _index(noreg), _offset(in_bytes(disp)), _mode(base_plus_offset), _target(0) { }
|
||||
#endif
|
||||
Address(Register r, Register r1, extend ext = lsl())
|
||||
: _mode(base_plus_offset_reg), _base(r), _index(r1),
|
||||
_ext(ext), _offset(0), _target(0) { }
|
||||
: _base(r), _index(r1), _offset(0), _mode(base_plus_offset_reg),
|
||||
_ext(ext), _target(0) { }
|
||||
Address(Pre p)
|
||||
: _mode(pre), _base(p.reg()), _offset(p.offset()) { }
|
||||
: _base(p.reg()), _offset(p.offset()), _mode(pre) { }
|
||||
Address(Post p)
|
||||
: _mode(p.idx_reg() == NULL ? post : post_reg), _base(p.reg()),
|
||||
_offset(p.offset()), _target(0), _index(p.idx_reg()) { }
|
||||
: _base(p.reg()), _index(p.idx_reg()), _offset(p.offset()),
|
||||
_mode(p.is_postreg() ? post_reg : post), _target(0) { }
|
||||
Address(address target, RelocationHolder const& rspec)
|
||||
: _mode(literal),
|
||||
_rspec(rspec),
|
||||
@@ -409,7 +410,7 @@ class Address {
|
||||
Address(address target, relocInfo::relocType rtype = relocInfo::external_word_type);
|
||||
Address(Register base, RegisterOrConstant index, extend ext = lsl())
|
||||
: _base (base),
|
||||
_ext(ext), _offset(0), _target(0) {
|
||||
_offset(0), _ext(ext), _target(0) {
|
||||
if (index.is_register()) {
|
||||
_mode = base_plus_offset_reg;
|
||||
_index = index.as_register();
|
||||
@@ -481,8 +482,7 @@ class Address {
|
||||
if (size == 0) // It's a byte
|
||||
i->f(_ext.shift() >= 0, 12);
|
||||
else {
|
||||
if (_ext.shift() > 0)
|
||||
assert(_ext.shift() == (int)size, "bad shift");
|
||||
assert(_ext.shift() <= 0 || _ext.shift() == (int)size, "bad shift");
|
||||
i->f(_ext.shift() > 0, 12);
|
||||
}
|
||||
i->f(0b10, 11, 10);
|
||||
@@ -559,14 +559,7 @@ class Address {
|
||||
|
||||
void lea(MacroAssembler *, Register) const;
|
||||
|
||||
static bool offset_ok_for_immed(int64_t offset, int shift = 0) {
|
||||
unsigned mask = (1 << shift) - 1;
|
||||
if (offset < 0 || offset & mask) {
|
||||
return (uabs((julong)offset) < (1 << (20 - 12))); // Unscaled offset
|
||||
} else {
|
||||
return ((offset >> shift) < (1 << (21 - 10 + 1))); // Scaled, unsigned offset
|
||||
}
|
||||
}
|
||||
static bool offset_ok_for_immed(int64_t offset, uint shift = 0);
|
||||
};
|
||||
|
||||
// Convience classes
|
||||
@@ -609,7 +602,9 @@ class InternalAddress: public Address {
|
||||
InternalAddress(address target) : Address(target, relocInfo::internal_word_type) {}
|
||||
};
|
||||
|
||||
const int FPUStateSizeInWords = 32 * 2;
|
||||
const int FPUStateSizeInWords = FloatRegisterImpl::number_of_registers *
|
||||
FloatRegisterImpl::save_slots_per_register;
|
||||
|
||||
typedef enum {
|
||||
PLDL1KEEP = 0b00000, PLDL1STRM, PLDL2KEEP, PLDL2STRM, PLDL3KEEP, PLDL3STRM,
|
||||
PSTL1KEEP = 0b10000, PSTL1STRM, PSTL2KEEP, PSTL2STRM, PSTL3KEEP, PSTL3STRM,
|
||||
@@ -806,32 +801,34 @@ public:
|
||||
#undef INSN
|
||||
|
||||
// Bitfield
|
||||
#define INSN(NAME, opcode) \
|
||||
#define INSN(NAME, opcode, size) \
|
||||
void NAME(Register Rd, Register Rn, unsigned immr, unsigned imms) { \
|
||||
starti; \
|
||||
guarantee(size == 1 || (immr < 32 && imms < 32), "incorrect immr/imms");\
|
||||
f(opcode, 31, 22), f(immr, 21, 16), f(imms, 15, 10); \
|
||||
zrf(Rn, 5), rf(Rd, 0); \
|
||||
}
|
||||
|
||||
INSN(sbfmw, 0b0001001100);
|
||||
INSN(bfmw, 0b0011001100);
|
||||
INSN(ubfmw, 0b0101001100);
|
||||
INSN(sbfm, 0b1001001101);
|
||||
INSN(bfm, 0b1011001101);
|
||||
INSN(ubfm, 0b1101001101);
|
||||
INSN(sbfmw, 0b0001001100, 0);
|
||||
INSN(bfmw, 0b0011001100, 0);
|
||||
INSN(ubfmw, 0b0101001100, 0);
|
||||
INSN(sbfm, 0b1001001101, 1);
|
||||
INSN(bfm, 0b1011001101, 1);
|
||||
INSN(ubfm, 0b1101001101, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
// Extract
|
||||
#define INSN(NAME, opcode) \
|
||||
#define INSN(NAME, opcode, size) \
|
||||
void NAME(Register Rd, Register Rn, Register Rm, unsigned imms) { \
|
||||
starti; \
|
||||
guarantee(size == 1 || imms < 32, "incorrect imms"); \
|
||||
f(opcode, 31, 21), f(imms, 15, 10); \
|
||||
rf(Rm, 16), rf(Rn, 5), rf(Rd, 0); \
|
||||
zrf(Rm, 16), zrf(Rn, 5), zrf(Rd, 0); \
|
||||
}
|
||||
|
||||
INSN(extrw, 0b00010011100);
|
||||
INSN(extr, 0b10010011110);
|
||||
INSN(extrw, 0b00010011100, 0);
|
||||
INSN(extr, 0b10010011110, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -1125,7 +1122,7 @@ public:
|
||||
Register Rn, enum operand_size sz, int op, bool ordered) {
|
||||
starti;
|
||||
f(sz, 31, 30), f(0b001000, 29, 24), f(op, 23, 21);
|
||||
rf(Rs, 16), f(ordered, 15), rf(Rt2, 10), srf(Rn, 5), zrf(Rt1, 0);
|
||||
rf(Rs, 16), f(ordered, 15), zrf(Rt2, 10), srf(Rn, 5), zrf(Rt1, 0);
|
||||
}
|
||||
|
||||
void load_exclusive(Register dst, Register addr,
|
||||
@@ -1218,8 +1215,8 @@ public:
|
||||
/* The size bit is in bit 30, not 31 */
|
||||
sz = (operand_size)(sz == word ? 0b00:0b01);
|
||||
}
|
||||
f(sz, 31, 30), f(0b001000, 29, 24), f(1, 23), f(a, 22), f(1, 21);
|
||||
rf(Rs, 16), f(r, 15), f(0b11111, 14, 10), rf(Rn, 5), rf(Rt, 0);
|
||||
f(sz, 31, 30), f(0b001000, 29, 24), f(not_pair ? 1 : 0, 23), f(a, 22), f(1, 21);
|
||||
zrf(Rs, 16), f(r, 15), f(0b11111, 14, 10), srf(Rn, 5), zrf(Rt, 0);
|
||||
}
|
||||
|
||||
// CAS
|
||||
@@ -1254,7 +1251,7 @@ public:
|
||||
enum operand_size sz, int op1, int op2, bool a, bool r) {
|
||||
starti;
|
||||
f(sz, 31, 30), f(0b111000, 29, 24), f(a, 23), f(r, 22), f(1, 21);
|
||||
rf(Rs, 16), f(op1, 15), f(op2, 14, 12), f(0, 11, 10), rf(Rn, 5), zrf(Rt, 0);
|
||||
zrf(Rs, 16), f(op1, 15), f(op2, 14, 12), f(0, 11, 10), srf(Rn, 5), zrf(Rt, 0);
|
||||
}
|
||||
|
||||
#define INSN(NAME, NAME_A, NAME_L, NAME_AL, op1, op2) \
|
||||
@@ -1476,6 +1473,7 @@ public:
|
||||
void NAME(Register Rd, Register Rn, Register Rm, \
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) { \
|
||||
starti; \
|
||||
guarantee(size == 1 || shift < 32, "incorrect shift"); \
|
||||
f(N, 21); \
|
||||
zrf(Rm, 16), zrf(Rn, 5), zrf(Rd, 0); \
|
||||
op_shifted_reg(0b01010, kind, shift, size, op); \
|
||||
@@ -1538,6 +1536,7 @@ void mvnw(Register Rd, Register Rm,
|
||||
starti; \
|
||||
f(0, 21); \
|
||||
assert_cond(kind != ROR); \
|
||||
guarantee(size == 1 || shift < 32, "incorrect shift");\
|
||||
zrf(Rd, 0), zrf(Rn, 5), zrf(Rm, 16); \
|
||||
op_shifted_reg(0b01011, kind, shift, size, op); \
|
||||
}
|
||||
@@ -1566,7 +1565,7 @@ void mvnw(Register Rd, Register Rm,
|
||||
void add_sub_extended_reg(unsigned op, unsigned decode,
|
||||
Register Rd, Register Rn, Register Rm,
|
||||
unsigned opt, ext::operation option, unsigned imm) {
|
||||
guarantee(imm <= 4, "shift amount must be < 4");
|
||||
guarantee(imm <= 4, "shift amount must be <= 4");
|
||||
f(op, 31, 29), f(decode, 28, 24), f(opt, 23, 22), f(1, 21);
|
||||
f(option, 15, 13), f(imm, 12, 10);
|
||||
}
|
||||
@@ -1651,7 +1650,7 @@ void mvnw(Register Rd, Register Rm,
|
||||
f(o2, 10);
|
||||
f(o3, 4);
|
||||
f(nzcv, 3, 0);
|
||||
f(imm5, 20, 16), rf(Rn, 5);
|
||||
f(imm5, 20, 16), zrf(Rn, 5);
|
||||
}
|
||||
|
||||
#define INSN(NAME, op) \
|
||||
@@ -1852,12 +1851,16 @@ public:
|
||||
INSN(fdivs, 0b000, 0b00, 0b0001);
|
||||
INSN(fadds, 0b000, 0b00, 0b0010);
|
||||
INSN(fsubs, 0b000, 0b00, 0b0011);
|
||||
INSN(fmaxs, 0b000, 0b00, 0b0100);
|
||||
INSN(fmins, 0b000, 0b00, 0b0101);
|
||||
INSN(fnmuls, 0b000, 0b00, 0b1000);
|
||||
|
||||
INSN(fmuld, 0b000, 0b01, 0b0000);
|
||||
INSN(fdivd, 0b000, 0b01, 0b0001);
|
||||
INSN(faddd, 0b000, 0b01, 0b0010);
|
||||
INSN(fsubd, 0b000, 0b01, 0b0011);
|
||||
INSN(fmaxd, 0b000, 0b01, 0b0100);
|
||||
INSN(fmind, 0b000, 0b01, 0b0101);
|
||||
INSN(fnmuld, 0b000, 0b01, 0b1000);
|
||||
|
||||
#undef INSN
|
||||
@@ -2000,6 +2003,21 @@ public:
|
||||
#undef INSN
|
||||
#undef INSN1
|
||||
|
||||
// Floating-point compare. 3-registers versions (scalar).
|
||||
#define INSN(NAME, sz, e) \
|
||||
void NAME(FloatRegister Vd, FloatRegister Vn, FloatRegister Vm) { \
|
||||
starti; \
|
||||
f(0b01111110, 31, 24), f(e, 23), f(sz, 22), f(1, 21), rf(Vm, 16); \
|
||||
f(0b111011, 15, 10), rf(Vn, 5), rf(Vd, 0); \
|
||||
} \
|
||||
|
||||
INSN(facged, 1, 0); // facge-double
|
||||
INSN(facges, 0, 0); // facge-single
|
||||
INSN(facgtd, 1, 1); // facgt-double
|
||||
INSN(facgts, 0, 1); // facgt-single
|
||||
|
||||
#undef INSN
|
||||
|
||||
// Floating-point Move (immediate)
|
||||
private:
|
||||
unsigned pack(double value);
|
||||
@@ -2116,7 +2134,12 @@ public:
|
||||
}
|
||||
void ld_st(FloatRegister Vt, SIMD_Arrangement T, Register Xn,
|
||||
int imm, int op1, int op2, int regs) {
|
||||
guarantee(T <= T1Q && imm == SIMD_Size_in_bytes[T] * regs, "bad offset");
|
||||
|
||||
bool replicate = op2 >> 2 == 3;
|
||||
// post-index value (imm) is formed differently for replicate/non-replicate ld* instructions
|
||||
int expectedImmediate = replicate ? regs * (1 << (T >> 1)) : SIMD_Size_in_bytes[T] * regs;
|
||||
guarantee(T < T1Q , "incorrect arrangement");
|
||||
guarantee(imm == expectedImmediate, "bad offset");
|
||||
starti;
|
||||
f(0,31), f((int)T & 1, 30);
|
||||
f(op1 | 0b100, 29, 21), f(0b11111, 20, 16), f(op2, 15, 12);
|
||||
@@ -2223,39 +2246,62 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc, opc2) \
|
||||
#define INSN(NAME, opc, opc2, acceptT2D) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
|
||||
guarantee(T != T1Q && T != T1D, "incorrect arrangement"); \
|
||||
if (!acceptT2D) guarantee(T != T2D, "incorrect arrangement"); \
|
||||
starti; \
|
||||
f(0, 31), f((int)T & 1, 30), f(opc, 29), f(0b01110, 28, 24); \
|
||||
f((int)T >> 1, 23, 22), f(1, 21), rf(Vm, 16), f(opc2, 15, 10); \
|
||||
rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(addv, 0, 0b100001);
|
||||
INSN(subv, 1, 0b100001);
|
||||
INSN(mulv, 0, 0b100111);
|
||||
INSN(mlav, 0, 0b100101);
|
||||
INSN(mlsv, 1, 0b100101);
|
||||
INSN(sshl, 0, 0b010001);
|
||||
INSN(ushl, 1, 0b010001);
|
||||
INSN(addv, 0, 0b100001, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(subv, 1, 0b100001, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(mulv, 0, 0b100111, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(mlav, 0, 0b100101, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(mlsv, 1, 0b100101, false); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(sshl, 0, 0b010001, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(ushl, 1, 0b010001, true); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
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
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc, opc2) \
|
||||
#define INSN(NAME, opc, opc2, accepted) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn) { \
|
||||
guarantee(T != T1Q && T != T1D, "incorrect arrangement"); \
|
||||
if (accepted < 3) guarantee(T != T2D, "incorrect arrangement"); \
|
||||
if (accepted < 2) guarantee(T != T2S, "incorrect arrangement"); \
|
||||
if (accepted < 1) guarantee(T == T8B || T == T16B, "incorrect arrangement"); \
|
||||
starti; \
|
||||
f(0, 31), f((int)T & 1, 30), f(opc, 29), f(0b01110, 28, 24); \
|
||||
f((int)T >> 1, 23, 22), f(opc2, 21, 10); \
|
||||
rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(absr, 0, 0b100000101110);
|
||||
INSN(negr, 1, 0b100000101110);
|
||||
INSN(notr, 1, 0b100000010110);
|
||||
INSN(addv, 0, 0b110001101110);
|
||||
INSN(cls, 0, 0b100000010010);
|
||||
INSN(clz, 1, 0b100000010010);
|
||||
INSN(cnt, 0, 0b100000010110);
|
||||
INSN(absr, 0, 0b100000101110, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
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(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
|
||||
INSN(uaddlp, 1, 0b100000001010, 2); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S
|
||||
INSN(uaddlv, 1, 0b110000001110, 1); // accepted arrangements: T8B, T16B, T4H, T8H, T4S
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn) { \
|
||||
starti; \
|
||||
assert(T == T4S, "arrangement must be T4S"); \
|
||||
f(0, 31), f((int)T & 1, 30), f(0b101110, 29, 24), f(opc, 23), \
|
||||
f(T == T4S ? 0 : 1, 22), f(0b110000111110, 21, 10); rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(fmaxv, 0);
|
||||
INSN(fminv, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -2266,7 +2312,7 @@ public:
|
||||
starti; \
|
||||
assert(lsl == 0 || \
|
||||
((T == T4H || T == T8H) && lsl == 8) || \
|
||||
((T == T2S || T == T4S) && ((lsl >> 3) < 4)), "invalid shift"); \
|
||||
((T == T2S || T == T4S) && ((lsl >> 3) < 4) && ((lsl & 7) == 0)), "invalid shift");\
|
||||
cmode |= lsl >> 2; \
|
||||
if (T == T4H || T == T8H) cmode |= 0b1000; \
|
||||
if (!(T == T4H || T == T8H || T == T2S || T == T4S)) { \
|
||||
@@ -2300,6 +2346,8 @@ public:
|
||||
INSN(fsub, 0, 1, 0b110101);
|
||||
INSN(fmla, 0, 0, 0b110011);
|
||||
INSN(fmls, 0, 1, 0b110011);
|
||||
INSN(fmax, 0, 0, 0b111101);
|
||||
INSN(fmin, 0, 1, 0b111101);
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -2359,7 +2407,7 @@ public:
|
||||
|
||||
// FMLA/FMLS - Vector - Scalar
|
||||
INSN(fmlavs, 0, 0b0001);
|
||||
INSN(fmlsvs, 0, 0b0001);
|
||||
INSN(fmlsvs, 0, 0b0101);
|
||||
// FMULX - Vector - Scalar
|
||||
INSN(fmulxvs, 1, 0b1001);
|
||||
|
||||
@@ -2425,7 +2473,22 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
void ushll(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
#define INSN(NAME, opc, opc2, isSHR) \
|
||||
void NAME(FloatRegister Vd, FloatRegister Vn, int shift){ \
|
||||
starti; \
|
||||
int encodedShift = isSHR ? 128 - shift : 64 + shift; \
|
||||
f(0b01, 31, 30), f(opc, 29), f(0b111110, 28, 23), \
|
||||
f(encodedShift, 22, 16); f(opc2, 15, 10), rf(Vn, 5), rf(Vd, 0); \
|
||||
}
|
||||
|
||||
INSN(shld, 0, 0b010101, /* isSHR = */ false);
|
||||
INSN(sshrd, 0, 0b000001, /* isSHR = */ true);
|
||||
INSN(ushrd, 1, 0b000001, /* isSHR = */ true);
|
||||
|
||||
#undef INSN
|
||||
|
||||
private:
|
||||
void _ushll(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
|
||||
@@ -2438,8 +2501,16 @@ public:
|
||||
f(0, 31), f(Tb & 1, 30), f(0b1011110, 29, 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);
|
||||
}
|
||||
|
||||
void ushll2(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, SIMD_Arrangement Tb, int shift) {
|
||||
ushll(Vd, Ta, Vn, Tb, shift);
|
||||
assert(Tb == T16B || Tb == T8H || Tb == T4S, "invalid arrangement");
|
||||
_ushll(Vd, Ta, Vn, Tb, shift);
|
||||
}
|
||||
|
||||
// Move from general purpose register
|
||||
@@ -2447,19 +2518,21 @@ public:
|
||||
void mov(FloatRegister Vd, SIMD_Arrangement T, int index, Register Xn) {
|
||||
starti;
|
||||
f(0b01001110000, 31, 21), f(((1 << (T >> 1)) | (index << ((T >> 1) + 1))), 20, 16);
|
||||
f(0b000111, 15, 10), rf(Xn, 5), rf(Vd, 0);
|
||||
f(0b000111, 15, 10), zrf(Xn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
// Move to general purpose register
|
||||
// mov Rd, Vn.T[index]
|
||||
void mov(Register Xd, FloatRegister Vn, SIMD_Arrangement T, int index) {
|
||||
guarantee(T >= T2S && T < T1Q, "only D and S arrangements are supported");
|
||||
starti;
|
||||
f(0, 31), f((T >= T1D) ? 1:0, 30), f(0b001110000, 29, 21);
|
||||
f(((1 << (T >> 1)) | (index << ((T >> 1) + 1))), 20, 16);
|
||||
f(0b001111, 15, 10), rf(Vn, 5), rf(Xd, 0);
|
||||
}
|
||||
|
||||
void pmull(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, FloatRegister Vm, SIMD_Arrangement Tb) {
|
||||
private:
|
||||
void _pmull(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, FloatRegister Vm, SIMD_Arrangement Tb) {
|
||||
starti;
|
||||
assert((Ta == T1Q && (Tb == T1D || Tb == T2D)) ||
|
||||
(Ta == T8H && (Tb == T8B || Tb == T16B)), "Invalid Size specifier");
|
||||
@@ -2467,9 +2540,16 @@ public:
|
||||
f(0, 31), f(Tb & 1, 30), f(0b001110, 29, 24), f(size, 23, 22);
|
||||
f(1, 21), rf(Vm, 16), f(0b111000, 15, 10), rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
public:
|
||||
void pmull(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, FloatRegister Vm, SIMD_Arrangement Tb) {
|
||||
assert(Tb == T1D || Tb == T8B, "pmull assumes T1D or T8B as the second size specifier");
|
||||
_pmull(Vd, Ta, Vn, Vm, Tb);
|
||||
}
|
||||
|
||||
void pmull2(FloatRegister Vd, SIMD_Arrangement Ta, FloatRegister Vn, FloatRegister Vm, SIMD_Arrangement Tb) {
|
||||
assert(Tb == T2D || Tb == T16B, "pmull2 assumes T2D or T16B as the second size specifier");
|
||||
pmull(Vd, Ta, Vn, Vm, Tb);
|
||||
_pmull(Vd, Ta, Vn, Vm, Tb);
|
||||
}
|
||||
|
||||
void uqxtn(FloatRegister Vd, SIMD_Arrangement Tb, FloatRegister Vn, SIMD_Arrangement Ta) {
|
||||
@@ -2486,7 +2566,7 @@ public:
|
||||
starti;
|
||||
assert(T != T1D, "reserved encoding");
|
||||
f(0,31), f((int)T & 1, 30), f(0b001110000, 29, 21);
|
||||
f((1 << (T >> 1)), 20, 16), f(0b000011, 15, 10), rf(Xs, 5), rf(Vd, 0);
|
||||
f((1 << (T >> 1)), 20, 16), f(0b000011, 15, 10), zrf(Xs, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
void dup(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, int index = 0)
|
||||
@@ -2501,6 +2581,7 @@ public:
|
||||
// AdvSIMD ZIP/UZP/TRN
|
||||
#define INSN(NAME, opcode) \
|
||||
void NAME(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister Vm) { \
|
||||
guarantee(T != T1D && T != T1Q, "invalid arrangement"); \
|
||||
starti; \
|
||||
f(0, 31), f(0b001110, 29, 24), f(0, 21), f(0, 15); \
|
||||
f(opcode, 14, 12), f(0b10, 11, 10); \
|
||||
|
||||
@@ -30,4 +30,16 @@
|
||||
#include "asm/codeBuffer.hpp"
|
||||
#include "code/codeCache.hpp"
|
||||
|
||||
|
||||
inline bool Address::offset_ok_for_immed(int64_t offset, uint shift) {
|
||||
uint mask = (1 << shift) - 1;
|
||||
if (offset < 0 || (offset & mask) != 0) {
|
||||
// Unscaled signed offset, encoded in a signed imm9 field.
|
||||
return Assembler::is_simm9(offset);
|
||||
} else {
|
||||
// Scaled unsigned offset, encoded in an unsigned imm12:_ field.
|
||||
return Assembler::is_uimm12(offset >> shift);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // CPU_AARCH64_VM_ASSEMBLER_AARCH64_INLINE_HPP
|
||||
|
||||
49
src/hotspot/cpu/aarch64/atomic_aarch64.hpp
Normal file
49
src/hotspot/cpu/aarch64/atomic_aarch64.hpp
Normal file
@@ -0,0 +1,49 @@
|
||||
/* Copyright (c) 2021, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef CPU_AARCH64_ATOMIC_AARCH64_HPP
|
||||
#define CPU_AARCH64_ATOMIC_AARCH64_HPP
|
||||
|
||||
// Atomic stub implementation.
|
||||
// Default implementations are in atomic_linux_aarch64.S
|
||||
//
|
||||
// All stubs pass arguments the same way
|
||||
// x0: src/dest address
|
||||
// x1: arg1
|
||||
// x2: arg2 (optional)
|
||||
// x3, x8, x9: scratch
|
||||
typedef uint64_t (*aarch64_atomic_stub_t)(volatile void *ptr, uint64_t arg1, uint64_t arg2);
|
||||
|
||||
// Pointers to stubs
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_fetch_add_4_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_fetch_add_8_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_xchg_4_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_xchg_8_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_1_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_4_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_1_relaxed_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_4_relaxed_impl;
|
||||
extern aarch64_atomic_stub_t aarch64_atomic_cmpxchg_8_relaxed_impl;
|
||||
|
||||
#endif // CPU_AARCH64_ATOMIC_AARCH64_HPP
|
||||
@@ -50,13 +50,13 @@ void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
|
||||
}
|
||||
|
||||
RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index, LIR_Opr array)
|
||||
: _throw_index_out_of_bounds_exception(false), _index(index), _array(array) {
|
||||
: _index(index), _array(array), _throw_index_out_of_bounds_exception(false) {
|
||||
assert(info != NULL, "must have info");
|
||||
_info = new CodeEmitInfo(info);
|
||||
}
|
||||
|
||||
RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index)
|
||||
: _throw_index_out_of_bounds_exception(true), _index(index), _array(NULL) {
|
||||
: _index(index), _array(NULL), _throw_index_out_of_bounds_exception(true) {
|
||||
assert(info != NULL, "must have info");
|
||||
_info = new CodeEmitInfo(info);
|
||||
}
|
||||
|
||||
@@ -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 BSD_ONLY(- 1 /* r18 */), // 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 BSD_ONLY(- 1 /* r18 */),
|
||||
pd_last_callee_saved_reg = 26 - 2 BSD_ONLY(- 1 /* r18 */),
|
||||
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 BSD_ONLY(- 1 /* r18 */),
|
||||
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, // like sparc we don't have any of these
|
||||
pd_first_cpu_reg = 0,
|
||||
pd_last_cpu_reg = 16 BSD_ONLY(- 1 /* r18 */),
|
||||
pd_last_cpu_reg = 16 R18_RESERVED_ONLY(- 1),
|
||||
pd_first_byte_reg = 0,
|
||||
pd_last_byte_reg = 16 BSD_ONLY(- 1 /* r18 */),
|
||||
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,8 +181,9 @@ 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++;
|
||||
#ifndef __APPLE__
|
||||
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_reserved); 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++;
|
||||
@@ -201,8 +202,9 @@ 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 __APPLE__
|
||||
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
|
||||
#ifdef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
map_register(i, r18_reserved); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
|
||||
rscratch1_opr = r8_opr;
|
||||
@@ -233,7 +235,8 @@ 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 __APPLE__
|
||||
#ifndef R18_RESERVED
|
||||
// See comment in register_aarch64.hpp
|
||||
_caller_save_cpu_regs[16] = r18_opr;
|
||||
#endif
|
||||
|
||||
@@ -261,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_reserved);
|
||||
r19_oop_opr = as_oop_opr(r19);
|
||||
r20_oop_opr = as_oop_opr(r20);
|
||||
r21_oop_opr = as_oop_opr(r21);
|
||||
|
||||
@@ -226,6 +226,19 @@ Address LIR_Assembler::as_Address_lo(LIR_Address* addr) {
|
||||
// FIXME: This needs to be much more clever. See x86.
|
||||
}
|
||||
|
||||
// Ensure a valid Address (base + offset) to a stack-slot. If stack access is
|
||||
// not encodable as a base + (immediate) offset, generate an explicit address
|
||||
// calculation to hold the address in a temporary register.
|
||||
Address LIR_Assembler::stack_slot_address(int index, uint size, Register tmp, int adjust) {
|
||||
precond(size == 4 || size == 8);
|
||||
Address addr = frame_map()->address_for_slot(index, adjust);
|
||||
precond(addr.getMode() == Address::base_plus_offset);
|
||||
precond(addr.base() == sp);
|
||||
precond(addr.offset() > 0);
|
||||
uint mask = size - 1;
|
||||
assert((addr.offset() & mask) == 0, "scaled offsets only");
|
||||
return __ legitimize_address(addr, size, tmp);
|
||||
}
|
||||
|
||||
void LIR_Assembler::osr_entry() {
|
||||
offsets()->set_value(CodeOffsets::OSR_Entry, code_offset());
|
||||
@@ -436,12 +449,9 @@ int LIR_Assembler::emit_unwind_handler() {
|
||||
}
|
||||
|
||||
if (compilation()->env()->dtrace_method_probes()) {
|
||||
__ call_Unimplemented();
|
||||
#if 0
|
||||
__ movptr(Address(rsp, 0), rax);
|
||||
__ mov_metadata(Address(rsp, sizeof(void*)), method()->constant_encoding());
|
||||
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit)));
|
||||
#endif
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ mov_metadata(c_rarg1, method()->constant_encoding());
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), c_rarg0, c_rarg1);
|
||||
}
|
||||
|
||||
if (method()->is_synchronized() || compilation()->env()->dtrace_method_probes()) {
|
||||
@@ -745,32 +755,38 @@ void LIR_Assembler::reg2reg(LIR_Opr src, LIR_Opr dest) {
|
||||
}
|
||||
|
||||
void LIR_Assembler::reg2stack(LIR_Opr src, LIR_Opr dest, BasicType type, bool pop_fpu_stack) {
|
||||
precond(src->is_register() && dest->is_stack());
|
||||
|
||||
uint const c_sz32 = sizeof(uint32_t);
|
||||
uint const c_sz64 = sizeof(uint64_t);
|
||||
|
||||
if (src->is_single_cpu()) {
|
||||
int index = dest->single_stack_ix();
|
||||
if (type == T_ARRAY || type == T_OBJECT) {
|
||||
__ str(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
|
||||
__ str(src->as_register(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
__ verify_oop(src->as_register());
|
||||
} else if (type == T_METADATA || type == T_DOUBLE || type == T_ADDRESS) {
|
||||
__ str(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
|
||||
__ str(src->as_register(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
} else {
|
||||
__ strw(src->as_register(), frame_map()->address_for_slot(dest->single_stack_ix()));
|
||||
__ strw(src->as_register(), stack_slot_address(index, c_sz32, rscratch1));
|
||||
}
|
||||
|
||||
} else if (src->is_double_cpu()) {
|
||||
Address dest_addr_LO = frame_map()->address_for_slot(dest->double_stack_ix(), lo_word_offset_in_bytes);
|
||||
int index = dest->double_stack_ix();
|
||||
Address dest_addr_LO = stack_slot_address(index, c_sz64, rscratch1, lo_word_offset_in_bytes);
|
||||
__ str(src->as_register_lo(), dest_addr_LO);
|
||||
|
||||
} else if (src->is_single_fpu()) {
|
||||
Address dest_addr = frame_map()->address_for_slot(dest->single_stack_ix());
|
||||
__ strs(src->as_float_reg(), dest_addr);
|
||||
int index = dest->single_stack_ix();
|
||||
__ strs(src->as_float_reg(), stack_slot_address(index, c_sz32, rscratch1));
|
||||
|
||||
} else if (src->is_double_fpu()) {
|
||||
Address dest_addr = frame_map()->address_for_slot(dest->double_stack_ix());
|
||||
__ strd(src->as_double_reg(), dest_addr);
|
||||
int index = dest->double_stack_ix();
|
||||
__ strd(src->as_double_reg(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
|
||||
} else {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -855,30 +871,34 @@ void LIR_Assembler::reg2mem(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
|
||||
|
||||
|
||||
void LIR_Assembler::stack2reg(LIR_Opr src, LIR_Opr dest, BasicType type) {
|
||||
assert(src->is_stack(), "should not call otherwise");
|
||||
assert(dest->is_register(), "should not call otherwise");
|
||||
precond(src->is_stack() && dest->is_register());
|
||||
|
||||
uint const c_sz32 = sizeof(uint32_t);
|
||||
uint const c_sz64 = sizeof(uint64_t);
|
||||
|
||||
if (dest->is_single_cpu()) {
|
||||
int index = src->single_stack_ix();
|
||||
if (type == T_ARRAY || type == T_OBJECT) {
|
||||
__ ldr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
|
||||
__ ldr(dest->as_register(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
__ verify_oop(dest->as_register());
|
||||
} else if (type == T_METADATA || type == T_ADDRESS) {
|
||||
__ ldr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
|
||||
__ ldr(dest->as_register(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
} else {
|
||||
__ ldrw(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
|
||||
__ ldrw(dest->as_register(), stack_slot_address(index, c_sz32, rscratch1));
|
||||
}
|
||||
|
||||
} else if (dest->is_double_cpu()) {
|
||||
Address src_addr_LO = frame_map()->address_for_slot(src->double_stack_ix(), lo_word_offset_in_bytes);
|
||||
int index = src->double_stack_ix();
|
||||
Address src_addr_LO = stack_slot_address(index, c_sz64, rscratch1, lo_word_offset_in_bytes);
|
||||
__ ldr(dest->as_register_lo(), src_addr_LO);
|
||||
|
||||
} else if (dest->is_single_fpu()) {
|
||||
Address src_addr = frame_map()->address_for_slot(src->single_stack_ix());
|
||||
__ ldrs(dest->as_float_reg(), src_addr);
|
||||
int index = src->single_stack_ix();
|
||||
__ ldrs(dest->as_float_reg(), stack_slot_address(index, c_sz32, rscratch1));
|
||||
|
||||
} else if (dest->is_double_fpu()) {
|
||||
Address src_addr = frame_map()->address_for_slot(src->double_stack_ix());
|
||||
__ ldrd(dest->as_double_reg(), src_addr);
|
||||
int index = src->double_stack_ix();
|
||||
__ ldrd(dest->as_double_reg(), stack_slot_address(index, c_sz64, rscratch1));
|
||||
|
||||
} else {
|
||||
ShouldNotReachHere();
|
||||
@@ -1027,37 +1047,17 @@ int LIR_Assembler::array_element_size(BasicType type) const {
|
||||
return exact_log2(elem_size);
|
||||
}
|
||||
|
||||
void LIR_Assembler::arithmetic_idiv(LIR_Op3* op, bool is_irem) {
|
||||
Register Rdividend = op->in_opr1()->as_register();
|
||||
Register Rdivisor = op->in_opr2()->as_register();
|
||||
Register Rscratch = op->in_opr3()->as_register();
|
||||
Register Rresult = op->result_opr()->as_register();
|
||||
int divisor = -1;
|
||||
|
||||
/*
|
||||
TODO: For some reason, using the Rscratch that gets passed in is
|
||||
not possible because the register allocator does not see the tmp reg
|
||||
as used, and assignes it the same register as Rdividend. We use rscratch1
|
||||
instead.
|
||||
|
||||
assert(Rdividend != Rscratch, "");
|
||||
assert(Rdivisor != Rscratch, "");
|
||||
*/
|
||||
|
||||
if (Rdivisor == noreg && is_power_of_2(divisor)) {
|
||||
// convert division by a power of two into some shifts and logical operations
|
||||
}
|
||||
|
||||
__ corrected_idivl(Rresult, Rdividend, Rdivisor, is_irem, rscratch1);
|
||||
}
|
||||
|
||||
void LIR_Assembler::emit_op3(LIR_Op3* op) {
|
||||
switch (op->code()) {
|
||||
case lir_idiv:
|
||||
arithmetic_idiv(op, false);
|
||||
break;
|
||||
case lir_irem:
|
||||
arithmetic_idiv(op, true);
|
||||
arithmetic_idiv(op->code(),
|
||||
op->in_opr1(),
|
||||
op->in_opr2(),
|
||||
op->in_opr3(),
|
||||
op->result_opr(),
|
||||
op->info());
|
||||
break;
|
||||
case lir_fmad:
|
||||
__ fmaddd(op->result_opr()->as_double_reg(),
|
||||
@@ -1755,16 +1755,43 @@ void LIR_Assembler::arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr
|
||||
}
|
||||
|
||||
} else if (right->is_constant()) {
|
||||
jlong c = right->as_constant_ptr()->as_jlong_bits();
|
||||
jlong c = right->as_constant_ptr()->as_jlong();
|
||||
Register dreg = as_reg(dest);
|
||||
assert(code == lir_add || code == lir_sub, "mismatched arithmetic op");
|
||||
if (c == 0 && dreg == lreg_lo) {
|
||||
COMMENT("effective nop elided");
|
||||
return;
|
||||
}
|
||||
switch (code) {
|
||||
case lir_add: __ add(dreg, lreg_lo, c); break;
|
||||
case lir_sub: __ sub(dreg, lreg_lo, c); break;
|
||||
case lir_add:
|
||||
case lir_sub:
|
||||
if (c == 0 && dreg == lreg_lo) {
|
||||
COMMENT("effective nop elided");
|
||||
return;
|
||||
}
|
||||
code == lir_add ? __ add(dreg, lreg_lo, c) : __ sub(dreg, lreg_lo, c);
|
||||
break;
|
||||
case lir_div:
|
||||
assert(c > 0 && is_power_of_2_long(c), "divisor must be power-of-2 constant");
|
||||
if (c == 1) {
|
||||
// move lreg_lo to dreg if divisor is 1
|
||||
__ mov(dreg, lreg_lo);
|
||||
} else {
|
||||
unsigned int shift = exact_log2_long(c);
|
||||
// use rscratch1 as intermediate result register
|
||||
__ asr(rscratch1, lreg_lo, 63);
|
||||
__ add(rscratch1, lreg_lo, rscratch1, Assembler::LSR, 64 - shift);
|
||||
__ asr(dreg, rscratch1, shift);
|
||||
}
|
||||
break;
|
||||
case lir_rem:
|
||||
assert(c > 0 && is_power_of_2_long(c), "divisor must be power-of-2 constant");
|
||||
if (c == 1) {
|
||||
// move 0 to dreg if divisor is 1
|
||||
__ mov(dreg, zr);
|
||||
} else {
|
||||
// use rscratch1 as intermediate result register
|
||||
__ negs(rscratch1, lreg_lo);
|
||||
__ andr(dreg, lreg_lo, c - 1);
|
||||
__ andr(rscratch1, rscratch1, c - 1);
|
||||
__ csneg(dreg, dreg, rscratch1, Assembler::MI);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
@@ -1869,7 +1896,51 @@ void LIR_Assembler::logic_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr
|
||||
|
||||
|
||||
|
||||
void LIR_Assembler::arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info) { Unimplemented(); }
|
||||
void LIR_Assembler::arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr illegal, LIR_Opr result, CodeEmitInfo* info) {
|
||||
|
||||
// opcode check
|
||||
assert((code == lir_idiv) || (code == lir_irem), "opcode must be idiv or irem");
|
||||
bool is_irem = (code == lir_irem);
|
||||
|
||||
// operand check
|
||||
assert(left->is_single_cpu(), "left must be register");
|
||||
assert(right->is_single_cpu() || right->is_constant(), "right must be register or constant");
|
||||
assert(result->is_single_cpu(), "result must be register");
|
||||
Register lreg = left->as_register();
|
||||
Register dreg = result->as_register();
|
||||
|
||||
// power-of-2 constant check and codegen
|
||||
if (right->is_constant()) {
|
||||
int c = right->as_constant_ptr()->as_jint();
|
||||
assert(c > 0 && is_power_of_2(c), "divisor must be power-of-2 constant");
|
||||
if (is_irem) {
|
||||
if (c == 1) {
|
||||
// move 0 to dreg if divisor is 1
|
||||
__ movw(dreg, zr);
|
||||
} else {
|
||||
// use rscratch1 as intermediate result register
|
||||
__ negsw(rscratch1, lreg);
|
||||
__ andw(dreg, lreg, c - 1);
|
||||
__ andw(rscratch1, rscratch1, c - 1);
|
||||
__ csnegw(dreg, dreg, rscratch1, Assembler::MI);
|
||||
}
|
||||
} else {
|
||||
if (c == 1) {
|
||||
// move lreg to dreg if divisor is 1
|
||||
__ movw(dreg, lreg);
|
||||
} else {
|
||||
unsigned int shift = exact_log2(c);
|
||||
// use rscratch1 as intermediate result register
|
||||
__ asrw(rscratch1, lreg, 31);
|
||||
__ addw(rscratch1, lreg, rscratch1, Assembler::LSR, 32 - shift);
|
||||
__ asrw(dreg, rscratch1, shift);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Register rreg = right->as_register();
|
||||
__ corrected_idivl(dreg, lreg, rreg, is_irem, rscratch1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LIR_Assembler::comp_op(LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Op2* op) {
|
||||
@@ -2040,6 +2111,13 @@ void LIR_Assembler::throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmit
|
||||
|
||||
// get current pc information
|
||||
// pc is only needed if the method has an exception handler, the unwind code does not need it.
|
||||
if (compilation()->debug_info_recorder()->last_pc_offset() == __ offset()) {
|
||||
// As no instructions have been generated yet for this LIR node it's
|
||||
// possible that an oop map already exists for the current offset.
|
||||
// In that case insert an dummy NOP here to ensure all oop map PCs
|
||||
// are unique. See JDK-8237483.
|
||||
__ nop();
|
||||
}
|
||||
int pc_for_athrow_offset = __ offset();
|
||||
InternalAddress pc_for_athrow(__ pc());
|
||||
__ adr(exceptionPC->as_register(), pc_for_athrow);
|
||||
@@ -2773,7 +2851,7 @@ void LIR_Assembler::emit_profile_type(LIR_OpProfileType* op) {
|
||||
}
|
||||
#endif
|
||||
// first time here. Set profile type.
|
||||
__ ldr(tmp, mdo_addr);
|
||||
__ str(tmp, mdo_addr);
|
||||
} else {
|
||||
assert(ciTypeEntries::valid_ciklass(current_klass) != NULL &&
|
||||
ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
|
||||
|
||||
@@ -45,10 +45,12 @@ friend class ArrayCopyStub;
|
||||
|
||||
bool is_literal_address(LIR_Address* addr);
|
||||
|
||||
// When we need to use something other than rscratch1 use this
|
||||
// method.
|
||||
// When we need to use something other than rscratch1 use this method.
|
||||
Address as_Address(LIR_Address* addr, Register tmp);
|
||||
|
||||
// Ensure we have a valid Address (base+offset) to a stack-slot.
|
||||
Address stack_slot_address(int index, uint shift, Register tmp, int adjust = 0);
|
||||
|
||||
// Record the type of the receiver in ReceiverTypeData
|
||||
void type_profile_helper(Register mdo,
|
||||
ciMethodData *md, ciProfileData *data,
|
||||
@@ -77,8 +79,6 @@ friend class ArrayCopyStub;
|
||||
_deopt_handler_size = 7 * NativeInstruction::instruction_size
|
||||
};
|
||||
|
||||
void arithmetic_idiv(LIR_Op3* op, bool is_irem);
|
||||
|
||||
public:
|
||||
|
||||
void store_parameter(Register r, int offset_from_esp_in_words);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user