mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-09 02:49:40 +01:00
Compare commits
940 Commits
jbr-dev-lo
...
jdk-19+14
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
08cadb4754 | ||
|
|
de4f04cb71 | ||
|
|
4df24c5df3 | ||
|
|
27fe3d7f8d | ||
|
|
bacfaa3ee1 | ||
|
|
1465ea98b7 | ||
|
|
ac06bdb123 | ||
|
|
32f8437d85 | ||
|
|
12dca36c73 | ||
|
|
05a83e03ca | ||
|
|
671b6efd61 | ||
|
|
f43ffe211f | ||
|
|
4de72014d3 | ||
|
|
2cddf3f539 | ||
|
|
710653ce18 | ||
|
|
34d4ffcea5 | ||
|
|
6013d09e82 | ||
|
|
5ba5e21fd2 | ||
|
|
a244051a8c | ||
|
|
5bf6a7f7d7 | ||
|
|
f66070b00d | ||
|
|
70bd57ed35 | ||
|
|
7833667f0e | ||
|
|
c96085eaab | ||
|
|
13cebffe61 | ||
|
|
08573cc3b2 | ||
|
|
ea9eeea8ff | ||
|
|
5f3d4032f3 | ||
|
|
01570ca92d | ||
|
|
c0e3d107f6 | ||
|
|
fde3149896 | ||
|
|
3cf83a671e | ||
|
|
5c408c1410 | ||
|
|
374193b6d2 | ||
|
|
0fd09d383b | ||
|
|
95ca94436d | ||
|
|
f99193ae3f | ||
|
|
cab9def1c1 | ||
|
|
1a5a496aee | ||
|
|
88f0938c94 | ||
|
|
a5a1a32db6 | ||
|
|
bb7ee5a04a | ||
|
|
f5217b475e | ||
|
|
7b91bbba82 | ||
|
|
b13cacc575 | ||
|
|
1f295239b9 | ||
|
|
879b6445e3 | ||
|
|
fdce97df5f | ||
|
|
e8a1ce00b2 | ||
|
|
1668c02ee8 | ||
|
|
2674799005 | ||
|
|
7c8ea9f05b | ||
|
|
9c88c5bb63 | ||
|
|
83d7718690 | ||
|
|
6a3a7b94a4 | ||
|
|
5b78a82e9d | ||
|
|
8aba4de984 | ||
|
|
ff76620487 | ||
|
|
70318e1d17 | ||
|
|
6d8d156c97 | ||
|
|
5df2a05770 | ||
|
|
d07f7c76c5 | ||
|
|
31ad80a229 | ||
|
|
12693a6cf3 | ||
|
|
49245131e9 | ||
|
|
ea19114e66 | ||
|
|
72e987e3b4 | ||
|
|
288d1afc5a | ||
|
|
6b34884b34 | ||
|
|
3fc009be8a | ||
|
|
2549e55038 | ||
|
|
3e4dfc63e7 | ||
|
|
0cbc4b85bf | ||
|
|
0f88fc180c | ||
|
|
c6d743fb92 | ||
|
|
5fab27e1b8 | ||
|
|
65ca0a5776 | ||
|
|
e607287204 | ||
|
|
8b45dbdae6 | ||
|
|
3f0684d0b8 | ||
|
|
cde923dd47 | ||
|
|
50eb915a74 | ||
|
|
ccad39237a | ||
|
|
5d5bf16b0a | ||
|
|
3996782c5a | ||
|
|
2e298b8bf4 | ||
|
|
5953b229bf | ||
|
|
1faa5c8092 | ||
|
|
7194097bca | ||
|
|
ef266d77b6 | ||
|
|
f0995abe62 | ||
|
|
8e70f4c3dc | ||
|
|
e544e354a4 | ||
|
|
104e3cb24b | ||
|
|
6fc73f709b | ||
|
|
894ffb098c | ||
|
|
415bf44191 | ||
|
|
974ef5542f | ||
|
|
bc42e7cbbf | ||
|
|
52278b80c4 | ||
|
|
c459f8f406 | ||
|
|
bae0d5e717 | ||
|
|
b0028a459c | ||
|
|
e07fd395bd | ||
|
|
9c817d3880 | ||
|
|
733c7907b0 | ||
|
|
f9f9c0a855 | ||
|
|
603050bfe0 | ||
|
|
52471539c0 | ||
|
|
a584c904a9 | ||
|
|
d5e8e52f02 | ||
|
|
b3837808bf | ||
|
|
b629782b8d | ||
|
|
7e1c67d4af | ||
|
|
8478173d83 | ||
|
|
fb6b929e6e | ||
|
|
1581e3faa0 | ||
|
|
268fa69318 | ||
|
|
c777bb3df3 | ||
|
|
080baffa6e | ||
|
|
57020fd582 | ||
|
|
5c187e34a5 | ||
|
|
7822cbce10 | ||
|
|
832729b41e | ||
|
|
0402a288f3 | ||
|
|
d4d1fbc27a | ||
|
|
b1f935c1d0 | ||
|
|
2da677793f | ||
|
|
d0eb6fa220 | ||
|
|
02aa7cef0a | ||
|
|
1485883c9e | ||
|
|
b6c35ae44a | ||
|
|
ce18ff8527 | ||
|
|
234c17e8ff | ||
|
|
fc918a73d0 | ||
|
|
d80f697182 | ||
|
|
f12200cd11 | ||
|
|
12a822a287 | ||
|
|
ed3496e6c0 | ||
|
|
fc52a2182a | ||
|
|
732d891f9f | ||
|
|
eac80214ae | ||
|
|
b86a8c004f | ||
|
|
941e97c4eb | ||
|
|
8fec7b87c1 | ||
|
|
b03d66c501 | ||
|
|
76398c8400 | ||
|
|
31b61f982c | ||
|
|
2c5d266f9f | ||
|
|
341c8bd7f2 | ||
|
|
fcce24c5b3 | ||
|
|
a95edee634 | ||
|
|
44d599aad3 | ||
|
|
eff396f397 | ||
|
|
369291b265 | ||
|
|
d4d12ad1d9 | ||
|
|
22b93a31c9 | ||
|
|
d3022f87b5 | ||
|
|
e4d9fc811e | ||
|
|
c1a28aa04a | ||
|
|
77432663be | ||
|
|
1f89acd849 | ||
|
|
9d9618a3dd | ||
|
|
d983d108c5 | ||
|
|
c7cd1487fe | ||
|
|
59b3ecc591 | ||
|
|
4e7fb41daf | ||
|
|
0ae3d1d59c | ||
|
|
c58f5c67d1 | ||
|
|
06cadb36e0 | ||
|
|
efd3967b54 | ||
|
|
86723d4892 | ||
|
|
630ad1acb2 | ||
|
|
afd4bcbc1d | ||
|
|
cf6d2565e9 | ||
|
|
c5c6058fd5 | ||
|
|
fb8bf81842 | ||
|
|
441e48509c | ||
|
|
e96c599ed2 | ||
|
|
735e86b0f7 | ||
|
|
b96b743727 | ||
|
|
9471f24ca1 | ||
|
|
3efd6aa4c9 | ||
|
|
cd36be42c2 | ||
|
|
bf19fc65c7 | ||
|
|
b6843a1624 | ||
|
|
23995f822e | ||
|
|
20e78f7a8e | ||
|
|
0b6862e803 | ||
|
|
6fab8a2d6a | ||
|
|
abc0ce11df | ||
|
|
0796620b07 | ||
|
|
231e48fa63 | ||
|
|
f4486a190e | ||
|
|
3cfffa4f8e | ||
|
|
379fd85932 | ||
|
|
cd3e59ef88 | ||
|
|
a6610031e2 | ||
|
|
43dc9ef619 | ||
|
|
253cf7852f | ||
|
|
f86f38a8af | ||
|
|
e540e0a81b | ||
|
|
7dc7184c10 | ||
|
|
a020b6ba8f | ||
|
|
99b8ed9dbf | ||
|
|
35076af13a | ||
|
|
340a35d835 | ||
|
|
5035bf5e6c | ||
|
|
aaab2cb416 | ||
|
|
d017e98856 | ||
|
|
9332071784 | ||
|
|
ecd85e6f0f | ||
|
|
378fa507a2 | ||
|
|
e1060bee2a | ||
|
|
6f882deddc | ||
|
|
2557ef8a02 | ||
|
|
6445ee46b5 | ||
|
|
7feabee426 | ||
|
|
58e1882f3c | ||
|
|
3cb38678aa | ||
|
|
957dae02b1 | ||
|
|
e44d0670a6 | ||
|
|
41355e2daa | ||
|
|
022d80707c | ||
|
|
ab6d8e6424 | ||
|
|
b95310b090 | ||
|
|
bc43320fd3 | ||
|
|
f9539521ae | ||
|
|
e0b49629e9 | ||
|
|
e1c98bd1f2 | ||
|
|
cc7cf81256 | ||
|
|
d7a706a540 | ||
|
|
bdae1d87c1 | ||
|
|
51f4420711 | ||
|
|
34aae32de6 | ||
|
|
c5d9142a84 | ||
|
|
52a85d8048 | ||
|
|
4e0b81c596 | ||
|
|
8563d86f2c | ||
|
|
d28b048f35 | ||
|
|
d7f31d0d53 | ||
|
|
d3749de478 | ||
|
|
3943c89b9b | ||
|
|
7ce75afbbc | ||
|
|
cfbfd9bf41 | ||
|
|
413bef6890 | ||
|
|
cf6984ddaa | ||
|
|
f5120b764c | ||
|
|
e3365041bd | ||
|
|
e8224f7de9 | ||
|
|
834d55c59f | ||
|
|
138a17195d | ||
|
|
7bcca7692b | ||
|
|
c9289583eb | ||
|
|
a22f422b7f | ||
|
|
fdce35f3a1 | ||
|
|
f830cbec90 | ||
|
|
69fc273f20 | ||
|
|
129277653e | ||
|
|
cd9a3cf05b | ||
|
|
a6f8a386ef | ||
|
|
4c7f8b49a4 | ||
|
|
d0e11808fd | ||
|
|
3b7a3cfce3 | ||
|
|
9ca435b4c0 | ||
|
|
b4900b1298 | ||
|
|
c0275e18b7 | ||
|
|
1864481df1 | ||
|
|
1eec16b47b | ||
|
|
cd234f5dbe | ||
|
|
b6e48e6782 | ||
|
|
0b00ce17cd | ||
|
|
5ec7898dbf | ||
|
|
9ba0760cf8 | ||
|
|
48f6e93079 | ||
|
|
67763df4dc | ||
|
|
847a99b53d | ||
|
|
980d187891 | ||
|
|
81645521c8 | ||
|
|
bb4dece246 | ||
|
|
9b74c3f2e7 | ||
|
|
0f3d3ac32c | ||
|
|
395bc141f2 | ||
|
|
d8f44aa39e | ||
|
|
7428b37696 | ||
|
|
d5b466657e | ||
|
|
fef5d74d0e | ||
|
|
a86cab8d42 | ||
|
|
0af356bb4b | ||
|
|
a24498b777 | ||
|
|
1aff44b2cf | ||
|
|
394ce5f948 | ||
|
|
745f7e7d92 | ||
|
|
18704653dc | ||
|
|
2fe0bf66b7 | ||
|
|
bc6148407e | ||
|
|
2112a9dc49 | ||
|
|
1c12b159ff | ||
|
|
f82866bc79 | ||
|
|
0f2113cee7 | ||
|
|
8819f45357 | ||
|
|
622970e47c | ||
|
|
2be2a298f1 | ||
|
|
11f943d148 | ||
|
|
b1564624ce | ||
|
|
f33329eb7f | ||
|
|
d4cd8dfedb | ||
|
|
1a7b70a8be | ||
|
|
16f649b9c5 | ||
|
|
88fc3bfdff | ||
|
|
f07b816523 | ||
|
|
9d0a4c3f2e | ||
|
|
2604a88fbb | ||
|
|
534e557874 | ||
|
|
95f198b2b1 | ||
|
|
c61d629add | ||
|
|
2597206242 | ||
|
|
2632d40dfc | ||
|
|
46f522962f | ||
|
|
1ef45c5bbd | ||
|
|
483d4b97e0 | ||
|
|
adbe066102 | ||
|
|
eff5dafba9 | ||
|
|
8acfbc2e21 | ||
|
|
67077a0430 | ||
|
|
58dae60da0 | ||
|
|
aa918a6ec4 | ||
|
|
6fdfe0458d | ||
|
|
c3179a8760 | ||
|
|
4032fe76dc | ||
|
|
83ffbd2e7a | ||
|
|
0786ddb471 | ||
|
|
c5ff6e45de | ||
|
|
8886839779 | ||
|
|
e75e8cd708 | ||
|
|
e73ee0ca10 | ||
|
|
f399ae558e | ||
|
|
4ff5824f5b | ||
|
|
d254cf28c5 | ||
|
|
4d64076058 | ||
|
|
90939cb801 | ||
|
|
3a13425bc9 | ||
|
|
8441d51e71 | ||
|
|
a037b3c358 | ||
|
|
65831eb294 | ||
|
|
eee6a5622d | ||
|
|
84868e39be | ||
|
|
58c2bd3158 | ||
|
|
83b6e4bc04 | ||
|
|
039313d65d | ||
|
|
3ce1c5b6ce | ||
|
|
d442328bc2 | ||
|
|
c820d1acb7 | ||
|
|
fa0a72c030 | ||
|
|
7218d8449b | ||
|
|
fd8a3dcc52 | ||
|
|
178b962e01 | ||
|
|
c5c8c0644d | ||
|
|
f823bed043 | ||
|
|
8b384b986a | ||
|
|
bb2e10ccea | ||
|
|
69e390a0e8 | ||
|
|
f092babafb | ||
|
|
f924e50c42 | ||
|
|
072e7b4da0 | ||
|
|
cb2f8caed2 | ||
|
|
fc77217814 | ||
|
|
bce5dd1766 | ||
|
|
13f739d330 | ||
|
|
2f46af05ce | ||
|
|
fb17a8ece0 | ||
|
|
d658d945cf | ||
|
|
5fb56dbb0b | ||
|
|
92f4f40da6 | ||
|
|
7f19c70070 | ||
|
|
380378c551 | ||
|
|
83d67452da | ||
|
|
f5d8cebbb6 | ||
|
|
861f2797f7 | ||
|
|
f2a9627c05 | ||
|
|
4eacacb5ad | ||
|
|
2f71a6b39e | ||
|
|
8a662105c2 | ||
|
|
1dfc94dd56 | ||
|
|
2ed1f4cf32 | ||
|
|
a0f6f2409e | ||
|
|
22a1a32c7e | ||
|
|
76677716ab | ||
|
|
4c169495a2 | ||
|
|
f3e8242683 | ||
|
|
95fd9d20f3 | ||
|
|
f5e0870091 | ||
|
|
f2302822c0 | ||
|
|
5dfff7406e | ||
|
|
2f48a3f032 | ||
|
|
f7814c120b | ||
|
|
77b0240d44 | ||
|
|
42e272e181 | ||
|
|
48523b0908 | ||
|
|
8e4ef818a9 | ||
|
|
f5d6fddc6d | ||
|
|
d4b99bc029 | ||
|
|
66b2c3b66e | ||
|
|
7207f2a3b5 | ||
|
|
3d926dd66e | ||
|
|
51b53a821b | ||
|
|
46c6c6f308 | ||
|
|
c936e7059b | ||
|
|
01f93ddf18 | ||
|
|
63e11cfa3f | ||
|
|
e44dc638b8 | ||
|
|
b6935dfb86 | ||
|
|
130cf46dcb | ||
|
|
cda9c3011b | ||
|
|
86c24b319e | ||
|
|
1f92660937 | ||
|
|
010965c86a | ||
|
|
63a00a0df2 | ||
|
|
5ab22e88da | ||
|
|
fe547eacd7 | ||
|
|
a95ee5ada2 | ||
|
|
a46307a79d | ||
|
|
fe0118f804 | ||
|
|
e3d5c9e7c4 | ||
|
|
47800bf3da | ||
|
|
9d578537ce | ||
|
|
87ab0994de | ||
|
|
ce71e8b281 | ||
|
|
4ea6037ea5 | ||
|
|
ae2504b469 | ||
|
|
de826ba18a | ||
|
|
4304a7728e | ||
|
|
ab638341de | ||
|
|
48a32b5f3a | ||
|
|
97af323041 | ||
|
|
d32f99ee65 | ||
|
|
85d839fb4f | ||
|
|
9ca7ff3e4f | ||
|
|
c74b8f48fa | ||
|
|
a18beb4797 | ||
|
|
fdd9ca74bd | ||
|
|
d95de5c7fe | ||
|
|
bde2b3783e | ||
|
|
2531c332f8 | ||
|
|
d1cc5fda8f | ||
|
|
4532c3a163 | ||
|
|
5080e815b4 | ||
|
|
1f6fcbe2f3 | ||
|
|
c5a86120df | ||
|
|
86debf42f5 | ||
|
|
d37fb1df46 | ||
|
|
18a7dc8c08 | ||
|
|
16ec47d5e5 | ||
|
|
de3113b998 | ||
|
|
0e70d4504c | ||
|
|
1ea01465ab | ||
|
|
9c0104b9c9 | ||
|
|
4dbebb62aa | ||
|
|
4191b2b9b9 | ||
|
|
96d0df72db | ||
|
|
ee3be0bb56 | ||
|
|
74921e8422 | ||
|
|
39165613aa | ||
|
|
f991891b0b | ||
|
|
319b77492f | ||
|
|
993a2488ef | ||
|
|
dcc666d53d | ||
|
|
bdda43e066 | ||
|
|
091aff92e2 | ||
|
|
61794c5039 | ||
|
|
c6ed2046b4 | ||
|
|
251351f494 | ||
|
|
be9f984cae | ||
|
|
268880b471 | ||
|
|
d366d15d67 | ||
|
|
9139159898 | ||
|
|
0740ac474c | ||
|
|
ff34d624ba | ||
|
|
95ee9bf7be | ||
|
|
409382ba4b | ||
|
|
cb8a82ee24 | ||
|
|
6de90ad980 | ||
|
|
ed826f2927 | ||
|
|
8a3cca09ba | ||
|
|
973dda5ce0 | ||
|
|
55f180fb7d | ||
|
|
178ac74653 | ||
|
|
a1d1e4753b | ||
|
|
094db1a3ee | ||
|
|
78574057a4 | ||
|
|
40a2ce2033 | ||
|
|
6d242e4065 | ||
|
|
ece89c6df1 | ||
|
|
b94ebaa09c | ||
|
|
a3a0dcd921 | ||
|
|
cab590517b | ||
|
|
7f68759c60 | ||
|
|
94380d0e46 | ||
|
|
0dba170791 | ||
|
|
2ea0edf2c4 | ||
|
|
890830196d | ||
|
|
c2ee1b33c3 | ||
|
|
16e0ad0ad0 | ||
|
|
d2a50a6492 | ||
|
|
b5de2cc9d3 | ||
|
|
0c42e43f77 | ||
|
|
a5a11f14b9 | ||
|
|
b8365aa485 | ||
|
|
4b2370e576 | ||
|
|
e1d8f55564 | ||
|
|
f34f8d4d6a | ||
|
|
a07e19d833 | ||
|
|
ed0df2fa1f | ||
|
|
c180070cb5 | ||
|
|
a24f44d17d | ||
|
|
e72eefd9f6 | ||
|
|
2c64a7f2e3 | ||
|
|
a183bfb436 | ||
|
|
ef08e2c63b | ||
|
|
2eab86b513 | ||
|
|
295c0474c4 | ||
|
|
841eae6f52 | ||
|
|
76fe03fe01 | ||
|
|
cebaad1c94 | ||
|
|
cbe8395ace | ||
|
|
f4575e4052 | ||
|
|
674a97b27e | ||
|
|
fe77250fa4 | ||
|
|
496baada10 | ||
|
|
4503d0431c | ||
|
|
36fbec78be | ||
|
|
28796cbd1d | ||
|
|
c43ce85f01 | ||
|
|
1b14157677 | ||
|
|
2155afe2a8 | ||
|
|
295b263fa9 | ||
|
|
b32774653f | ||
|
|
53804720a0 | ||
|
|
a59d717fd6 | ||
|
|
f35df5bfb5 | ||
|
|
e3076552ec | ||
|
|
52ddbe2dcd | ||
|
|
8e82d0021c | ||
|
|
a5416669a5 | ||
|
|
a825a4a1db | ||
|
|
0b5c54be67 | ||
|
|
acd98294c6 | ||
|
|
dae2226a53 | ||
|
|
1c7769d35b | ||
|
|
4b329addf1 | ||
|
|
2b13341500 | ||
|
|
d53d8bd708 | ||
|
|
18c9cb0789 | ||
|
|
44db4794d2 | ||
|
|
4501ddda7f | ||
|
|
afd2805ef2 | ||
|
|
f05ff99654 | ||
|
|
7a0a6c95a5 | ||
|
|
0567a84d49 | ||
|
|
ead9feccae | ||
|
|
d1569111d7 | ||
|
|
9bf6ffa19f | ||
|
|
30cd47d421 | ||
|
|
54c9de26ab | ||
|
|
b9ae77906e | ||
|
|
7d2ef9d984 | ||
|
|
c1e4f3dd1b | ||
|
|
2920ce5487 | ||
|
|
6287ae3707 | ||
|
|
ab2c8d3c9b | ||
|
|
47b1c51bbd | ||
|
|
19f877981e | ||
|
|
6352c020c2 | ||
|
|
35ee0f38c6 | ||
|
|
293fb46f7c | ||
|
|
2426d58e59 | ||
|
|
02390c79b1 | ||
|
|
3419ff7ba7 | ||
|
|
d48279b0bf | ||
|
|
9636502658 | ||
|
|
0ea2b39035 | ||
|
|
ec8b6acff3 | ||
|
|
a4d201909c | ||
|
|
98b157a79a | ||
|
|
20297deaeb | ||
|
|
3f747368b9 | ||
|
|
cf977e88ec | ||
|
|
0bf95a1a73 | ||
|
|
e683d4ac8d | ||
|
|
1022cbdf98 | ||
|
|
c4a624d463 | ||
|
|
4616c13c2f | ||
|
|
98d96a7707 | ||
|
|
d1efb0cc56 | ||
|
|
6179e13b08 | ||
|
|
5523ddebd5 | ||
|
|
dac15efc1b | ||
|
|
03680bea1c | ||
|
|
84fa0d8c7d | ||
|
|
be0538d7c8 | ||
|
|
610a12904d | ||
|
|
f5de6fa799 | ||
|
|
e20c6bf972 | ||
|
|
b20b11cf82 | ||
|
|
96114315cf | ||
|
|
cc2f474c18 | ||
|
|
8931c12258 | ||
|
|
28e02fa2cb | ||
|
|
68b40ec286 | ||
|
|
39b1d75f25 | ||
|
|
5af7f25814 | ||
|
|
f37bfeadcf | ||
|
|
44fe958c8a | ||
|
|
69cfa9cb36 | ||
|
|
b0496b0df6 | ||
|
|
4eb4f94db0 | ||
|
|
4f4da3b172 | ||
|
|
af6c9abafa | ||
|
|
6d3fd860d7 | ||
|
|
82d6afe675 | ||
|
|
3603e754ce | ||
|
|
a6fd2c3114 | ||
|
|
4525a4b94d | ||
|
|
abf6fdd75a | ||
|
|
9c02c4c55f | ||
|
|
12034273c7 | ||
|
|
4d3663a6d0 | ||
|
|
cb7482d5bd | ||
|
|
ae7877df2e | ||
|
|
78b2c8419b | ||
|
|
3adc111766 | ||
|
|
aa28430bdd | ||
|
|
4be02d3155 | ||
|
|
5832a34404 | ||
|
|
6b6f829b46 | ||
|
|
c372990f5f | ||
|
|
518160353a | ||
|
|
afd0dc76b6 | ||
|
|
b02ea6dc3c | ||
|
|
fa47c368d4 | ||
|
|
9a94fbc793 | ||
|
|
1fddb03d93 | ||
|
|
7ee905a8a0 | ||
|
|
e069a3b8bf | ||
|
|
f18deeb69e | ||
|
|
29f61b3b0a | ||
|
|
feff0e5578 | ||
|
|
3a421e4b78 | ||
|
|
1a20628757 | ||
|
|
46fd683820 | ||
|
|
e314a4cfda | ||
|
|
bdfa15d92c | ||
|
|
fd9fb9a4af | ||
|
|
20ef954158 | ||
|
|
848b16a3f9 | ||
|
|
b734dc86ee | ||
|
|
7acc4c7dfe | ||
|
|
bd35f9740d | ||
|
|
88a8b239aa | ||
|
|
9e3f68d8f4 | ||
|
|
9eb50a5ee4 | ||
|
|
64c0c0e109 | ||
|
|
d175d33f44 | ||
|
|
1725f77bcd | ||
|
|
e38df21641 | ||
|
|
645b38d586 | ||
|
|
eb9499535c | ||
|
|
9452262652 | ||
|
|
48c5f3c715 | ||
|
|
39f140a201 | ||
|
|
37143c09ab | ||
|
|
262f2efd6c | ||
|
|
7b6738fa02 | ||
|
|
5d52bf9987 | ||
|
|
3edcb13272 | ||
|
|
9e536b6470 | ||
|
|
71ca85f5a6 | ||
|
|
431bd9a66d | ||
|
|
4d9b3f4cee | ||
|
|
a30aa52b77 | ||
|
|
590eb86033 | ||
|
|
c6196662b8 | ||
|
|
fef8f2d300 | ||
|
|
9a18190a4f | ||
|
|
22b7295e75 | ||
|
|
9b0f689557 | ||
|
|
eab4e6d670 | ||
|
|
0d1a97f793 | ||
|
|
c359c358c8 | ||
|
|
09d61b6187 | ||
|
|
fb8fdc0fbf | ||
|
|
d9dd485b95 | ||
|
|
cf283e2a33 | ||
|
|
f180530935 | ||
|
|
ac98b22040 | ||
|
|
61b8944327 | ||
|
|
35734ad080 | ||
|
|
e8f494cd5f | ||
|
|
c809d34f9e | ||
|
|
4b520f0001 | ||
|
|
9f30ec174f | ||
|
|
dd76a28d44 | ||
|
|
c6b027559c | ||
|
|
84976b4531 | ||
|
|
965c64bca7 | ||
|
|
45f20633f6 | ||
|
|
064ee6ae13 | ||
|
|
35172cdaf3 | ||
|
|
237f861e82 | ||
|
|
9209e6d6ae | ||
|
|
0a839b434b | ||
|
|
ff85659311 | ||
|
|
6fcaa322d9 | ||
|
|
c17a0122c4 | ||
|
|
b61a4af719 | ||
|
|
6933934633 | ||
|
|
14a90e536b | ||
|
|
33814791d9 | ||
|
|
65eb066b63 | ||
|
|
4851948059 | ||
|
|
67e3d51d68 | ||
|
|
cb25029885 | ||
|
|
1228b2f1f8 | ||
|
|
d70545d710 | ||
|
|
0a094d7c28 | ||
|
|
ddddec7d74 | ||
|
|
8fed8ab29c | ||
|
|
f54ce84474 | ||
|
|
ff0cb98965 | ||
|
|
ece98d859d | ||
|
|
525b20fce0 | ||
|
|
4f0b65023f | ||
|
|
bd339aa6c0 | ||
|
|
319d23033f | ||
|
|
13bfb49725 | ||
|
|
f16f6a95df | ||
|
|
1c688f4137 | ||
|
|
3aaa0982d8 | ||
|
|
36f41cbe11 | ||
|
|
c4518e257c | ||
|
|
67141849d9 | ||
|
|
cfee4512f7 | ||
|
|
c3d0a94040 | ||
|
|
5aecb37211 | ||
|
|
9e0244762c | ||
|
|
08e14c605e | ||
|
|
c08b2ac34c | ||
|
|
4c52eb3943 | ||
|
|
d46410c553 | ||
|
|
2bbeae3f05 | ||
|
|
86d0abb66b | ||
|
|
3121898c33 | ||
|
|
bf7bcaacaa | ||
|
|
6d7db4b0b3 | ||
|
|
126328cb62 | ||
|
|
ec5a455efb | ||
|
|
6504458d87 | ||
|
|
2f13872d51 | ||
|
|
2f7665b829 | ||
|
|
92307e5a94 | ||
|
|
bbc1ddb474 | ||
|
|
4471e95174 | ||
|
|
d7e6e9bd0b | ||
|
|
0d190961f2 | ||
|
|
d9b1bb5860 | ||
|
|
dee447f8ae | ||
|
|
40df5df95e | ||
|
|
debaa28e9c | ||
|
|
76477f8cdb | ||
|
|
11d88ce82e | ||
|
|
ad34f03b54 | ||
|
|
4ff6720573 | ||
|
|
928e347736 | ||
|
|
354c904798 | ||
|
|
6613ce64d7 | ||
|
|
06b4d494bf | ||
|
|
1f101b04f4 | ||
|
|
8f969a1362 | ||
|
|
79b614cc19 | ||
|
|
5fa13bb4a3 | ||
|
|
642ab34a60 | ||
|
|
4aefd8b8b6 | ||
|
|
2f8a2fd077 | ||
|
|
8d1a1e83f4 | ||
|
|
e14fb4f4aa | ||
|
|
77757ba974 | ||
|
|
f203723fc7 | ||
|
|
d47af74e4c | ||
|
|
d65c665839 | ||
|
|
4243f4c998 | ||
|
|
967ef0c482 | ||
|
|
62d03c2836 | ||
|
|
6a42fbaf9b | ||
|
|
8d0f385fd0 | ||
|
|
b3dbfc6452 | ||
|
|
8703f14808 | ||
|
|
7c792f27a8 | ||
|
|
bc12381105 | ||
|
|
2dbb936da9 | ||
|
|
456bd1ed1c | ||
|
|
844dfb3ab6 | ||
|
|
ab490534a1 | ||
|
|
523300e796 | ||
|
|
7b429a64ce | ||
|
|
564c8c6390 | ||
|
|
9a0e890056 | ||
|
|
590fa9d8d7 | ||
|
|
5cd9515333 | ||
|
|
a741b927a3 | ||
|
|
b6ec39cc84 | ||
|
|
0f98efbf2f | ||
|
|
9d43d25da8 | ||
|
|
0f4807e8fe | ||
|
|
8b5de27ce1 | ||
|
|
f326305396 | ||
|
|
f8f9148016 | ||
|
|
191f7307bb | ||
|
|
99a8351bc9 | ||
|
|
d1e6f26160 | ||
|
|
95a3010acf | ||
|
|
58b5fb3233 | ||
|
|
93c7d90c55 | ||
|
|
06f3713271 | ||
|
|
e7244c19f4 | ||
|
|
1ffdc52cf0 | ||
|
|
863bffb3b6 | ||
|
|
9bdf6eb7b2 | ||
|
|
09cf5f19d7 | ||
|
|
8dc4437d00 | ||
|
|
6b906bbab1 | ||
|
|
c295e71b49 | ||
|
|
3a1fca3adf | ||
|
|
2a59ebbba3 | ||
|
|
b4b0328d62 | ||
|
|
299022dfac | ||
|
|
4f607f2ada | ||
|
|
7fea10327e | ||
|
|
54b800d56d | ||
|
|
2945b786ba | ||
|
|
6588bedc19 | ||
|
|
70c6df6be4 | ||
|
|
d52392c15e | ||
|
|
22c15ddae5 | ||
|
|
9d99a377bf | ||
|
|
4669bcd877 | ||
|
|
a3b1c6b036 | ||
|
|
9df200f749 | ||
|
|
7aff03aee1 | ||
|
|
ff2ca4f21b | ||
|
|
bc0466c7ca | ||
|
|
04ad668921 | ||
|
|
558a6824c6 | ||
|
|
730f67081d | ||
|
|
87cc4e5009 | ||
|
|
214f98f6b0 | ||
|
|
ad1dc9c2ae | ||
|
|
eaefb1a1ed | ||
|
|
9d5ae2e380 | ||
|
|
d64820dfef | ||
|
|
04ee9211fc | ||
|
|
2be3e7ef1c | ||
|
|
f1fbba23eb | ||
|
|
9a478b347e | ||
|
|
a6903f806a | ||
|
|
dfb15c3e34 | ||
|
|
e49d4a9870 | ||
|
|
3f41fdecdb | ||
|
|
713fbeb050 | ||
|
|
734143918d | ||
|
|
d0ea7c9db9 | ||
|
|
97c5cd7fac | ||
|
|
bf2826499a | ||
|
|
00c0d10870 | ||
|
|
fb623f1d2e | ||
|
|
9ee3ccfee2 | ||
|
|
803cb8a768 | ||
|
|
997b1eea6e | ||
|
|
6aeb40cf2a | ||
|
|
84d3333c7a | ||
|
|
1128674d7f | ||
|
|
f31dead6c5 | ||
|
|
54517fa3d8 | ||
|
|
ac7430cf7e | ||
|
|
f7309060de | ||
|
|
db3d6d7724 | ||
|
|
8c0bb53f5b | ||
|
|
f90425a1cb | ||
|
|
f4f2f32cd1 | ||
|
|
29bd73638a | ||
|
|
467f654916 | ||
|
|
ff5d41762d | ||
|
|
517967284c | ||
|
|
8549d8b569 | ||
|
|
819f9bd084 | ||
|
|
ad1282842c | ||
|
|
4c78c9ab80 | ||
|
|
06206c7199 | ||
|
|
31fbb8723e | ||
|
|
deaf75a585 | ||
|
|
63e43030ed | ||
|
|
6f0e8da6d3 | ||
|
|
3c10b5db38 | ||
|
|
cc44e13797 | ||
|
|
905b763942 | ||
|
|
36676db2fd | ||
|
|
a5f5d60f25 | ||
|
|
8fbe1724e0 | ||
|
|
022e4f0f1c | ||
|
|
b46f0b0b1f | ||
|
|
0bfc204a78 | ||
|
|
b17f8d5b6c | ||
|
|
769f14db84 | ||
|
|
e45e0b05b9 | ||
|
|
a68f28cea6 | ||
|
|
9cd709060c | ||
|
|
3607a5cdd9 | ||
|
|
abab1738a7 | ||
|
|
6412d57a0a | ||
|
|
fffa73c1ef | ||
|
|
247ea71d24 | ||
|
|
b9a477bf19 | ||
|
|
bb7efb3517 | ||
|
|
8c73ec155d | ||
|
|
8494fec665 | ||
|
|
634afe8c5c | ||
|
|
f5d7c777bc | ||
|
|
7ce4aa8942 | ||
|
|
197c9f5ac8 | ||
|
|
8f5fdd864b | ||
|
|
20db7800a6 | ||
|
|
be6b90d90b | ||
|
|
937126b140 | ||
|
|
f15a59ce72 | ||
|
|
271d26f141 | ||
|
|
e0700bf1d4 | ||
|
|
aec1b039b3 | ||
|
|
aae563981c | ||
|
|
7edcd34869 | ||
|
|
0bddd8af61 | ||
|
|
e82310f360 |
135
.github/workflows/submit.yml
vendored
135
.github/workflows/submit.yml
vendored
@@ -12,6 +12,10 @@ on:
|
||||
required: true
|
||||
default: "Linux additional (hotspot only), Linux x64, Linux x86, Windows aarch64, Windows x64, macOS x64"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
prerequisites:
|
||||
name: Prerequisites
|
||||
@@ -19,6 +23,7 @@ jobs:
|
||||
outputs:
|
||||
should_run: ${{ steps.check_submit.outputs.should_run }}
|
||||
bundle_id: ${{ steps.check_bundle_id.outputs.bundle_id }}
|
||||
jdk_version: ${{ steps.check_jdk_versions.outputs.jdk_version }}
|
||||
platform_linux_additional: ${{ steps.check_platforms.outputs.platform_linux_additional }}
|
||||
platform_linux_x64: ${{ steps.check_platforms.outputs.platform_linux_x64 }}
|
||||
platform_linux_x86: ${{ steps.check_platforms.outputs.platform_linux_x86 }}
|
||||
@@ -66,6 +71,23 @@ jobs:
|
||||
run: "echo '${{ steps.check_deps.outputs.dependencies }}'"
|
||||
if: steps.check_submit.outputs.should_run != 'false'
|
||||
|
||||
- name: Determine full JDK versions
|
||||
id: check_jdk_versions
|
||||
shell: bash
|
||||
run: |
|
||||
FEATURE=${{ fromJson(steps.check_deps.outputs.dependencies).DEFAULT_VERSION_FEATURE }}
|
||||
INTERIM=${{ fromJson(steps.check_deps.outputs.dependencies).DEFAULT_VERSION_INTERIM }}
|
||||
UPDATE=${{ fromJson(steps.check_deps.outputs.dependencies).DEFAULT_VERSION_UPDATE }}
|
||||
if [ "x${UPDATE}" != "x0" ]; then
|
||||
V=${FEATURE}.${INTERIM}.${UPDATE}
|
||||
elif [ "x${INTERIM}" != "x0" ]; then
|
||||
V={FEATURE}.${INTERIM}
|
||||
else
|
||||
V=${FEATURE}
|
||||
fi
|
||||
echo "::set-output name=jdk_version::${V}"
|
||||
if: steps.check_submit.outputs.should_run != 'false'
|
||||
|
||||
- name: Determine the jtreg ref to checkout
|
||||
run: "echo JTREG_REF=jtreg-${{ fromJson(steps.check_deps.outputs.dependencies).JTREG_VERSION }}+${{ fromJson(steps.check_deps.outputs.dependencies).JTREG_BUILD }} >> $GITHUB_ENV"
|
||||
if: steps.check_submit.outputs.should_run != 'false'
|
||||
@@ -121,7 +143,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
@@ -183,7 +205,6 @@ jobs:
|
||||
--with-conf-name=linux-x64
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
--with-jtreg=${HOME}/jtreg
|
||||
--with-gtest=${GITHUB_WORKSPACE}/gtest
|
||||
@@ -201,8 +222,8 @@ jobs:
|
||||
with:
|
||||
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: |
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
|
||||
linux_x64_test:
|
||||
name: Linux x64
|
||||
@@ -250,7 +271,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
@@ -308,23 +329,23 @@ jobs:
|
||||
|
||||
- name: Unpack jdk
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin${{ matrix.artifact }}"
|
||||
|
||||
- name: Unpack tests
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin-tests${{ matrix.artifact }}"
|
||||
|
||||
- name: Find root of jdk image dir
|
||||
run: |
|
||||
imageroot=`find ${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin${{ matrix.artifact }} -name release -type f`
|
||||
imageroot=`find ${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin${{ matrix.artifact }} -name release -type f`
|
||||
echo "imageroot=`dirname ${imageroot}`" >> $GITHUB_ENV
|
||||
|
||||
- name: Run tests
|
||||
run: >
|
||||
JDK_IMAGE_DIR=${{ env.imageroot }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin-tests${{ matrix.artifact }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-linux-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin-tests${{ matrix.artifact }}
|
||||
BOOT_JDK=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
JT_HOME=${HOME}/jtreg
|
||||
make test-prebuilt
|
||||
@@ -341,6 +362,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
@@ -431,7 +453,7 @@ jobs:
|
||||
gnu-arch: powerpc64le
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
@@ -476,12 +498,12 @@ jobs:
|
||||
|
||||
- name: Unpack build JDK
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin"
|
||||
tar -xf "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin.tar.gz" -C "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin"
|
||||
mkdir -p "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin"
|
||||
tar -xf "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin.tar.gz" -C "${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin"
|
||||
|
||||
- name: Find root of build JDK image dir
|
||||
run: |
|
||||
build_jdk_root=`find ${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x64_bin -name release -type f`
|
||||
build_jdk_root=`find ${HOME}/jdk-linux-x64/jdk-${{ env.JDK_VERSION }}-internal_linux-x64_bin -name release -type f`
|
||||
echo "build_jdk_root=`dirname ${build_jdk_root}`" >> $GITHUB_ENV
|
||||
|
||||
- name: Update apt
|
||||
@@ -549,7 +571,6 @@ jobs:
|
||||
${{ matrix.flags }}
|
||||
${{ env.cross_flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
--with-build-jdk=${{ env.build_jdk_root }}
|
||||
--with-default-make-target="hotspot"
|
||||
@@ -579,7 +600,7 @@ jobs:
|
||||
|
||||
# Reduced 32-bit build uses the same boot JDK as 64-bit build
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
@@ -648,7 +669,6 @@ jobs:
|
||||
--with-target-bits=32
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
--with-jtreg=${HOME}/jtreg
|
||||
--with-gtest=${GITHUB_WORKSPACE}/gtest
|
||||
@@ -666,8 +686,8 @@ jobs:
|
||||
with:
|
||||
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: |
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/linux-x86/bundles/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
|
||||
linux_x86_test:
|
||||
name: Linux x86
|
||||
@@ -716,7 +736,7 @@ jobs:
|
||||
|
||||
# Reduced 32-bit build uses the same boot JDK as 64-bit build
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).LINUX_X64_BOOT_JDK_URL }}"
|
||||
@@ -774,23 +794,23 @@ jobs:
|
||||
|
||||
- name: Unpack jdk
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin${{ matrix.artifact }}"
|
||||
|
||||
- name: Unpack tests
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin-tests${{ matrix.artifact }}"
|
||||
|
||||
- name: Find root of jdk image dir
|
||||
run: |
|
||||
imageroot=`find ${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin${{ matrix.artifact }} -name release -type f`
|
||||
imageroot=`find ${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin${{ matrix.artifact }} -name release -type f`
|
||||
echo "imageroot=`dirname ${imageroot}`" >> $GITHUB_ENV
|
||||
|
||||
- name: Run tests
|
||||
run: >
|
||||
JDK_IMAGE_DIR=${{ env.imageroot }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_linux-x86_bin-tests${{ matrix.artifact }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-linux-x86${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_linux-x86_bin-tests${{ matrix.artifact }}
|
||||
BOOT_JDK=${HOME}/bootjdk/${BOOT_JDK_VERSION}
|
||||
JT_HOME=${HOME}/jtreg
|
||||
make test-prebuilt
|
||||
@@ -807,6 +827,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
@@ -866,7 +887,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_URL }}"
|
||||
@@ -925,7 +946,6 @@ jobs:
|
||||
--openjdk-target=aarch64-unknown-cygwin
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt="$env:GITHUB_ACTOR-$env:GITHUB_SHA"
|
||||
--with-version-build=0
|
||||
--with-boot-jdk="$env:BOOT_JDK"
|
||||
--with-default-make-target="hotspot"
|
||||
working-directory: jdk
|
||||
@@ -955,7 +975,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_URL }}"
|
||||
@@ -1037,7 +1057,6 @@ jobs:
|
||||
--with-msvc-toolset-version=14.28
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt="$env:GITHUB_ACTOR-$env:GITHUB_SHA"
|
||||
--with-version-build=0
|
||||
--with-boot-jdk="$env:BOOT_JDK"
|
||||
--with-jtreg="$env:JT_HOME"
|
||||
--with-gtest="$env:GTEST"
|
||||
@@ -1057,9 +1076,9 @@ jobs:
|
||||
with:
|
||||
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: |
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}.zip
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}-symbols.tar.gz
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}.zip
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/windows-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}-symbols.tar.gz
|
||||
|
||||
windows_x64_test:
|
||||
name: Windows x64
|
||||
@@ -1107,7 +1126,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).WINDOWS_X64_BOOT_JDK_URL }}"
|
||||
@@ -1179,21 +1198,21 @@ jobs:
|
||||
|
||||
- name: Unpack jdk
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}.zip" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}.zip" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}"
|
||||
|
||||
- name: Unpack symbols
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}-symbols"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}-symbols.tar.gz" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }}-symbols"
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}-symbols"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}-symbols.tar.gz" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }}-symbols"
|
||||
|
||||
- name: Unpack tests
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin-tests${{ matrix.artifact }}"
|
||||
|
||||
- name: Find root of jdk image dir
|
||||
run: echo ("imageroot=" + (Get-ChildItem -Path $HOME/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin${{ matrix.artifact }} -Filter release -Recurse -ErrorAction SilentlyContinue -Force).DirectoryName) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||
run: echo ("imageroot=" + (Get-ChildItem -Path $HOME/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin${{ matrix.artifact }} -Filter release -Recurse -ErrorAction SilentlyContinue -Force).DirectoryName) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8
|
||||
|
||||
- name: Run tests
|
||||
run: >
|
||||
@@ -1201,7 +1220,7 @@ jobs:
|
||||
$env:Path = $env:Path -split ";" -match "C:\\Windows|PowerShell|cygwin" -join ";" ;
|
||||
$env:JDK_IMAGE_DIR = cygpath "${{ env.imageroot }}" ;
|
||||
$env:SYMBOLS_IMAGE_DIR = cygpath "${{ env.imageroot }}" ;
|
||||
$env:TEST_IMAGE_DIR = cygpath "$HOME/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_windows-x64_bin-tests${{ matrix.artifact }}" ;
|
||||
$env:TEST_IMAGE_DIR = cygpath "$HOME/jdk-windows-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_windows-x64_bin-tests${{ matrix.artifact }}" ;
|
||||
$env:BOOT_JDK = cygpath "$HOME/bootjdk/$env:BOOT_JDK_VERSION" ;
|
||||
$env:JT_HOME = cygpath "$HOME/jtreg" ;
|
||||
& make test-prebuilt
|
||||
@@ -1218,6 +1237,7 @@ jobs:
|
||||
run: >
|
||||
if ((Get-ChildItem -Path build\*\test-results\test-summary.txt -Recurse | Select-String -Pattern "TEST SUCCESS" ).Count -eq 0) {
|
||||
Get-Content -Path build\*\test-results\*\*\newfailures.txt ;
|
||||
Get-Content -Path build\*\test-results\*\*\other_errors.txt ;
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -1281,7 +1301,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_URL }}"
|
||||
@@ -1343,7 +1363,6 @@ jobs:
|
||||
--with-conf-name=macos-x64
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}/Contents/Home
|
||||
--with-jtreg=${HOME}/jtreg
|
||||
--with-gtest=${GITHUB_WORKSPACE}/gtest
|
||||
@@ -1361,8 +1380,8 @@ jobs:
|
||||
with:
|
||||
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: |
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-x64/bundles/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
|
||||
macos_aarch64_build:
|
||||
name: macOS aarch64
|
||||
@@ -1383,7 +1402,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_URL }}"
|
||||
@@ -1446,7 +1465,6 @@ jobs:
|
||||
--openjdk-target=aarch64-apple-darwin
|
||||
${{ matrix.flags }}
|
||||
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
|
||||
--with-version-build=0
|
||||
--with-boot-jdk=${HOME}/bootjdk/${BOOT_JDK_VERSION}/Contents/Home
|
||||
--with-jtreg=${HOME}/jtreg
|
||||
--with-gtest=${GITHUB_WORKSPACE}/gtest
|
||||
@@ -1464,8 +1482,8 @@ jobs:
|
||||
with:
|
||||
name: transient_jdk-macos-aarch64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||
path: |
|
||||
jdk/build/macos-aarch64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_macos-aarch64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-aarch64/bundles/jdk-${{ env.JDK_VERSION }}-internal+0_macos-aarch64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-aarch64/bundles/jdk-${{ env.JDK_VERSION }}-internal_macos-aarch64_bin${{ matrix.artifact }}.tar.gz
|
||||
jdk/build/macos-aarch64/bundles/jdk-${{ env.JDK_VERSION }}-internal_macos-aarch64_bin-tests${{ matrix.artifact }}.tar.gz
|
||||
|
||||
|
||||
macos_x64_test:
|
||||
@@ -1514,7 +1532,7 @@ jobs:
|
||||
artifact: -debug
|
||||
|
||||
env:
|
||||
JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).DEFAULT_VERSION_FEATURE }}"
|
||||
JDK_VERSION: "${{ needs.prerequisites.outputs.jdk_version }}"
|
||||
BOOT_JDK_VERSION: "${{ fromJson(needs.prerequisites.outputs.dependencies).BOOT_JDK_VERSION }}"
|
||||
BOOT_JDK_FILENAME: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_FILENAME }}"
|
||||
BOOT_JDK_URL: "${{ fromJson(needs.prerequisites.outputs.dependencies).MACOS_X64_BOOT_JDK_URL }}"
|
||||
@@ -1572,13 +1590,13 @@ jobs:
|
||||
|
||||
- name: Unpack jdk
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin${{ matrix.artifact }}"
|
||||
|
||||
- name: Unpack tests
|
||||
run: |
|
||||
mkdir -p "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin-tests${{ matrix.artifact }}"
|
||||
mkdir -p "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin-tests${{ matrix.artifact }}"
|
||||
tar -xf "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin-tests${{ matrix.artifact }}.tar.gz" -C "${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin-tests${{ matrix.artifact }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: brew install make
|
||||
@@ -1588,13 +1606,13 @@ jobs:
|
||||
|
||||
- name: Find root of jdk image dir
|
||||
run: |
|
||||
imageroot=`find ${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin${{ matrix.artifact }} -name release -type f`
|
||||
imageroot=`find ${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin${{ matrix.artifact }} -name release -type f`
|
||||
echo "imageroot=`dirname ${imageroot}`" >> $GITHUB_ENV
|
||||
|
||||
- name: Run tests
|
||||
run: >
|
||||
JDK_IMAGE_DIR=${{ env.imageroot }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal+0_macos-x64_bin-tests${{ matrix.artifact }}
|
||||
TEST_IMAGE_DIR=${HOME}/jdk-macos-x64${{ matrix.artifact }}/jdk-${{ env.JDK_VERSION }}-internal_macos-x64_bin-tests${{ matrix.artifact }}
|
||||
BOOT_JDK=${HOME}/bootjdk/${BOOT_JDK_VERSION}/Contents/Home
|
||||
JT_HOME=${HOME}/jtreg
|
||||
gmake test-prebuilt
|
||||
@@ -1611,6 +1629,7 @@ jobs:
|
||||
run: >
|
||||
if ! grep --include=test-summary.txt -lqr build/*/test-results -e "TEST SUCCESS" ; then
|
||||
cat build/*/test-results/*/text/newfailures.txt ;
|
||||
cat build/*/test-results/*/text/other_errors.txt ;
|
||||
exit 1 ;
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[general]
|
||||
project=jdk
|
||||
jbs=JDK
|
||||
version=19
|
||||
|
||||
[checks]
|
||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
<h3 id="building-on-aarch64">Building on aarch64</h3>
|
||||
<p>At a minimum, a machine with 8 cores is advisable, as well as 8 GB of RAM. (The more cores to use, the more memory you need.) At least 6 GB of free disk space is required.</p>
|
||||
<p>If you do not have access to sufficiently powerful hardware, it is also possible to use <a href="#cross-compiling">cross-compiling</a>.</p>
|
||||
<h4 id="branch-protection">Branch Protection</h4>
|
||||
<p>In order to use Branch Protection features in the VM, <code>--enable-branch-protection</code> must be used. This option requires C++ compiler support (GCC 9.1.0+ or Clang 10+). The resulting build can be run on both machines with and without support for branch protection in hardware. Branch Protection is only supported for Linux targets.</p>
|
||||
<h3 id="building-on-32-bit-arm">Building on 32-bit arm</h3>
|
||||
<p>This is not recommended. Instead, see the section on <a href="#cross-compiling">Cross-compiling</a>.</p>
|
||||
<h2 id="operating-system-requirements">Operating System Requirements</h2>
|
||||
@@ -196,7 +198,7 @@
|
||||
<h3 id="windows">Windows</h3>
|
||||
<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 layers are Cygwin and Windows Subsystem for Linux (WSL). (Msys is no longer supported due to a too old bash; msys2 would likely be possible to support in a future version but that would require effort to implement.)</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 layers are Cygwin, Windows Subsystem for Linux (WSL), and MSYS2. (MSYS is no longer supported due to an outdated bash; While OpenJDK can be built with MSYS2, support for it is still experimental, so build failures and unusual errors are not uncommon.)</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 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>
|
||||
@@ -214,7 +216,7 @@
|
||||
<p>Unfortunately, Cygwin can be unreliable in certain circumstances. If you experience build tool crashes or strange issues when building on Windows, please check the Cygwin FAQ on the <a href="https://cygwin.com/faq/faq.html#faq.using.bloda">"BLODA" list</a> and the section on <a href="https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures">fork() failures</a>.</p>
|
||||
<h4 id="windows-subsystem-for-linux-wsl">Windows Subsystem for Linux (WSL)</h4>
|
||||
<p>Windows 10 1809 or newer is supported due to a dependency on the wslpath utility and support for environment variable sharing through WSLENV. Version 1803 can work but intermittent build failures have been observed.</p>
|
||||
<p>It's possible to build both Windows and Linux binaries from WSL. To build Windows binaries, you must use a Windows boot JDK (located in a Windows-accessible directory). To build Linux binaries, you must use a Linux boot JDK. The default behavior is to build for Windows. To build for Linux, pass <code>--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu</code> to <code>configure</code>.</p>
|
||||
<p>It's possible to build both Windows and Linux binaries from WSL. To build Windows binaries, you must use a Windows boot JDK (located in a Windows-accessible directory). To build Linux binaries, you must use a Linux boot JDK. The default behavior is to build for Windows. To build for Linux, pass <code>--build=x86_64-unknown-linux-gnu --openjdk-target=x86_64-unknown-linux-gnu</code> to <code>configure</code>.</p>
|
||||
<p>If building Windows binaries, the source code must be located in a Windows- accessible directory. This is because Windows executables (such as Visual Studio and the boot JDK) must be able to access the source code. Also, the drive where the source is stored must be mounted as case-insensitive by changing either /etc/fstab or /etc/wsl.conf in WSL. Individual directories may be corrected using the fsutil tool in case the source was cloned before changing the mount options.</p>
|
||||
<p>Note that while it's possible to build on WSL, testing is still not fully supported.</p>
|
||||
<h3 id="macos">macOS</h3>
|
||||
@@ -298,7 +300,7 @@
|
||||
<p>It is advisable to keep an older version of Xcode for building the JDK when updating Xcode. This <a href="http://iosdevelopertips.com/xcode/install-multiple-versions-of-xcode.html">blog page</a> has good suggestions on managing multiple Xcode versions. To use a specific version of Xcode, use <code>xcode-select -s</code> before running <code>configure</code>, or use <code>--with-toolchain-path</code> to point to the version of Xcode to use, e.g. <code>configure --with-toolchain-path=/Applications/Xcode8.app/Contents/Developer/usr/bin</code></p>
|
||||
<p>If you have recently (inadvertently) updated your OS and/or Xcode version, and the JDK can no longer be built, please see the section on <a href="#problems-with-the-build-environment">Problems with the Build Environment</a>, and <a href="#getting-help">Getting Help</a> to find out if there are any recent, non-merged patches available for this update.</p>
|
||||
<h3 id="microsoft-visual-studio">Microsoft Visual Studio</h3>
|
||||
<p>The minimum accepted version of Visual Studio is 2017. Older versions will not be accepted by <code>configure</code> and will not work. The maximum accepted version of Visual Studio is 2019.</p>
|
||||
<p>For aarch64 machines running Windows the minimum accepted version is Visual Studio 2019 (16.8 or higher). For all other platforms the minimum accepted version of Visual Studio is 2017. Older versions will not be accepted by <code>configure</code> and will not work. For all platforms the maximum accepted version of Visual Studio is 2022.</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=2017</code>.</p>
|
||||
<p>If you have Visual Studio installed but <code>configure</code> fails to detect it, it may be because of <a href="#spaces-in-path">spaces in path</a>.</p>
|
||||
<h3 id="ibm-xl-cc">IBM XL C/C++</h3>
|
||||
@@ -568,7 +570,8 @@ x86_64-linux-gnu-to-ppc64le-linux-gnu</code></pre>
|
||||
<p>To be able to build, we need a "Build JDK", which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
|
||||
<p>The build process will create a minimal Build JDK for you, as part of building. To speed up the build, you can use <code>--with-build-jdk</code> to <code>configure</code> to point to a pre-built Build JDK. Please note that the build result is unpredictable, and can possibly break in subtle ways, if the Build JDK does not <strong>exactly</strong> match the current sources.</p>
|
||||
<h3 id="specifying-the-target-platform">Specifying the Target Platform</h3>
|
||||
<p>You <em>must</em> specify the target platform when cross-compiling. Doing so will also automatically turn the build into a cross-compiling mode. The simplest way to do this is to use the <code>--openjdk-target</code> argument, e.g. <code>--openjdk-target=arm-linux-gnueabihf</code>. or <code>--openjdk-target=aarch64-oe-linux</code>. This will automatically set the <code>--build</code>, <code>--host</code> and <code>--target</code> options for autoconf, which can otherwise be confusing. (In autoconf terminology, the "target" is known as "host", and "target" is used for building a Canadian cross-compiler.)</p>
|
||||
<p>You <em>must</em> specify the target platform when cross-compiling. Doing so will also automatically turn the build into a cross-compiling mode. The simplest way to do this is to use the <code>--openjdk-target</code> argument, e.g. <code>--openjdk-target=arm-linux-gnueabihf</code>. or <code>--openjdk-target=aarch64-oe-linux</code>. This will automatically set the <code>--host</code> and <code>--target</code> options for autoconf, which can otherwise be confusing. (In autoconf terminology, the "target" is known as "host", and "target" is used for building a Canadian cross-compiler.)</p>
|
||||
<p>If <code>--build</code> has not been explicitly passed to configure, <code>--openjdk-target</code> will autodetect the build platform and internally set the flag automatically, otherwise the platform that was explicitly passed to <code>--build</code> will be used instead.</p>
|
||||
<h3 id="toolchain-considerations">Toolchain Considerations</h3>
|
||||
<p>You will need two copies of your toolchain, one which generates output that can run on the target system (the normal, or <em>target</em>, toolchain), and one that generates output that can run on the build system (the <em>build</em> toolchain). Note that cross-compiling is only supported for gcc at the time being. The gcc standard is to prefix cross-compiling toolchains with the target denominator. If you follow this standard, <code>configure</code> is likely to pick up the toolchain correctly.</p>
|
||||
<p>The <em>build</em> toolchain will be autodetected just the same way the normal <em>build</em>/<em>target</em> toolchain will be autodetected when not cross-compiling. If this is not what you want, or if the autodetection fails, you can specify a devkit containing the <em>build</em> toolchain using <code>--with-build-devkit</code> to <code>configure</code>, or by giving <code>BUILD_CC</code> and <code>BUILD_CXX</code> arguments.</p>
|
||||
@@ -887,30 +890,28 @@ spawn failed</code></pre>
|
||||
<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="reproducible-builds">Reproducible Builds</h2>
|
||||
<p>Build reproducibility is the property of getting exactly the same bits out when building, every time, independent on who builds the product, or where. This is for many reasons a harder goal than it initially appears, but it is an important goal, for security reasons and others. Please see <a href="https://reproducible-builds.org">Reproducible Builds</a> for more information about the background and reasons for reproducible builds.</p>
|
||||
<p>Currently, it is not possible to build OpenJDK fully reproducibly, but getting there is an ongoing effort. There are some things you can do to minimize non-determinism and make a larger part of the build reproducible:</p>
|
||||
<p>Currently, it is not possible to build OpenJDK fully reproducibly, but getting there is an ongoing effort.</p>
|
||||
<p>An absolute prerequisite for building reproducible is to speficy a fixed build time, since time stamps are embedded in many file formats. This is done by setting the <code>SOURCE_DATE_EPOCH</code> environment variable, which is an <a href="https://reproducible-builds.org/docs/source-date-epoch/">industry standard</a>, that many tools, such as gcc, recognize, and use in place of the current time when generating output.</p>
|
||||
<p>To generate reproducible builds, you must set <code>SOURCE_DATE_EPOCH</code> before running <code>configure</code>. The value in <code>SOURCE_DATE_EPOCH</code> will be stored in the configuration, and used by <code>make</code>. Setting <code>SOURCE_DATE_EPOCH</code> before running <code>make</code> will have no effect on the build.</p>
|
||||
<p>You must also make sure your build does not rely on <code>configure</code>'s default adhoc version strings. Default adhoc version strings <code>OPT</code> segment include user name and source directory. You can either override just the <code>OPT</code> segment using <code>--with-version-opt=<any fixed string></code>, or you can specify the entire version string using <code>--with-version-string=<your version></code>.</p>
|
||||
<p>This is a typical example of how to build the JDK in a reproducible way:</p>
|
||||
<pre><code>export SOURCE_DATE_EPOCH=946684800
|
||||
bash configure --with-version-opt=adhoc
|
||||
make</code></pre>
|
||||
<p>Note that regardless if you specify a source date for <code>configure</code> or not, the JDK build system will set <code>SOURCE_DATE_EPOCH</code> for all build tools when building. If <code>--with-source-date</code> has the value <code>updated</code> (which is the default unless <code>SOURCE_DATE_EPOCH</code> is found by in the environment by <code>configure</code>), the source date value will be determined at build time.</p>
|
||||
<p>There are several aspects of reproducible builds that can be individually adjusted by <code>configure</code> arguments. If any of these are given, they will override the value derived from <code>SOURCE_DATE_EPOCH</code>. These arguments are:</p>
|
||||
<ul>
|
||||
<li>Turn on build system support for reproducible builds</li>
|
||||
<li><p><code>--with-source-date</code></p>
|
||||
<p>This option controls how the JDK build sets <code>SOURCE_DATE_EPOCH</code> when building. It can be set to a value describing a date, either an epoch based timestamp as an integer, or a valid ISO-8601 date.</p>
|
||||
<p>It can also be set to one of the special values <code>current</code>, <code>updated</code> or <code>version</code>. <code>current</code> means that the time of running <code>configure</code> will be used. <code>version</code> will use the nominal release date for the current JDK version. <code>updated</code>, which means that <code>SOURCE_DATE_EPOCH</code> will be set to the current time each time you are running <code>make</code>. All choices, except for <code>updated</code>, will set a fixed value for the source date timestamp.</p>
|
||||
<p>When <code>SOURCE_DATE_EPOCH</code> is set, the default value for <code>--with-source-date</code> will be the value given by <code>SOURCE_DATE_EPOCH</code>. Otherwise, the default value is <code>updated</code>.</p></li>
|
||||
<li><p><code>--with-hotspot-build-time</code></p>
|
||||
<p>This option controls the build time string that will be included in the hotspot library (<code>libjvm.so</code> or <code>jvm.dll</code>). When the source date is fixed (e.g. by setting <code>SOURCE_DATE_EPOCH</code>), the default value for <code>--with-hotspot-build-time</code> will be an ISO 8601 representation of that time stamp. Otherwise the default value will be the current time when building hotspot.</p></li>
|
||||
<li><p><code>--with-copyright-year</code></p>
|
||||
<p>This option controls the copyright year in some generated text files. When the source date is fixed (e.g. by setting <code>SOURCE_DATE_EPOCH</code>), the default value for <code>--with-copyright-year</code> will be the year of that time stamp. Otherwise the default is the current year at the time of running configure. This can be overridden by <code>--with-copyright-year=<year></code>.</p></li>
|
||||
<li><p><code>--enable-reproducible-build</code></p>
|
||||
<p>This option controls some additional behavior needed to make the build reproducible. When the source date is fixed (e.g. by setting <code>SOURCE_DATE_EPOCH</code>), this flag will be turned on by default. Otherwise, the value is determined by heuristics. If it is explicitly turned off, the build might not be reproducible.</p></li>
|
||||
</ul>
|
||||
<p>Add the flag <code>--enable-reproducible-build</code> to your <code>configure</code> command line. This will turn on support for reproducible builds where it could otherwise be lacking.</p>
|
||||
<ul>
|
||||
<li>Do not rely on <code>configure</code>'s default adhoc version strings</li>
|
||||
</ul>
|
||||
<p>Default adhoc version strings OPT segment include user name, source directory and timestamp. You can either override just the OPT segment using <code>--with-version-opt=<any fixed string></code>, or you can specify the entire version string using <code>--with-version-string=<your version></code>.</p>
|
||||
<ul>
|
||||
<li>Specify how the build sets <code>SOURCE_DATE_EPOCH</code></li>
|
||||
</ul>
|
||||
<p>The JDK build system will set the <code>SOURCE_DATE_EPOCH</code> environment variable during building, depending on the value of the <code>--with-source-date</code> option for <code>configure</code>. The default value is <code>updated</code>, which means that <code>SOURCE_DATE_EPOCH</code> will be set to the current time each time you are running <code>make</code>.</p>
|
||||
<p>The <a href="https://reproducible-builds.org/docs/source-date-epoch/"><code>SOURCE_DATE_EPOCH</code> environment variable</a> is an industry standard, that many tools, such as gcc, recognize, and use in place of the current time when generating output.</p>
|
||||
<p>For reproducible builds, you need to set this to a fixed value. You can use the special value <code>version</code> which will use the nominal release date for the current JDK version, or a value describing a date, either an epoch based timestamp as an integer, or a valid ISO-8601 date.</p>
|
||||
<p><strong>Hint:</strong> If your build environment already sets <code>SOURCE_DATE_EPOCH</code>, you can propagate this using <code>--with-source-date=$SOURCE_DATE_EPOCH</code>.</p>
|
||||
<ul>
|
||||
<li>Specify a hotspot build time</li>
|
||||
</ul>
|
||||
<p>Set a fixed hotspot build time. This will be included in the hotspot library (<code>libjvm.so</code> or <code>jvm.dll</code>) and defaults to the current time when building hotspot. Use <code>--with-hotspot-build-time=<any fixed string></code> for reproducible builds. It's a string so you don't need to format it specifically, so e.g. <code>n/a</code> will do. Another solution is to use the <code>SOURCE_DATE_EPOCH</code> variable, e.g. <code>--with-hotspot-build-time=$(date --date=@$SOURCE_DATE_EPOCH)</code>.</p>
|
||||
<ul>
|
||||
<li>Copyright year</li>
|
||||
</ul>
|
||||
<p>The copyright year in some generated text files are normally set to the current year. This can be overridden by <code>--with-copyright-year=<year></code>. For fully reproducible builds, this needs to be set to a fixed value.</p>
|
||||
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
||||
<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>
|
||||
|
||||
136
doc/building.md
136
doc/building.md
@@ -135,6 +135,14 @@ space is required.
|
||||
If you do not have access to sufficiently powerful hardware, it is also
|
||||
possible to use [cross-compiling](#cross-compiling).
|
||||
|
||||
#### Branch Protection
|
||||
|
||||
In order to use Branch Protection features in the VM, `--enable-branch-protection`
|
||||
must be used. This option requires C++ compiler support (GCC 9.1.0+ or Clang
|
||||
10+). The resulting build can be run on both machines with and without support
|
||||
for branch protection in hardware. Branch Protection is only supported for
|
||||
Linux targets.
|
||||
|
||||
### Building on 32-bit arm
|
||||
|
||||
This is not recommended. Instead, see the section on [Cross-compiling](
|
||||
@@ -179,10 +187,10 @@ On Windows, it is important that you pay attention to the instructions in the
|
||||
|
||||
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 layers are Cygwin and Windows Subsystem for
|
||||
Linux (WSL). (Msys is no longer supported due to a too old bash; msys2 would
|
||||
likely be possible to support in a future version but that would require effort
|
||||
to implement.)
|
||||
Currently, the only supported such layers are Cygwin, Windows Subsystem for
|
||||
Linux (WSL), and MSYS2. (MSYS is no longer supported due to an outdated bash;
|
||||
While OpenJDK can be built with MSYS2, support for it is still experimental, so
|
||||
build failures and unusual errors are not uncommon.)
|
||||
|
||||
Internally in the build system, all paths are represented as Unix-style paths,
|
||||
e.g. `/cygdrive/c/git/jdk/Makefile` rather than `C:\git\jdk\Makefile`. This
|
||||
@@ -236,8 +244,8 @@ It's possible to build both Windows and Linux binaries from WSL. To build
|
||||
Windows binaries, you must use a Windows boot JDK (located in a
|
||||
Windows-accessible directory). To build Linux binaries, you must use a Linux
|
||||
boot JDK. The default behavior is to build for Windows. To build for Linux, pass
|
||||
`--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu` to
|
||||
`configure`.
|
||||
`--build=x86_64-unknown-linux-gnu --openjdk-target=x86_64-unknown-linux-gnu`
|
||||
to `configure`.
|
||||
|
||||
If building Windows binaries, the source code must be located in a Windows-
|
||||
accessible directory. This is because Windows executables (such as Visual Studio
|
||||
@@ -374,9 +382,10 @@ available for this update.
|
||||
|
||||
### Microsoft Visual Studio
|
||||
|
||||
The minimum accepted version of Visual Studio is 2017. Older versions will not
|
||||
be accepted by `configure` and will not work. The maximum accepted
|
||||
version of Visual Studio is 2019.
|
||||
For aarch64 machines running Windows the minimum accepted version is Visual Studio 2019
|
||||
(16.8 or higher). For all other platforms the minimum accepted version of
|
||||
Visual Studio is 2017. Older versions will not be accepted by `configure` and will
|
||||
not work. For all platforms the maximum accepted version of Visual Studio is 2022.
|
||||
|
||||
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
|
||||
@@ -977,11 +986,16 @@ You *must* specify the target platform when cross-compiling. Doing so will also
|
||||
automatically turn the build into a cross-compiling mode. The simplest way to
|
||||
do this is to use the `--openjdk-target` argument, e.g.
|
||||
`--openjdk-target=arm-linux-gnueabihf`. or `--openjdk-target=aarch64-oe-linux`.
|
||||
This will automatically set the `--build`, `--host` and `--target` options for
|
||||
This will automatically set the `--host` and `--target` options for
|
||||
autoconf, which can otherwise be confusing. (In autoconf terminology, the
|
||||
"target" is known as "host", and "target" is used for building a Canadian
|
||||
cross-compiler.)
|
||||
|
||||
If `--build` has not been explicitly passed to configure, `--openjdk-target`
|
||||
will autodetect the build platform and internally set the flag automatically,
|
||||
otherwise the platform that was explicitly passed to `--build` will be used
|
||||
instead.
|
||||
|
||||
### Toolchain Considerations
|
||||
|
||||
You will need two copies of your toolchain, one which generates output that can
|
||||
@@ -1513,57 +1527,85 @@ https://reproducible-builds.org) for more information about the background and
|
||||
reasons for reproducible builds.
|
||||
|
||||
Currently, it is not possible to build OpenJDK fully reproducibly, but getting
|
||||
there is an ongoing effort. There are some things you can do to minimize
|
||||
non-determinism and make a larger part of the build reproducible:
|
||||
there is an ongoing effort.
|
||||
|
||||
* Turn on build system support for reproducible builds
|
||||
An absolute prerequisite for building reproducible is to speficy a fixed build
|
||||
time, since time stamps are embedded in many file formats. This is done by
|
||||
setting the `SOURCE_DATE_EPOCH` environment variable, which is an [industry
|
||||
standard]( https://reproducible-builds.org/docs/source-date-epoch/), that many
|
||||
tools, such as gcc, recognize, and use in place of the current time when
|
||||
generating output.
|
||||
|
||||
Add the flag `--enable-reproducible-build` to your `configure` command line.
|
||||
This will turn on support for reproducible builds where it could otherwise be
|
||||
lacking.
|
||||
To generate reproducible builds, you must set `SOURCE_DATE_EPOCH` before running
|
||||
`configure`. The value in `SOURCE_DATE_EPOCH` will be stored in the
|
||||
configuration, and used by `make`. Setting `SOURCE_DATE_EPOCH` before running
|
||||
`make` will have no effect on the build.
|
||||
|
||||
* Do not rely on `configure`'s default adhoc version strings
|
||||
|
||||
Default adhoc version strings OPT segment include user name, source directory
|
||||
and timestamp. You can either override just the OPT segment using
|
||||
You must also make sure your build does not rely on `configure`'s default adhoc
|
||||
version strings. Default adhoc version strings `OPT` segment include user name
|
||||
and source directory. You can either override just the `OPT` segment using
|
||||
`--with-version-opt=<any fixed string>`, or you can specify the entire version
|
||||
string using `--with-version-string=<your version>`.
|
||||
|
||||
* Specify how the build sets `SOURCE_DATE_EPOCH`
|
||||
This is a typical example of how to build the JDK in a reproducible way:
|
||||
|
||||
The JDK build system will set the `SOURCE_DATE_EPOCH` environment variable
|
||||
during building, depending on the value of the `--with-source-date` option for
|
||||
`configure`. The default value is `updated`, which means that
|
||||
`SOURCE_DATE_EPOCH` will be set to the current time each time you are running
|
||||
`make`.
|
||||
```
|
||||
export SOURCE_DATE_EPOCH=946684800
|
||||
bash configure --with-version-opt=adhoc
|
||||
make
|
||||
```
|
||||
|
||||
The [`SOURCE_DATE_EPOCH` environment variable](
|
||||
https://reproducible-builds.org/docs/source-date-epoch/) is an industry
|
||||
standard, that many tools, such as gcc, recognize, and use in place of the
|
||||
current time when generating output.
|
||||
Note that regardless if you specify a source date for `configure` or not, the
|
||||
JDK build system will set `SOURCE_DATE_EPOCH` for all build tools when building.
|
||||
If `--with-source-date` has the value `updated` (which is the default unless
|
||||
`SOURCE_DATE_EPOCH` is found by in the environment by `configure`), the source
|
||||
date value will be determined at build time.
|
||||
|
||||
For reproducible builds, you need to set this to a fixed value. You can use the
|
||||
special value `version` which will use the nominal release date for the current
|
||||
JDK version, or a value describing a date, either an epoch based timestamp as an
|
||||
integer, or a valid ISO-8601 date.
|
||||
There are several aspects of reproducible builds that can be individually
|
||||
adjusted by `configure` arguments. If any of these are given, they will override
|
||||
the value derived from `SOURCE_DATE_EPOCH`. These arguments are:
|
||||
|
||||
**Hint:** If your build environment already sets `SOURCE_DATE_EPOCH`, you can
|
||||
propagate this using `--with-source-date=$SOURCE_DATE_EPOCH`.
|
||||
* `--with-source-date`
|
||||
|
||||
* Specify a hotspot build time
|
||||
This option controls how the JDK build sets `SOURCE_DATE_EPOCH` when
|
||||
building. It can be set to a value describing a date, either an epoch based
|
||||
timestamp as an integer, or a valid ISO-8601 date.
|
||||
|
||||
Set a fixed hotspot build time. This will be included in the hotspot library
|
||||
(`libjvm.so` or `jvm.dll`) and defaults to the current time when building
|
||||
hotspot. Use `--with-hotspot-build-time=<any fixed string>` for reproducible
|
||||
builds. It's a string so you don't need to format it specifically, so e.g. `n/a`
|
||||
will do. Another solution is to use the `SOURCE_DATE_EPOCH` variable, e.g.
|
||||
`--with-hotspot-build-time=$(date --date=@$SOURCE_DATE_EPOCH)`.
|
||||
It can also be set to one of the special values `current`, `updated` or
|
||||
`version`. `current` means that the time of running `configure` will be
|
||||
used. `version` will use the nominal release date for the current JDK
|
||||
version. `updated`, which means that `SOURCE_DATE_EPOCH` will be set to the
|
||||
current time each time you are running `make`. All choices, except for
|
||||
`updated`, will set a fixed value for the source date timestamp.
|
||||
|
||||
* Copyright year
|
||||
When `SOURCE_DATE_EPOCH` is set, the default value for `--with-source-date`
|
||||
will be the value given by `SOURCE_DATE_EPOCH`. Otherwise, the default value
|
||||
is `updated`.
|
||||
|
||||
The copyright year in some generated text files are normally set to the current
|
||||
year. This can be overridden by `--with-copyright-year=<year>`. For fully
|
||||
reproducible builds, this needs to be set to a fixed value.
|
||||
* `--with-hotspot-build-time`
|
||||
|
||||
This option controls the build time string that will be included in the
|
||||
hotspot library (`libjvm.so` or `jvm.dll`). When the source date is fixed
|
||||
(e.g. by setting `SOURCE_DATE_EPOCH`), the default value for
|
||||
`--with-hotspot-build-time` will be an ISO 8601 representation of that time
|
||||
stamp. Otherwise the default value will be the current time when building
|
||||
hotspot.
|
||||
|
||||
* `--with-copyright-year`
|
||||
|
||||
This option controls the copyright year in some generated text files. When
|
||||
the source date is fixed (e.g. by setting `SOURCE_DATE_EPOCH`), the default
|
||||
value for `--with-copyright-year` will be the year of that time stamp.
|
||||
Otherwise the default is the current year at the time of running configure.
|
||||
This can be overridden by `--with-copyright-year=<year>`.
|
||||
|
||||
* `--enable-reproducible-build`
|
||||
|
||||
This option controls some additional behavior needed to make the build
|
||||
reproducible. When the source date is fixed (e.g. by setting
|
||||
`SOURCE_DATE_EPOCH`), this flag will be turned on by default. Otherwise, the
|
||||
value is determined by heuristics. If it is explicitly turned off, the build
|
||||
might not be reproducible.
|
||||
|
||||
## Hints and Suggestions for Advanced Users
|
||||
|
||||
|
||||
@@ -67,7 +67,9 @@
|
||||
<h3 id="counterexamples-and-updates">Counterexamples and Updates</h3>
|
||||
<p>Many of the guidelines mentioned here have (sometimes widespread) counterexamples in the HotSpot code base. Finding a counterexample is not sufficient justification for new code to follow the counterexample as a precedent, since readers of your code will rightfully expect your code to follow the greater bulk of precedents documented here.</p>
|
||||
<p>Occasionally a guideline mentioned here may be just out of synch with the actual HotSpot code base. If you find that a guideline is consistently contradicted by a large number of counterexamples, please bring it up for discussion and possible change. The architectural rule, of course, is "When in Rome do as the Romans". Sometimes in the suburbs of Rome the rules are a little different; these differences can be pointed out here.</p>
|
||||
<p>Proposed changes should be discussed on the <a href="mailto:hotspot-dev@openjdk.java.net">HotSpot Developers</a> mailing list, and approved by <a href="https://en.wikipedia.org/wiki/Rough_consensus">rough consensus</a> of the <a href="https://openjdk.java.net/census#hotspot">HotSpot Group</a> Members. The Group Lead determines whether consensus has been reached. Changes are likely to be cautious and incremental, since HotSpot coders have been using these guidelines for years.</p>
|
||||
<p>Proposed changes should be discussed on the <a href="mailto:hotspot-dev@openjdk.java.net">HotSpot Developers</a> mailing list. Changes are likely to be cautious and incremental, since HotSpot coders have been using these guidelines for years.</p>
|
||||
<p>Substantive changes are approved by <a href="https://www.rfc-editor.org/rfc/rfc7282.html">rough consensus</a> of the <a href="https://openjdk.java.net/census#hotspot">HotSpot Group</a> Members. The Group Lead determines whether consensus has been reached.</p>
|
||||
<p>Editorial changes (changes that only affect the description of HotSpot style, not its substance) do not require the full consensus gathering process. The normal HotSpot pull request process may be used for editorial changes, with the additional requirement that the requisite reviewers are also HotSpot Group Members.</p>
|
||||
<h2 id="structure-and-formatting">Structure and Formatting</h2>
|
||||
<h3 id="factoring-and-class-design">Factoring and Class Design</h3>
|
||||
<ul>
|
||||
@@ -151,7 +153,7 @@
|
||||
<h3 id="whitespace">Whitespace</h3>
|
||||
<ul>
|
||||
<li><p>In general, don't change whitespace unless it improves readability or consistency. Gratuitous whitespace changes will make integrations and backports more difficult.</p></li>
|
||||
<li><p>Use One-True-Brace-Style. The opening brace for a function or class is normally at the end of the line; it is sometimes moved to the beginning of the next line for emphasis. Substatements are enclosed in braces, even if there is only a single statement. Extremely simple one-line statements may drop braces around a substatement.</p></li>
|
||||
<li><p>Use <a href="https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS)">One-True-Brace-Style</a>. The opening brace for a function or class is normally at the end of the line; it is sometimes moved to the beginning of the next line for emphasis. Substatements are enclosed in braces, even if there is only a single statement. Extremely simple one-line statements may drop braces around a substatement.</p></li>
|
||||
<li><p>Indentation levels are two columns.</p></li>
|
||||
<li><p>There is no hard line length limit. That said, bear in mind that excessively long lines can cause difficulties. Some people like to have multiple side-by-side windows in their editors, and long lines may force them to choose among unpleasant options. They can use wide windows, reducing the number that can fit across the screen, and wasting a lot of screen real estate because most lines are not that long. Alternatively, they can have more windows across the screen, with long lines wrapping (or worse, requiring scrolling to see in their entirety), which is harder to read. Similar issues exist for side-by-side code reviews.</p></li>
|
||||
<li><p>Tabs are not allowed in code. Set your editor accordingly.<br> (Emacs: <code>(setq-default indent-tabs-mode nil)</code>.)</p></li>
|
||||
@@ -195,7 +197,7 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
||||
<p>Similar discussions for some other projects:</p>
|
||||
<ul>
|
||||
<li><p><a href="https://google.github.io/styleguide/cppguide.html">Google C++ Style Guide</a> — Currently (2020) targeting C++17.</p></li>
|
||||
<li><p><a href="https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++11.md">C++11 and C++14 use in Chromium</a> — Categorizes features as allowed, banned, or to be discussed.</p></li>
|
||||
<li><p><a href="https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++-features.md">C++11 and C++14 use in Chromium</a> — Categorizes features as allowed, banned, or to be discussed.</p></li>
|
||||
<li><p><a href="https://llvm.org/docs/CodingStandards.html">llvm Coding Standards</a> — Currently (2020) targeting C++14.</p></li>
|
||||
<li><p><a href="https://firefox-source-docs.mozilla.org/code-quality/coding-style/using_cxx_in_firefox_code.html">Using C++ in Mozilla code</a> — C++17 support is required for recent versions (2020).</p></li>
|
||||
</ul>
|
||||
@@ -436,7 +438,7 @@ while ( test_foo(args...) ) { // No, excess spaces around control</code></pre></
|
||||
<li><p>Inline namespaces (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">n2535</a>) — HotSpot makes very limited use of namespaces.</p></li>
|
||||
<li><p><code>using namespace</code> directives. In particular, don't use <code>using namespace std;</code> to avoid needing to qualify Standard Library names.</p></li>
|
||||
<li><p>Propagating exceptions (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html">n2179</a>) — HotSpot does not permit the use of exceptions, so this feature isn't useful.</p></li>
|
||||
<li><p>Avoid namespace-scoped variables with non-constexpr initialization. In particular, avoid variables with types requiring non-trivial initialization or destruction. Initialization order problems can be difficult to deal with and lead to surprises, as can destruction ordering. HotSpot doesn't generally try to cleanup on exit, and running destructors at exit can also lead to problems.</p></li>
|
||||
<li><p>Avoid non-local variables with non-constexpr initialization. In particular, avoid variables with types requiring non-trivial initialization or destruction. Initialization order problems can be difficult to deal with and lead to surprises, as can destruction ordering. HotSpot doesn't generally try to cleanup on exit, and running destructors at exit can also lead to problems.</p></li>
|
||||
<li><p><code>[[deprecated]]</code> attribute (<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3760.html">n3760</a>) — Not relevant in HotSpot code.</p></li>
|
||||
<li><p>Avoid most operator overloading, preferring named functions. When operator overloading is used, ensure the semantics conform to the normal expected behavior of the operation.</p></li>
|
||||
<li><p>Avoid most implicit conversion constructors and (implicit or explicit) conversion operators. (Note that conversion to <code>bool</code> isn't needed in HotSpot code because of the "no implicit boolean" guideline.)</p></li>
|
||||
|
||||
@@ -56,12 +56,19 @@ can be pointed out here.
|
||||
|
||||
Proposed changes should be discussed on the
|
||||
[HotSpot Developers](mailto:hotspot-dev@openjdk.java.net) mailing
|
||||
list, and approved by
|
||||
[rough consensus](https://en.wikipedia.org/wiki/Rough_consensus) of
|
||||
list. Changes are likely to be cautious and incremental, since HotSpot
|
||||
coders have been using these guidelines for years.
|
||||
|
||||
Substantive changes are approved by
|
||||
[rough consensus](https://www.rfc-editor.org/rfc/rfc7282.html) of
|
||||
the [HotSpot Group](https://openjdk.java.net/census#hotspot) Members.
|
||||
The Group Lead determines whether consensus has been reached.
|
||||
Changes are likely to be cautious and incremental, since HotSpot
|
||||
coders have been using these guidelines for years.
|
||||
|
||||
Editorial changes (changes that only affect the description of HotSpot
|
||||
style, not its substance) do not require the full consensus gathering
|
||||
process. The normal HotSpot pull request process may be used for
|
||||
editorial changes, with the additional requirement that the requisite
|
||||
reviewers are also HotSpot Group Members.
|
||||
|
||||
## Structure and Formatting
|
||||
|
||||
@@ -287,7 +294,9 @@ well.
|
||||
or consistency. Gratuitous whitespace changes will make integrations
|
||||
and backports more difficult.
|
||||
|
||||
* Use One-True-Brace-Style. The opening brace for a function or class
|
||||
* Use [One-True-Brace-Style](
|
||||
https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS)).
|
||||
The opening brace for a function or class
|
||||
is normally at the end of the line; it is sometimes moved to the
|
||||
beginning of the next line for emphasis. Substatements are enclosed
|
||||
in braces, even if there is only a single statement. Extremely simple
|
||||
@@ -409,7 +418,7 @@ Similar discussions for some other projects:
|
||||
* [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) —
|
||||
Currently (2020) targeting C++17.
|
||||
|
||||
* [C++11 and C++14 use in Chromium](https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++11.md) —
|
||||
* [C++11 and C++14 use in Chromium](https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++-features.md) —
|
||||
Categorizes features as allowed, banned, or to be discussed.
|
||||
|
||||
* [llvm Coding Standards](https://llvm.org/docs/CodingStandards.html) —
|
||||
@@ -1057,7 +1066,7 @@ namespace std;` to avoid needing to qualify Standard Library names.
|
||||
([n2179](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html)) —
|
||||
HotSpot does not permit the use of exceptions, so this feature isn't useful.
|
||||
|
||||
* Avoid namespace-scoped variables with non-constexpr initialization.
|
||||
* Avoid non-local variables with non-constexpr initialization.
|
||||
In particular, avoid variables with types requiring non-trivial
|
||||
initialization or destruction. Initialization order problems can be
|
||||
difficult to deal with and lead to surprises, as can destruction
|
||||
|
||||
12
doc/ide.html
12
doc/ide.html
@@ -41,14 +41,20 @@
|
||||
<pre class="shell"><code>make vscode-project-clangd</code></pre>
|
||||
<p>Additional instructions for configuring the given indexer will be displayed after the workspace has been generated.</p>
|
||||
<h4 id="visual-studio">Visual Studio</h4>
|
||||
<p>This section is a work in progress.</p>
|
||||
<pre class="shell"><code>make ide-project</code></pre>
|
||||
<p>The make system can generate a Visual Studio project for the Hotspot native source. After configuring, the project is generated using:</p>
|
||||
<pre class="shell"><code>make hotspot-ide-project</code></pre>
|
||||
<p>This creates a file named <code>jvm.vcxproj</code> in <code>ide\hotspot-visualstudio</code> subfolder of the build output folder. The file can be opened in Visual Studio via <code>File -> Open -> Project/Solution</code>.</p>
|
||||
<h4 id="compilation-database">Compilation Database</h4>
|
||||
<p>The make system can generate generic native code indexing support in the form of a <a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">Compilation Database</a> that can be used by many different IDEs and source code indexers.</p>
|
||||
<pre class="shell"><code>make compile-commands</code></pre>
|
||||
<p>It's also possible to generate the Compilation Database for the HotSpot source code only, which is a bit faster as it includes less information.</p>
|
||||
<pre class="shell"><code>make compile-commands-hotspot</code></pre>
|
||||
<h3 id="ide-support-for-java-code">IDE support for Java code</h3>
|
||||
<p>This section is a work in progress.</p>
|
||||
<h4 id="intellij-idea">IntelliJ IDEA</h4>
|
||||
<p>The JDK project has a script that can be used for indexing the project with IntelliJ. After configuring and building the JDK, an IntelliJ workspace can be generated by running the following command in the top-level folder of the cloned repository:</p>
|
||||
<pre class="shell"><code>bash bin/idea.sh</code></pre>
|
||||
<p>To use it, choose <code>File -> Open...</code> in IntelliJ and select the folder where you ran the above script.</p>
|
||||
<p>Next, configure the project SDK in IntelliJ. Open <code>File -> Project Structure -> Project</code> and select <code>build/<config>/images/jdk</code> as the SDK to use.</p>
|
||||
<p>In order to run the tests from the IDE, you can use the JTReg plugin. Instructions for building and using the plugin can be found <a href="https://github.com/openjdk/jtreg/tree/master/plugins/idea">here</a>.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
31
doc/ide.md
31
doc/ide.md
@@ -45,12 +45,17 @@ after the workspace has been generated.
|
||||
|
||||
#### Visual Studio
|
||||
|
||||
This section is a work in progress.
|
||||
The make system can generate a Visual Studio project for the Hotspot
|
||||
native source. After configuring, the project is generated using:
|
||||
|
||||
```shell
|
||||
make ide-project
|
||||
make hotspot-ide-project
|
||||
```
|
||||
|
||||
This creates a file named `jvm.vcxproj` in `ide\hotspot-visualstudio`
|
||||
subfolder of the build output folder. The file can be opened in Visual Studio
|
||||
via `File -> Open -> Project/Solution`.
|
||||
|
||||
#### Compilation Database
|
||||
|
||||
The make system can generate generic native code indexing support in the form of
|
||||
@@ -70,4 +75,24 @@ make compile-commands-hotspot
|
||||
|
||||
### IDE support for Java code
|
||||
|
||||
This section is a work in progress.
|
||||
#### IntelliJ IDEA
|
||||
|
||||
The JDK project has a script that can be used for indexing the project
|
||||
with IntelliJ. After configuring and building the JDK, an IntelliJ workspace
|
||||
can be generated by running the following command in the top-level folder
|
||||
of the cloned repository:
|
||||
|
||||
```shell
|
||||
bash bin/idea.sh
|
||||
```
|
||||
|
||||
To use it, choose `File -> Open...` in IntelliJ and select the folder where
|
||||
you ran the above script.
|
||||
|
||||
Next, configure the project SDK in IntelliJ. Open
|
||||
`File -> Project Structure -> Project` and select `build/<config>/images/jdk`
|
||||
as the SDK to use.
|
||||
|
||||
In order to run the tests from the IDE, you can use the JTReg plugin.
|
||||
Instructions for building and using the plugin can be found
|
||||
[here](https://github.com/openjdk/jtreg/tree/master/plugins/idea).
|
||||
|
||||
@@ -193,9 +193,9 @@ TEST FAILURE</code></pre>
|
||||
<h4 id="aot_modules-1">AOT_MODULES</h4>
|
||||
<p>Generate AOT modules before testing for the specified module, or set of modules. If multiple modules are specified, they should be separated by space (or, to help avoid quoting issues, the special value <code>%20</code>).</p>
|
||||
<h4 id="retry_count">RETRY_COUNT</h4>
|
||||
<p>Retry failed tests up to a set number of times. Defaults to 0.</p>
|
||||
<p>Retry failed tests up to a set number of times, until they pass. This allows to pass the tests with intermittent failures. Defaults to 0.</p>
|
||||
<h4 id="repeat_count">REPEAT_COUNT</h4>
|
||||
<p>Repeat the tests for a set number of times. Defaults to 0.</p>
|
||||
<p>Repeat the tests up to a set number of times, stopping at first failure. This helps to reproduce intermittent test failures. Defaults to 0.</p>
|
||||
<h3 id="gtest-keywords">Gtest keywords</h3>
|
||||
<h4 id="repeat">REPEAT</h4>
|
||||
<p>The number of times to repeat the tests (<code>--gtest_repeat</code>).</p>
|
||||
|
||||
@@ -419,11 +419,15 @@ modules. If multiple modules are specified, they should be separated by space
|
||||
|
||||
#### RETRY_COUNT
|
||||
|
||||
Retry failed tests up to a set number of times. Defaults to 0.
|
||||
Retry failed tests up to a set number of times, until they pass.
|
||||
This allows to pass the tests with intermittent failures.
|
||||
Defaults to 0.
|
||||
|
||||
#### REPEAT_COUNT
|
||||
|
||||
Repeat the tests for a set number of times. Defaults to 0.
|
||||
Repeat the tests up to a set number of times, stopping at first failure.
|
||||
This helps to reproduce intermittent test failures.
|
||||
Defaults to 0.
|
||||
|
||||
### Gtest keywords
|
||||
|
||||
|
||||
@@ -226,6 +226,13 @@ else
|
||||
JMOD_FLAGS += --exclude '**{_the.*,_*.marker*,*.diz,*.debuginfo,*.dSYM/**,*.dSYM}'
|
||||
endif
|
||||
|
||||
# For reproducible builds specify the jmod --date using SOURCE_DATE in ISO-8601
|
||||
ifeq ($(ENABLE_REPRODUCIBLE_BUILD), true)
|
||||
JMOD_SOURCE_DATE := --date $(SOURCE_DATE_ISO_8601)
|
||||
else
|
||||
JMOD_SOURCE_DATE :=
|
||||
endif
|
||||
|
||||
# Create jmods in the support dir and then move them into place to keep the
|
||||
# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times.
|
||||
$(eval $(call SetupExecute, create_$(JMOD_FILE), \
|
||||
@@ -237,6 +244,7 @@ $(eval $(call SetupExecute, create_$(JMOD_FILE), \
|
||||
COMMAND := $(JMOD) create --module-version $(VERSION_SHORT) \
|
||||
--target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \
|
||||
--module-path $(JMODS_DIR) $(JMOD_FLAGS) \
|
||||
$(JMOD_SOURCE_DATE) \
|
||||
$(JMODS_SUPPORT_DIR)/$(JMOD_FILE), \
|
||||
POST_COMMAND := $(MV) $(JMODS_SUPPORT_DIR)/$(JMOD_FILE) $(JMODS_DIR)/$(JMOD_FILE), \
|
||||
))
|
||||
|
||||
@@ -131,7 +131,7 @@ JAVA_PLATFORM := Java Platform
|
||||
|
||||
ifeq ($(IS_DRAFT), true)
|
||||
DRAFT_MARKER_STR := <br><strong>DRAFT $(VERSION_STRING)</strong>
|
||||
ifeq ($(VERSION_BUILD), 0)
|
||||
ifeq ($(VERSION_BUILD), )
|
||||
DRAFT_MARKER_TITLE := $(SPACE)[ad-hoc build]
|
||||
else
|
||||
DRAFT_MARKER_TITLE := $(SPACE)[build $(VERSION_BUILD)]
|
||||
|
||||
210
make/Hsdis.gmk
210
make/Hsdis.gmk
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2020, 2022, 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
|
||||
@@ -35,107 +35,165 @@ include JdkNativeCompilation.gmk
|
||||
################################################################################
|
||||
|
||||
HSDIS_OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/hsdis
|
||||
REAL_HSDIS_NAME := hsdis-$(OPENJDK_TARGET_CPU_LEGACY_LIB)$(SHARED_LIBRARY_SUFFIX)
|
||||
BUILT_HSDIS_LIB := $(HSDIS_OUTPUT_DIR)/$(REAL_HSDIS_NAME)
|
||||
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
INSTALLED_HSDIS_DIR := $(JDK_OUTPUTDIR)/bin
|
||||
HSDIS_TOOLCHAIN := TOOLCHAIN_DEFAULT
|
||||
HSDIS_TOOLCHAIN_CFLAGS := $(CFLAGS_JDKLIB)
|
||||
HSDIS_TOOLCHAIN_LDFLAGS := $(LDFLAGS_JDKLIB)
|
||||
|
||||
# On windows, we need to "fake" a completely different toolchain using gcc
|
||||
# instead of the normal microsoft toolchain. This is quite hacky...
|
||||
|
||||
MINGW_BASE := x86_64-w64-mingw32
|
||||
|
||||
MINGW_SYSROOT = $(shell $(MINGW_BASE)-gcc -print-sysroot)
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT)), )
|
||||
# Use fallback path
|
||||
MINGW_SYSROOT := /usr/$(MINGW_BASE)
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT)), )
|
||||
$(error mingw sysroot not found)
|
||||
endif
|
||||
ifeq ($(HSDIS_BACKEND), capstone)
|
||||
ifeq ($(call isTargetCpuArch, x86), true)
|
||||
CAPSTONE_ARCH := CS_ARCH_X86
|
||||
CAPSTONE_MODE := CS_MODE_$(OPENJDK_TARGET_CPU_BITS)
|
||||
else ifeq ($(call isTargetCpuArch, aarch64), true)
|
||||
CAPSTONE_ARCH := CS_ARCH_ARM64
|
||||
CAPSTONE_MODE := CS_MODE_ARM
|
||||
else
|
||||
$(error No support for Capstone on this platform)
|
||||
endif
|
||||
|
||||
$(eval $(call DefineNativeToolchain, TOOLCHAIN_MINGW, \
|
||||
CC := $(MINGW_BASE)-gcc, \
|
||||
LD := $(MINGW_BASE)-ld, \
|
||||
OBJCOPY := $(MINGW_BASE)-objcopy, \
|
||||
RC := $(RC), \
|
||||
SYSROOT_CFLAGS := --sysroot=$(MINGW_SYSROOT), \
|
||||
SYSROOT_LDFLAGS := --sysroot=$(MINGW_SYSROOT), \
|
||||
))
|
||||
|
||||
MINGW_SYSROOT_LIB_PATH := $(MINGW_SYSROOT)/mingw/lib
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT_LIB_PATH)), )
|
||||
# Try without mingw
|
||||
MINGW_SYSROOT_LIB_PATH := $(MINGW_SYSROOT)/lib
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT_LIB_PATH)), )
|
||||
$(error mingw sysroot lib path not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
MINGW_VERSION = $(shell $(MINGW_BASE)-gcc -v 2>&1 | $(GREP) "gcc version" | $(CUT) -d " " -f 3)
|
||||
MINGW_GCC_LIB_PATH := /usr/lib/gcc/$(MINGW_BASE)/$(MINGW_VERSION)
|
||||
ifeq ($(wildcard $(MINGW_GCC_LIB_PATH)), )
|
||||
# Try using only major version number
|
||||
MINGW_VERSION_MAJOR := $(firstword $(subst ., , $(MINGW_VERSION)))
|
||||
MINGW_GCC_LIB_PATH := /usr/lib/gcc/$(MINGW_BASE)/$(MINGW_VERSION_MAJOR)
|
||||
ifeq ($(wildcard $(MINGW_GCC_LIB_PATH)), )
|
||||
$(error mingw gcc lib path not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
TOOLCHAIN_TYPE := gcc
|
||||
OPENJDK_TARGET_OS := linux
|
||||
CC_OUT_OPTION := -o$(SPACE)
|
||||
LD_OUT_OPTION := -o$(SPACE)
|
||||
GENDEPS_FLAGS := -MMD -MF
|
||||
CFLAGS_DEBUG_SYMBOLS := -g
|
||||
DISABLED_WARNINGS :=
|
||||
DISABLE_WARNING_PREFIX := -Wno-
|
||||
CFLAGS_WARNINGS_ARE_ERRORS := -Werror
|
||||
SHARED_LIBRARY_FLAGS := -shared
|
||||
|
||||
HSDIS_TOOLCHAIN := TOOLCHAIN_MINGW
|
||||
HSDIS_TOOLCHAIN_CFLAGS :=
|
||||
HSDIS_TOOLCHAIN_LDFLAGS := -L$(MINGW_GCC_LIB_PATH) -L$(MINGW_SYSROOT_LIB_PATH)
|
||||
MINGW_DLLCRT := $(MINGW_SYSROOT_LIB_PATH)/dllcrt2.o
|
||||
HSDIS_TOOLCHAIN_LIBS := $(MINGW_DLLCRT) -lmingw32 -lgcc -lgcc_eh -lmoldname \
|
||||
-lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32
|
||||
else
|
||||
INSTALLED_HSDIS_DIR := $(JDK_OUTPUTDIR)/lib
|
||||
|
||||
HSDIS_TOOLCHAIN := TOOLCHAIN_DEFAULT
|
||||
HSDIS_TOOLCHAIN_CFLAGS := $(CFLAGS_JDKLIB)
|
||||
HSDIS_TOOLCHAIN_LDFLAGS := $(LDFLAGS_JDKLIB)
|
||||
HSDIS_TOOLCHAIN_LIBS := -ldl
|
||||
HSDIS_CFLAGS += -DCAPSTONE_ARCH=$(CAPSTONE_ARCH) \
|
||||
-DCAPSTONE_MODE=$(CAPSTONE_MODE)
|
||||
endif
|
||||
|
||||
ifeq ($(HSDIS_BACKEND), llvm)
|
||||
# Use C++ instead of C
|
||||
HSDIS_TOOLCHAIN_CFLAGS := $(CXXFLAGS_JDKLIB)
|
||||
HSDIS_TOOLCHAIN := TOOLCHAIN_LINK_CXX
|
||||
|
||||
ifeq ($(call isTargetOs, linux), true)
|
||||
LLVM_OS := pc-linux-gnu
|
||||
else ifeq ($(call isTargetOs, macosx), true)
|
||||
LLVM_OS := apple-darwin
|
||||
else ifeq ($(call isTargetOs, windows), true)
|
||||
LLVM_OS := pc-windows-msvc
|
||||
else
|
||||
$(error No support for LLVM on this platform)
|
||||
endif
|
||||
|
||||
HSDIS_CFLAGS += -DLLVM_DEFAULT_TRIPLET='"$(OPENJDK_TARGET_CPU)-$(LLVM_OS)"'
|
||||
endif
|
||||
|
||||
ifeq ($(HSDIS_BACKEND), binutils)
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
# On windows, we need to "fake" a completely different toolchain using gcc
|
||||
# instead of the normal microsoft toolchain. This is quite hacky...
|
||||
|
||||
MINGW_BASE := x86_64-w64-mingw32
|
||||
|
||||
MINGW_SYSROOT = $(shell $(MINGW_BASE)-gcc -print-sysroot)
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT)), )
|
||||
# Use fallback path
|
||||
MINGW_SYSROOT := /usr/$(MINGW_BASE)
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT)), )
|
||||
$(error mingw sysroot not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(eval $(call DefineNativeToolchain, TOOLCHAIN_MINGW, \
|
||||
CC := $(MINGW_BASE)-gcc, \
|
||||
LD := $(MINGW_BASE)-ld, \
|
||||
OBJCOPY := $(MINGW_BASE)-objcopy, \
|
||||
RC := $(RC), \
|
||||
SYSROOT_CFLAGS := --sysroot=$(MINGW_SYSROOT), \
|
||||
SYSROOT_LDFLAGS := --sysroot=$(MINGW_SYSROOT), \
|
||||
))
|
||||
|
||||
MINGW_SYSROOT_LIB_PATH := $(MINGW_SYSROOT)/mingw/lib
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT_LIB_PATH)), )
|
||||
# Try without mingw
|
||||
MINGW_SYSROOT_LIB_PATH := $(MINGW_SYSROOT)/lib
|
||||
ifeq ($(wildcard $(MINGW_SYSROOT_LIB_PATH)), )
|
||||
$(error mingw sysroot lib path not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
MINGW_VERSION = $(shell $(MINGW_BASE)-gcc -v 2>&1 | $(GREP) "gcc version" | $(CUT) -d " " -f 3)
|
||||
MINGW_GCC_LIB_PATH := /usr/lib/gcc/$(MINGW_BASE)/$(MINGW_VERSION)
|
||||
ifeq ($(wildcard $(MINGW_GCC_LIB_PATH)), )
|
||||
# Try using only major version number
|
||||
MINGW_VERSION_MAJOR := $(firstword $(subst ., , $(MINGW_VERSION)))
|
||||
MINGW_GCC_LIB_PATH := /usr/lib/gcc/$(MINGW_BASE)/$(MINGW_VERSION_MAJOR)
|
||||
ifeq ($(wildcard $(MINGW_GCC_LIB_PATH)), )
|
||||
$(error mingw gcc lib path not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
TOOLCHAIN_TYPE := gcc
|
||||
OPENJDK_TARGET_OS := linux
|
||||
CC_OUT_OPTION := -o$(SPACE)
|
||||
LD_OUT_OPTION := -o$(SPACE)
|
||||
GENDEPS_FLAGS := -MMD -MF
|
||||
CFLAGS_DEBUG_SYMBOLS := -g
|
||||
DISABLED_WARNINGS :=
|
||||
DISABLE_WARNING_PREFIX := -Wno-
|
||||
CFLAGS_WARNINGS_ARE_ERRORS := -Werror
|
||||
SHARED_LIBRARY_FLAGS := -shared
|
||||
|
||||
HSDIS_TOOLCHAIN := TOOLCHAIN_MINGW
|
||||
HSDIS_TOOLCHAIN_CFLAGS :=
|
||||
HSDIS_TOOLCHAIN_LDFLAGS := -L$(MINGW_GCC_LIB_PATH) -L$(MINGW_SYSROOT_LIB_PATH)
|
||||
MINGW_DLLCRT := $(MINGW_SYSROOT_LIB_PATH)/dllcrt2.o
|
||||
HSDIS_TOOLCHAIN_LIBS := $(MINGW_DLLCRT) -lmingw32 -lgcc -lgcc_eh -lmoldname \
|
||||
-lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32
|
||||
else
|
||||
HSDIS_TOOLCHAIN_LIBS := -ldl
|
||||
endif
|
||||
endif
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_HSDIS, \
|
||||
NAME := hsdis, \
|
||||
SRC := $(TOPDIR)/src/utils/hsdis, \
|
||||
SRC := $(TOPDIR)/src/utils/hsdis/$(HSDIS_BACKEND), \
|
||||
EXTRA_HEADER_DIRS := $(TOPDIR)/src/utils/hsdis, \
|
||||
TOOLCHAIN := $(HSDIS_TOOLCHAIN), \
|
||||
OUTPUT_DIR := $(HSDIS_OUTPUT_DIR), \
|
||||
OBJECT_DIR := $(HSDIS_OUTPUT_DIR), \
|
||||
DISABLED_WARNINGS_gcc := undef format-nonliteral sign-compare, \
|
||||
DISABLED_WARNINGS_clang := undef format-nonliteral, \
|
||||
CFLAGS := $(HSDIS_TOOLCHAIN_CFLAGS) $(HSDIS_CFLAGS), \
|
||||
LDFLAGS := $(HSDIS_TOOLCHAIN_LDFLAGS) $(SHARED_LIBRARY_FLAGS), \
|
||||
LDFLAGS := $(HSDIS_TOOLCHAIN_LDFLAGS) $(HSDIS_LDFLAGS) $(SHARED_LIBRARY_FLAGS), \
|
||||
LIBS := $(HSDIS_LIBS) $(HSDIS_TOOLCHAIN_LIBS), \
|
||||
))
|
||||
|
||||
build: $(BUILD_HSDIS)
|
||||
$(BUILT_HSDIS_LIB): $(BUILD_HSDIS_TARGET)
|
||||
$(install-file)
|
||||
|
||||
build: $(BUILD_HSDIS) $(BUILT_HSDIS_LIB)
|
||||
|
||||
TARGETS += build
|
||||
|
||||
INSTALLED_HSDIS_NAME := hsdis-$(OPENJDK_TARGET_CPU_LEGACY_LIB)$(SHARED_LIBRARY_SUFFIX)
|
||||
ifeq ($(ENABLE_HSDIS_BUNDLING), false)
|
||||
|
||||
INSTALLED_HSDIS := $(INSTALLED_HSDIS_DIR)/$(INSTALLED_HSDIS_NAME)
|
||||
ifeq ($(call isTargetOs, windows), true)
|
||||
JDK_HSDIS_DIR := $(JDK_OUTPUTDIR)/bin
|
||||
IMAGE_HSDIS_DIR := $(JDK_IMAGE_DIR)/bin
|
||||
else
|
||||
JDK_HSDIS_DIR := $(JDK_OUTPUTDIR)/lib
|
||||
IMAGE_HSDIS_DIR := $(JDK_IMAGE_DIR)/lib
|
||||
endif
|
||||
|
||||
$(INSTALLED_HSDIS): $(BUILD_HSDIS_TARGET)
|
||||
$(call LogWarn, NOTE: The resulting build might not be redistributable. Seek legal advice before distibuting.)
|
||||
|
||||
INSTALLED_HSDIS_JDK := $(JDK_HSDIS_DIR)/$(REAL_HSDIS_NAME)
|
||||
INSTALLED_HSDIS_IMAGE := $(IMAGE_HSDIS_DIR)/$(REAL_HSDIS_NAME)
|
||||
|
||||
$(INSTALLED_HSDIS_JDK): $(BUILT_HSDIS_LIB)
|
||||
ifeq ($(HSDIS_BACKEND), binutils)
|
||||
$(call LogWarn, NOTE: The resulting build might not be redistributable. Seek legal advice before distributing.)
|
||||
endif
|
||||
$(install-file)
|
||||
|
||||
$(INSTALLED_HSDIS_IMAGE): $(BUILT_HSDIS_LIB)
|
||||
$(install-file)
|
||||
|
||||
install: $(INSTALLED_HSDIS)
|
||||
install: $(INSTALLED_HSDIS_JDK) $(INSTALLED_HSDIS_IMAGE)
|
||||
|
||||
else
|
||||
|
||||
install:
|
||||
$(ECHO) NOTE: make install-hsdis is a no-op with --enable-hsdis-bundling
|
||||
|
||||
endif
|
||||
|
||||
TARGETS += install
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -310,9 +310,17 @@ else # $(HAS_SPEC)=true
|
||||
# level of reproducible builds
|
||||
define SetupReproducibleBuild
|
||||
ifeq ($$(SOURCE_DATE), updated)
|
||||
SOURCE_DATE := $$(shell $$(DATE) +"%s")
|
||||
# For static values of SOURCE_DATE (not "updated"), these are set in spec.gmk
|
||||
export SOURCE_DATE_EPOCH := $$(shell $$(DATE) +"%s")
|
||||
ifeq ($$(IS_GNU_DATE), yes)
|
||||
export SOURCE_DATE_ISO_8601 := $$(shell $$(DATE) --utc \
|
||||
--date="@$$(SOURCE_DATE_EPOCH)" +"$$(ISO_8601_FORMAT_STRING)" \
|
||||
2> /dev/null)
|
||||
else
|
||||
export SOURCE_DATE_ISO_8601 := $$(shell $$(DATE) -u -j -f "%s" \
|
||||
"$$(SOURCE_DATE_EPOCH)" +"$$(ISO_8601_FORMAT_STRING)" 2> /dev/null)
|
||||
endif
|
||||
endif
|
||||
export SOURCE_DATE_EPOCH := $$(SOURCE_DATE)
|
||||
endef
|
||||
|
||||
# Parse COMPARE_BUILD into COMPARE_BUILD_*
|
||||
|
||||
@@ -535,6 +535,7 @@ ifneq ($(HSDIS_BACKEND), none)
|
||||
$(eval $(call SetupTarget, install-hsdis, \
|
||||
MAKEFILE := Hsdis, \
|
||||
TARGET := install, \
|
||||
DEPS := jdk-image, \
|
||||
))
|
||||
endif
|
||||
|
||||
@@ -861,6 +862,10 @@ else
|
||||
$(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
|
||||
$(eval $t: java.base-libs))
|
||||
|
||||
ifeq ($(ENABLE_HSDIS_BUNDLING), true)
|
||||
java.base-copy: build-hsdis
|
||||
endif
|
||||
|
||||
# jdk.accessibility depends on java.desktop
|
||||
jdk.accessibility-libs: java.desktop-libs
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@ BUILD_INFO_PROPERTIES := $(TEST_IMAGE_DIR)/build-info.properties
|
||||
$(BUILD_INFO_PROPERTIES):
|
||||
$(call MakeTargetDir)
|
||||
$(ECHO) "# Build info properties for JDK tests" > $@
|
||||
$(ECHO) "build.workspace.root=$(call FixPath, $(WORKSPACE_ROOT))" >> $@
|
||||
$(ECHO) "build.output.root=$(call FixPath, $(OUTPUTDIR))" >> $@
|
||||
$(ECHO) 'build.workspace.root=$(call FixPath, $(WORKSPACE_ROOT))' >> $@
|
||||
$(ECHO) 'build.output.root=$(call FixPath, $(OUTPUTDIR))' >> $@
|
||||
|
||||
README := $(TEST_IMAGE_DIR)/Readme.txt
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -438,7 +438,9 @@ AC_DEFUN([BASIC_CHECK_DIR_ON_LOCAL_DISK],
|
||||
AC_DEFUN_ONCE([BASIC_CHECK_SRC_PERMS],
|
||||
[
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
file_to_test="$TOPDIR/LICENSE"
|
||||
# The choice of file here is somewhat arbitrary, it just needs to be there
|
||||
# in the source tree when configure runs
|
||||
file_to_test="$TOPDIR/Makefile"
|
||||
if test `$STAT -c '%a' "$file_to_test"` -lt 400; then
|
||||
AC_MSG_ERROR([Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin.])
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -80,6 +80,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
|
||||
|
||||
# Optional tools, we can do without them
|
||||
UTIL_LOOKUP_PROGS(DF, df)
|
||||
UTIL_LOOKUP_PROGS(GIT, git)
|
||||
UTIL_LOOKUP_PROGS(NICE, nice)
|
||||
UTIL_LOOKUP_PROGS(READLINK, greadlink readlink)
|
||||
|
||||
@@ -339,7 +340,6 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
UTIL_LOOKUP_PROGS(READELF, greadelf readelf)
|
||||
UTIL_LOOKUP_PROGS(DOT, dot)
|
||||
UTIL_LOOKUP_PROGS(HG, hg)
|
||||
UTIL_LOOKUP_PROGS(GIT, git)
|
||||
UTIL_LOOKUP_PROGS(STAT, stat)
|
||||
UTIL_LOOKUP_PROGS(TIME, time)
|
||||
UTIL_LOOKUP_PROGS(FLOCK, flock)
|
||||
@@ -356,13 +356,17 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
fi
|
||||
AC_SUBST(IS_GNU_TIME)
|
||||
|
||||
# Check if it's GNU date
|
||||
check_date=`$DATE --version 2>&1 | $GREP GNU`
|
||||
# Check if it's a GNU date compatible version
|
||||
AC_MSG_CHECKING([if date is a GNU compatible version])
|
||||
check_date=`$DATE --version 2>&1 | $GREP "GNU\|BusyBox"`
|
||||
if test "x$check_date" != x; then
|
||||
AC_MSG_RESULT([yes])
|
||||
IS_GNU_DATE=yes
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
IS_GNU_DATE=no
|
||||
fi
|
||||
AC_SUBST(IS_GNU_DATE)
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
|
||||
UTIL_REQUIRE_PROGS(DSYMUTIL, dsymutil)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -185,6 +185,16 @@ AC_DEFUN([BASIC_SETUP_PATHS_WINDOWS],
|
||||
AC_MSG_RESULT([unknown])
|
||||
AC_MSG_WARN([It seems that your find utility is non-standard.])
|
||||
fi
|
||||
|
||||
if test "x$GIT" != x && test -e $TOPDIR/.git; then
|
||||
git_autocrlf=`$GIT config core.autocrlf`
|
||||
if test "x$git_autocrlf" != x && test "x$git_autocrlf" != "xfalse"; then
|
||||
AC_MSG_NOTICE([Your git configuration does not set core.autocrlf to false.])
|
||||
AC_MSG_NOTICE([If you checked out this code using that setting, the build WILL fail.])
|
||||
AC_MSG_NOTICE([To correct, run "git config --global core.autocrlf false" and re-clone the repo.])
|
||||
AC_MSG_WARN([Code is potentially incorrectly cloned. HIGH RISK of build failure!])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
# Verify that the directory is usable on Windows
|
||||
|
||||
@@ -379,6 +379,16 @@ AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK],
|
||||
|
||||
# Finally, set some other options...
|
||||
|
||||
# Determine if the boot jdk jar supports the --date option
|
||||
if $JAR --help 2>&1 | $GREP -q "\-\-date=TIMESTAMP"; then
|
||||
BOOT_JDK_JAR_SUPPORTS_DATE=true
|
||||
else
|
||||
BOOT_JDK_JAR_SUPPORTS_DATE=false
|
||||
fi
|
||||
AC_MSG_CHECKING([if Boot JDK jar supports --date=TIMESTAMP])
|
||||
AC_MSG_RESULT([$BOOT_JDK_JAR_SUPPORTS_DATE])
|
||||
AC_SUBST(BOOT_JDK_JAR_SUPPORTS_DATE)
|
||||
|
||||
# When compiling code to be executed by the Boot JDK, force compatibility with the
|
||||
# oldest supported bootjdk.
|
||||
OLDEST_BOOT_JDK=`$ECHO $DEFAULT_ACCEPTABLE_BOOT_VERSIONS \
|
||||
|
||||
@@ -53,7 +53,7 @@ export LDD="@LDD@"
|
||||
export LN="@LN@"
|
||||
export MKDIR="@MKDIR@"
|
||||
export MV="@MV@"
|
||||
export NM="@GNM@"
|
||||
export NM="@NM@"
|
||||
export OBJDUMP="@OBJDUMP@"
|
||||
export OTOOL="@OTOOL@"
|
||||
export PRINTF="@PRINTF@"
|
||||
|
||||
35
make/autoconf/configure
vendored
35
make/autoconf/configure
vendored
@@ -274,11 +274,11 @@ do
|
||||
# Check for certain autoconf options that require extra action
|
||||
case $conf_option in
|
||||
-build | --build | --buil | --bui | --bu |-build=* | --build=* | --buil=* | --bui=* | --bu=*)
|
||||
conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
|
||||
conf_build_set=true ;;
|
||||
-target | --target | --targe | --targ | --tar | --ta | --t | -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
|
||||
conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
|
||||
conf_incompatible_crosscompile="$conf_incompatible_crosscompile $conf_option" ;;
|
||||
-host | --host | --hos | --ho | -host=* | --host=* | --hos=* | --ho=*)
|
||||
conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
|
||||
conf_incompatible_crosscompile="$conf_incompatible_crosscompile $conf_option" ;;
|
||||
-help | --help | --hel | --he | -h)
|
||||
conf_print_help=true ;;
|
||||
esac
|
||||
@@ -287,23 +287,30 @@ done
|
||||
# Save the quoted command line
|
||||
CONFIGURE_COMMAND_LINE="${conf_quoted_arguments[@]}"
|
||||
|
||||
if test "x$conf_legacy_crosscompile" != "x"; then
|
||||
if test "x$conf_incompatible_crosscompile" != "x"; then
|
||||
if test "x$conf_openjdk_target" != "x"; then
|
||||
echo "Error: Specifying --openjdk-target together with autoconf"
|
||||
echo "legacy cross-compilation flags is not supported."
|
||||
echo "You specified: --openjdk-target=$conf_openjdk_target and $conf_legacy_crosscompile."
|
||||
echo "The recommended use is just --openjdk-target."
|
||||
echo "Error: --openjdk-target was specified together with"
|
||||
echo "incompatible autoconf cross-compilation flags."
|
||||
echo "You specified: --openjdk-target=$conf_openjdk_target and $conf_incompatible_crosscompile."
|
||||
echo "It is recommended that you only use --openjdk-target."
|
||||
exit 1
|
||||
else
|
||||
echo "Warning: You are using legacy autoconf cross-compilation flags."
|
||||
echo "It is recommended that you use --openjdk-target instead."
|
||||
echo "Warning: You are using misleading autoconf cross-compilation flag(s)."
|
||||
echo "This is not encouraged as use of such flags during building can"
|
||||
echo "quickly become confusing."
|
||||
echo "It is highly recommended that you use --openjdk-target instead."
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$conf_openjdk_target" != "x"; then
|
||||
conf_build_platform=`sh $conf_script_dir/build-aux/config.guess`
|
||||
conf_processed_arguments=("--build=$conf_build_platform" "--host=$conf_openjdk_target" "--target=$conf_openjdk_target" "${conf_processed_arguments[@]}")
|
||||
conf_processed_arguments=("--host=$conf_openjdk_target" "--target=$conf_openjdk_target" "${conf_processed_arguments[@]}")
|
||||
|
||||
# If --build has been explicitly set don't override that flag with our own
|
||||
if test "x$conf_build_set" != xtrue; then
|
||||
conf_build_platform=`sh $conf_script_dir/build-aux/config.guess`
|
||||
conf_processed_arguments=("--build=$conf_build_platform" "${conf_processed_arguments[@]}")
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make configure exit with error on invalid options as default.
|
||||
@@ -341,7 +348,9 @@ Additional (non-autoconf) OpenJDK Options:
|
||||
--openjdk-target=TARGET cross-compile with TARGET as target platform
|
||||
(i.e. the one you will run the resulting binary on).
|
||||
Equivalent to --host=TARGET --target=TARGET
|
||||
--build=<current platform>
|
||||
--build=<current platform>, or the platform you
|
||||
have provided if you have explicitly passed
|
||||
--build to configure
|
||||
--debug-configure Run the configure script with additional debug
|
||||
logging enabled.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -152,6 +152,7 @@ BOOTJDK_SETUP_DOCS_REFERENCE_JDK
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
JDKOPT_SETUP_REPRODUCIBLE_BUILD
|
||||
JDKOPT_SETUP_JDK_OPTIONS
|
||||
|
||||
###############################################################################
|
||||
@@ -207,7 +208,6 @@ PLATFORM_SETUP_OPENJDK_TARGET_BITS
|
||||
PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
|
||||
|
||||
# Configure flags for the tools. Need to know if we should build reproducible.
|
||||
JDKOPT_SETUP_REPRODUCIBLE_BUILD
|
||||
FLAGS_SETUP_FLAGS
|
||||
|
||||
# Setup debug symbols (need objcopy from the toolchain for that)
|
||||
@@ -249,7 +249,6 @@ JDKOPT_EXCLUDE_TRANSLATIONS
|
||||
JDKOPT_ENABLE_DISABLE_MANPAGES
|
||||
JDKOPT_ENABLE_DISABLE_CDS_ARCHIVE
|
||||
JDKOPT_ENABLE_DISABLE_COMPATIBLE_CDS_ALIGNMENT
|
||||
JDKOPT_SETUP_HSDIS
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -496,8 +496,8 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
TOOLCHAIN_CFLAGS_JVM="-qtbtable=full -qtune=balanced \
|
||||
-qalias=noansi -qstrict -qtls=default -qnortti -qnoeh -qignerrno -qstackprotect"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
TOOLCHAIN_CFLAGS_JVM="-nologo -MD -MP"
|
||||
TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:wchar_t-"
|
||||
TOOLCHAIN_CFLAGS_JVM="-nologo -MD -Zc:strictStrings -MP"
|
||||
TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:strictStrings -Zc:wchar_t-"
|
||||
fi
|
||||
|
||||
# CFLAGS C language level for JDK sources (hotspot only uses C++)
|
||||
@@ -782,10 +782,8 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
test "x$ENABLE_REPRODUCIBLE_BUILD" = xtrue; then
|
||||
# There is a known issue with the pathmap if the mapping is made to the
|
||||
# empty string. Add a minimal string "s" as prefix to work around this.
|
||||
workspace_root_win=`$FIXPATH_BASE print "${WORKSPACE_ROOT%/}"`
|
||||
# PATHMAP_FLAGS is also added to LDFLAGS in flags-ldflags.m4.
|
||||
PATHMAP_FLAGS="-pathmap:${workspace_root_win//\//\\\\}=s \
|
||||
-pathmap:${workspace_root_win}=s"
|
||||
PATHMAP_FLAGS="-pathmap:${WORKSPACE_ROOT}=s"
|
||||
FILE_MACRO_CFLAGS="$PATHMAP_FLAGS"
|
||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${FILE_MACRO_CFLAGS}],
|
||||
PREFIX: $3,
|
||||
@@ -805,17 +803,19 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
|
||||
fi
|
||||
AC_SUBST(FILE_MACRO_CFLAGS)
|
||||
|
||||
FLAGS_SETUP_BRANCH_PROTECTION
|
||||
|
||||
# EXPORT to API
|
||||
CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM \
|
||||
$TOOLCHAIN_CFLAGS_JVM ${$1_TOOLCHAIN_CFLAGS_JVM} \
|
||||
$OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
|
||||
$WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG $FILE_MACRO_CFLAGS \
|
||||
$REPRODUCIBLE_CFLAGS"
|
||||
$REPRODUCIBLE_CFLAGS $BRANCH_PROTECTION_CFLAGS"
|
||||
|
||||
CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
|
||||
$OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
|
||||
$WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK \
|
||||
$FILE_MACRO_CFLAGS $REPRODUCIBLE_CFLAGS"
|
||||
$FILE_MACRO_CFLAGS $REPRODUCIBLE_CFLAGS $BRANCH_PROTECTION_CFLAGS"
|
||||
|
||||
# Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
|
||||
# (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
|
||||
@@ -881,3 +881,24 @@ AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
|
||||
PREFIX: $2, IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
|
||||
$1_GCC6_CFLAGS="${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
|
||||
])
|
||||
|
||||
AC_DEFUN_ONCE([FLAGS_SETUP_BRANCH_PROTECTION],
|
||||
[
|
||||
# Is branch protection available?
|
||||
BRANCH_PROTECTION_AVAILABLE=false
|
||||
BRANCH_PROTECTION_FLAG="-mbranch-protection=standard"
|
||||
|
||||
if test "x$OPENJDK_TARGET_CPU" = xaarch64; then
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${BRANCH_PROTECTION_FLAG}],
|
||||
IF_TRUE: [BRANCH_PROTECTION_AVAILABLE=true])
|
||||
fi
|
||||
fi
|
||||
|
||||
BRANCH_PROTECTION_CFLAGS=""
|
||||
UTIL_ARG_ENABLE(NAME: branch-protection, DEFAULT: false,
|
||||
RESULT: USE_BRANCH_PROTECTION, AVAILABLE: $BRANCH_PROTECTION_AVAILABLE,
|
||||
DESC: [enable branch protection when compiling C/C++],
|
||||
IF_ENABLED: [ BRANCH_PROTECTION_CFLAGS=${BRANCH_PROTECTION_FLAG}])
|
||||
AC_SUBST(BRANCH_PROTECTION_CFLAGS)
|
||||
])
|
||||
|
||||
@@ -215,8 +215,21 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
|
||||
$1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
|
||||
$1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
$1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
|
||||
$1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
|
||||
# -isysroot has no effect on linux
|
||||
# https://bugs.llvm.org/show_bug.cgi?id=11503
|
||||
$1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
|
||||
$1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
|
||||
if test -d "$DEVKIT_TOOLCHAIN_PATH"; then
|
||||
# In devkits, gcc is not located in the sysroot.
|
||||
# use --gcc-toolchain to let clang find the gcc installation.
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS --gcc-toolchain=$DEVKIT_TOOLCHAIN_PATH/.."
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS --gcc-toolchain=$DEVKIT_TOOLCHAIN_PATH/.."
|
||||
fi
|
||||
else
|
||||
$1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
|
||||
$1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
|
||||
[
|
||||
UTIL_LOOKUP_PROGS(PKGHANDLER, zypper apt-get yum brew port pkgutil pkgadd pacman)
|
||||
UTIL_LOOKUP_PROGS(PKGHANDLER, zypper apt-get yum brew port pkgutil pkgadd pacman apk)
|
||||
])
|
||||
|
||||
AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
@@ -58,6 +58,8 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
zypper_help $MISSING_DEPENDENCY ;;
|
||||
*pacman)
|
||||
pacman_help $MISSING_DEPENDENCY ;;
|
||||
*apk)
|
||||
apk_help $MISSING_DEPENDENCY ;;
|
||||
esac
|
||||
|
||||
if test "x$PKGHANDLER_COMMAND" != x; then
|
||||
@@ -115,6 +117,8 @@ apt_help() {
|
||||
PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
|
||||
dtrace)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
|
||||
capstone)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libcapstone-dev" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -166,6 +170,8 @@ brew_help() {
|
||||
PKGHANDLER_COMMAND="brew install freetype" ;;
|
||||
ccache)
|
||||
PKGHANDLER_COMMAND="brew install ccache" ;;
|
||||
capstone)
|
||||
PKGHANDLER_COMMAND="brew install capstone" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -192,6 +198,27 @@ pkgadd_help() {
|
||||
PKGHANDLER_COMMAND=""
|
||||
}
|
||||
|
||||
apk_help() {
|
||||
case $1 in
|
||||
devkit)
|
||||
PKGHANDLER_COMMAND="sudo apk add alpine-sdk linux-headers" ;;
|
||||
alsa)
|
||||
PKGHANDLER_COMMAND="sudo apk add alsa-lib-dev" ;;
|
||||
cups)
|
||||
PKGHANDLER_COMMAND="sudo apk add cups-dev" ;;
|
||||
fontconfig)
|
||||
PKGHANDLER_COMMAND="sudo apk add fontconfig-dev" ;;
|
||||
freetype)
|
||||
PKGHANDLER_COMMAND="sudo apk add freetype-dev" ;;
|
||||
harfbuzz)
|
||||
PKGHANDLER_COMMAND="sudo apk add harfbuzz-dev" ;;
|
||||
x11)
|
||||
PKGHANDLER_COMMAND="sudo apk add libxtst-dev libxt-dev libxrender-dev libxrandr-dev" ;;
|
||||
ccache)
|
||||
PKGHANDLER_COMMAND="sudo apk add ccache" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# This function will check if we're called from the "configure" wrapper while
|
||||
# printing --help. If so, we will print out additional information that can
|
||||
# only be extracted within the autoconf script, and then exit. This must be
|
||||
@@ -269,6 +296,13 @@ AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
|
||||
printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
|
||||
printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
|
||||
|
||||
if test "x$SOURCE_DATE" != xupdated; then
|
||||
source_date_info="$SOURCE_DATE ($SOURCE_DATE_ISO_8601)"
|
||||
else
|
||||
source_date_info="Determined at build time"
|
||||
fi
|
||||
printf "* Source date: $source_date_info\n"
|
||||
|
||||
printf "\n"
|
||||
printf "Tools summary:\n"
|
||||
if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -114,12 +114,26 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_MISC],
|
||||
HOTSPOT_TARGET_CPU_ARCH=zero
|
||||
fi
|
||||
|
||||
|
||||
AC_ARG_WITH([hotspot-build-time], [AS_HELP_STRING([--with-hotspot-build-time],
|
||||
[timestamp to use in hotspot version string, empty for on-the-fly @<:@empty@:>@])])
|
||||
[timestamp to use in hotspot version string, empty means determined at build time @<:@source-date/empty@:>@])])
|
||||
|
||||
AC_MSG_CHECKING([what hotspot build time to use])
|
||||
|
||||
if test "x$with_hotspot_build_time" != x; then
|
||||
HOTSPOT_BUILD_TIME="$with_hotspot_build_time"
|
||||
AC_MSG_RESULT([$HOTSPOT_BUILD_TIME (from --with-hotspot-build-time)])
|
||||
else
|
||||
if test "x$SOURCE_DATE" = xupdated; then
|
||||
HOTSPOT_BUILD_TIME=""
|
||||
AC_MSG_RESULT([determined at build time (default)])
|
||||
else
|
||||
# If we have a fixed value for SOURCE_DATE, use it as default
|
||||
HOTSPOT_BUILD_TIME="$SOURCE_DATE_ISO_8601"
|
||||
AC_MSG_RESULT([$HOTSPOT_BUILD_TIME (from --with-source-date)])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(HOTSPOT_BUILD_TIME)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -211,16 +211,16 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
|
||||
|
||||
# Setup default copyright year. Mostly overridden when building close to a new year.
|
||||
AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year],
|
||||
[Set copyright year value for build @<:@current year@:>@])])
|
||||
[Set copyright year value for build @<:@current year/source-date@:>@])])
|
||||
if test "x$with_copyright_year" = xyes; then
|
||||
AC_MSG_ERROR([Copyright year must have a value])
|
||||
elif test "x$with_copyright_year" != x; then
|
||||
COPYRIGHT_YEAR="$with_copyright_year"
|
||||
elif test "x$SOURCE_DATE_EPOCH" != x; then
|
||||
elif test "x$SOURCE_DATE" != xupdated; then
|
||||
if test "x$IS_GNU_DATE" = xyes; then
|
||||
COPYRIGHT_YEAR=`date --date=@$SOURCE_DATE_EPOCH +%Y`
|
||||
COPYRIGHT_YEAR=`$DATE --date=@$SOURCE_DATE +%Y`
|
||||
else
|
||||
COPYRIGHT_YEAR=`date -j -f %s $SOURCE_DATE_EPOCH +%Y`
|
||||
COPYRIGHT_YEAR=`$DATE -j -f %s $SOURCE_DATE +%Y`
|
||||
fi
|
||||
else
|
||||
COPYRIGHT_YEAR=`$DATE +'%Y'`
|
||||
@@ -662,15 +662,28 @@ AC_DEFUN([JDKOPT_ALLOW_ABSOLUTE_PATHS_IN_OUTPUT],
|
||||
AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
||||
[
|
||||
AC_ARG_WITH([source-date], [AS_HELP_STRING([--with-source-date],
|
||||
[how to set SOURCE_DATE_EPOCH ('updated', 'current', 'version' a timestamp or an ISO-8601 date) @<:@updated@:>@])],
|
||||
[how to set SOURCE_DATE_EPOCH ('updated', 'current', 'version' a timestamp or an ISO-8601 date) @<:@updated/value of SOURCE_DATE_EPOCH@:>@])],
|
||||
[with_source_date_present=true], [with_source_date_present=false])
|
||||
|
||||
if test "x$SOURCE_DATE_EPOCH" != x && test "x$with_source_date" != x; then
|
||||
AC_MSG_WARN([--with-source-date will override SOURCE_DATE_EPOCH])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([what source date to use])
|
||||
|
||||
if test "x$with_source_date" = xyes; then
|
||||
AC_MSG_ERROR([--with-source-date must have a value])
|
||||
elif test "x$with_source_date" = xupdated || test "x$with_source_date" = x; then
|
||||
# Tell the makefiles to update at each build
|
||||
elif test "x$with_source_date" = x; then
|
||||
if test "x$SOURCE_DATE_EPOCH" != x; then
|
||||
SOURCE_DATE=$SOURCE_DATE_EPOCH
|
||||
with_source_date_present=true
|
||||
AC_MSG_RESULT([$SOURCE_DATE, from SOURCE_DATE_EPOCH])
|
||||
else
|
||||
# Tell the makefiles to update at each build
|
||||
SOURCE_DATE=updated
|
||||
AC_MSG_RESULT([determined at build time (default)])
|
||||
fi
|
||||
elif test "x$with_source_date" = xupdated; then
|
||||
SOURCE_DATE=updated
|
||||
AC_MSG_RESULT([determined at build time, from 'updated'])
|
||||
elif test "x$with_source_date" = xcurrent; then
|
||||
@@ -702,6 +715,18 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
||||
fi
|
||||
fi
|
||||
|
||||
ISO_8601_FORMAT_STRING="%Y-%m-%dT%H:%M:%SZ"
|
||||
if test "x$SOURCE_DATE" != xupdated; then
|
||||
# If we have a fixed value for SOURCE_DATE, we need to set SOURCE_DATE_EPOCH
|
||||
# for the rest of configure.
|
||||
SOURCE_DATE_EPOCH="$SOURCE_DATE"
|
||||
if test "x$IS_GNU_DATE" = xyes; then
|
||||
SOURCE_DATE_ISO_8601=`$DATE --utc --date="@$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null`
|
||||
else
|
||||
SOURCE_DATE_ISO_8601=`$DATE -u -j -f "%s" "$SOURCE_DATE" +"$ISO_8601_FORMAT_STRING" 2> /dev/null`
|
||||
fi
|
||||
fi
|
||||
|
||||
REPRODUCIBLE_BUILD_DEFAULT=$with_source_date_present
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows && \
|
||||
@@ -726,173 +751,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_REPRODUCIBLE_BUILD],
|
||||
|
||||
AC_SUBST(SOURCE_DATE)
|
||||
AC_SUBST(ENABLE_REPRODUCIBLE_BUILD)
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Helper function to build binutils from source.
|
||||
#
|
||||
AC_DEFUN([JDKOPT_BUILD_BINUTILS],
|
||||
[
|
||||
BINUTILS_SRC="$with_binutils_src"
|
||||
UTIL_FIXUP_PATH(BINUTILS_SRC)
|
||||
|
||||
if ! test -d $BINUTILS_SRC; then
|
||||
AC_MSG_ERROR([--with-binutils-src is not pointing to a directory])
|
||||
fi
|
||||
if ! test -x $BINUTILS_SRC/configure; then
|
||||
AC_MSG_ERROR([--with-binutils-src does not look like a binutils source directory])
|
||||
fi
|
||||
|
||||
if test -e $BINUTILS_SRC/bfd/libbfd.a && \
|
||||
test -e $BINUTILS_SRC/opcodes/libopcodes.a && \
|
||||
test -e $BINUTILS_SRC/libiberty/libiberty.a && \
|
||||
test -e $BINUTILS_SRC/zlib/libz.a; then
|
||||
AC_MSG_NOTICE([Found binutils binaries in binutils source directory -- not building])
|
||||
else
|
||||
# On Windows, we cannot build with the normal Microsoft CL, but must instead use
|
||||
# a separate mingw toolchain.
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
target_base="i686-w64-mingw32"
|
||||
else
|
||||
target_base="$OPENJDK_TARGET_CPU-w64-mingw32"
|
||||
fi
|
||||
binutils_cc="$target_base-gcc"
|
||||
binutils_target="--host=$target_base --target=$target_base"
|
||||
# Somehow the uint typedef is not included when building with mingw
|
||||
binutils_cflags="-Duint=unsigned"
|
||||
compiler_version=`$binutils_cc --version 2>&1`
|
||||
if ! [ [[ "$compiler_version" =~ GCC ]] ]; then
|
||||
AC_MSG_NOTICE([Could not find correct mingw compiler $binutils_cc.])
|
||||
HELP_MSG_MISSING_DEPENDENCY([$binutils_cc])
|
||||
AC_MSG_ERROR([Cannot continue. $HELP_MSG])
|
||||
else
|
||||
AC_MSG_NOTICE([Using compiler $binutils_cc with version $compiler_version])
|
||||
fi
|
||||
elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
binutils_target="--enable-targets=aarch64-darwin"
|
||||
else
|
||||
binutils_target=""
|
||||
fi
|
||||
else
|
||||
binutils_cc="$CC $SYSROOT_CFLAGS"
|
||||
binutils_target=""
|
||||
fi
|
||||
binutils_cflags="$binutils_cflags $MACHINE_FLAG $JVM_PICFLAG $C_O_FLAG_NORM"
|
||||
|
||||
AC_MSG_NOTICE([Running binutils configure])
|
||||
AC_MSG_NOTICE([configure command line: ./configure --disable-nls CFLAGS="$binutils_cflags" CC="$binutils_cc" $binutils_target])
|
||||
saved_dir=`pwd`
|
||||
cd "$BINUTILS_SRC"
|
||||
./configure --disable-nls CFLAGS="$binutils_cflags" CC="$binutils_cc" $binutils_target
|
||||
if test $? -ne 0 || ! test -e $BINUTILS_SRC/Makefile; then
|
||||
AC_MSG_NOTICE([Automatic building of binutils failed on configure. Try building it manually])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
AC_MSG_NOTICE([Running binutils make])
|
||||
$MAKE all-opcodes
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_NOTICE([Automatic building of binutils failed on make. Try building it manually])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
cd $saved_dir
|
||||
AC_MSG_NOTICE([Building of binutils done])
|
||||
fi
|
||||
|
||||
BINUTILS_DIR="$BINUTILS_SRC"
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Determine if hsdis should be built, and if so, with which backend.
|
||||
#
|
||||
AC_DEFUN_ONCE([JDKOPT_SETUP_HSDIS],
|
||||
[
|
||||
AC_ARG_WITH([hsdis], [AS_HELP_STRING([--with-hsdis],
|
||||
[what hsdis backend to use ('none', 'binutils') @<:@none@:>@])])
|
||||
|
||||
AC_ARG_WITH([binutils], [AS_HELP_STRING([--with-binutils],
|
||||
[where to find the binutils files needed for hsdis/binutils])])
|
||||
|
||||
AC_ARG_WITH([binutils-src], [AS_HELP_STRING([--with-binutils-src],
|
||||
[where to find the binutils source for building])])
|
||||
|
||||
AC_MSG_CHECKING([what hsdis backend to use])
|
||||
|
||||
if test "x$with_hsdis" = xyes; then
|
||||
AC_MSG_ERROR([--with-hsdis must have a value])
|
||||
elif test "x$with_hsdis" = xnone || test "x$with_hsdis" = xno || test "x$with_hsdis" = x; then
|
||||
HSDIS_BACKEND=none
|
||||
AC_MSG_RESULT(['none', hsdis will not be built])
|
||||
elif test "x$with_hsdis" = xbinutils; then
|
||||
HSDIS_BACKEND=binutils
|
||||
AC_MSG_RESULT(['binutils'])
|
||||
|
||||
# We need the binutils static libs and includes.
|
||||
if test "x$with_binutils_src" != x; then
|
||||
# Try building the source first. If it succeeds, it sets $BINUTILS_DIR.
|
||||
JDKOPT_BUILD_BINUTILS
|
||||
fi
|
||||
|
||||
if test "x$with_binutils" != x; then
|
||||
BINUTILS_DIR="$with_binutils"
|
||||
fi
|
||||
|
||||
binutils_system_error=""
|
||||
HSDIS_LIBS=""
|
||||
if test "x$BINUTILS_DIR" = xsystem; then
|
||||
AC_CHECK_LIB(bfd, bfd_openr, [ HSDIS_LIBS="-lbfd" ], [ binutils_system_error="libbfd not found" ])
|
||||
AC_CHECK_LIB(opcodes, disassembler, [ HSDIS_LIBS="$HSDIS_LIBS -lopcodes" ], [ binutils_system_error="libopcodes not found" ])
|
||||
AC_CHECK_LIB(iberty, xmalloc, [ HSDIS_LIBS="$HSDIS_LIBS -liberty" ], [ binutils_system_error="libiberty not found" ])
|
||||
AC_CHECK_LIB(z, deflate, [ HSDIS_LIBS="$HSDIS_LIBS -lz" ], [ binutils_system_error="libz not found" ])
|
||||
elif test "x$BINUTILS_DIR" != x; then
|
||||
if test -e $BINUTILS_DIR/bfd/libbfd.a && \
|
||||
test -e $BINUTILS_DIR/opcodes/libopcodes.a && \
|
||||
test -e $BINUTILS_DIR/libiberty/libiberty.a; then
|
||||
HSDIS_CFLAGS="-I$BINUTILS_DIR/include -I$BINUTILS_DIR/bfd -DLIBARCH_$OPENJDK_TARGET_CPU_LEGACY_LIB"
|
||||
HSDIS_LIBS="$BINUTILS_DIR/bfd/libbfd.a $BINUTILS_DIR/opcodes/libopcodes.a $BINUTILS_DIR/libiberty/libiberty.a $BINUTILS_DIR/zlib/libz.a"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for binutils to use with hsdis])
|
||||
case "x$BINUTILS_DIR" in
|
||||
xsystem)
|
||||
if test "x$OPENJDK_TARGET_OS" != xlinux; then
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([binutils on system is supported for Linux only])
|
||||
elif test "x$binutils_system_error" = x; then
|
||||
AC_MSG_RESULT([system])
|
||||
HSDIS_CFLAGS="-DSYSTEM_BINUTILS"
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([$binutils_system_error])
|
||||
fi
|
||||
;;
|
||||
x)
|
||||
AC_MSG_RESULT([missing])
|
||||
AC_MSG_NOTICE([--with-hsdis=binutils requires specifying a binutils installation.])
|
||||
AC_MSG_NOTICE([Download binutils from https://www.gnu.org/software/binutils and unpack it,])
|
||||
AC_MSG_NOTICE([and point --with-binutils-src to the resulting directory, or use])
|
||||
AC_MSG_NOTICE([--with-binutils to point to a pre-built binutils installation.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
;;
|
||||
*)
|
||||
if test "x$HSDIS_LIBS" != x; then
|
||||
AC_MSG_RESULT([$BINUTILS_DIR])
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([$BINUTILS_DIR does not contain a proper binutils installation])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([Incorrect hsdis backend "$with_hsdis"])
|
||||
fi
|
||||
|
||||
AC_SUBST(HSDIS_BACKEND)
|
||||
AC_SUBST(HSDIS_CFLAGS)
|
||||
AC_SUBST(HSDIS_LIBS)
|
||||
AC_SUBST(ISO_8601_FORMAT_STRING)
|
||||
AC_SUBST(SOURCE_DATE_ISO_8601)
|
||||
])
|
||||
|
||||
@@ -72,7 +72,9 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# Setup username (for use in adhoc version strings etc)
|
||||
AC_ARG_WITH([build-user], [AS_HELP_STRING([--with-build-user],
|
||||
[build username to use in version strings])])
|
||||
if test "x$with_build_user" != x; then
|
||||
if test "x$with_build_user" = xyes || test "x$with_build_user" = xno; then
|
||||
AC_MSG_ERROR([--with-build-user must have a value])
|
||||
elif test "x$with_build_user" != x; then
|
||||
USERNAME="$with_build_user"
|
||||
else
|
||||
# Outer [ ] to quote m4.
|
||||
@@ -84,7 +86,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_ARG_WITH(jdk-rc-name, [AS_HELP_STRING([--with-jdk-rc-name],
|
||||
[Set JDK RC name. This is used for FileDescription and ProductName properties
|
||||
of MS Windows binaries. @<:@not specified@:>@])])
|
||||
if test "x$with_jdk_rc_name" = xyes; then
|
||||
if test "x$with_jdk_rc_name" = xyes || test "x$with_jdk_rc_name" = xno; then
|
||||
AC_MSG_ERROR([--with-jdk-rc-name must have a value])
|
||||
elif [ ! [[ $with_jdk_rc_name =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-jdk-rc-name contains non-printing characters: $with_jdk_rc_name])
|
||||
@@ -101,7 +103,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_ARG_WITH(vendor-name, [AS_HELP_STRING([--with-vendor-name],
|
||||
[Set vendor name. Among others, used to set the 'java.vendor'
|
||||
and 'java.vm.vendor' system properties. @<:@not specified@:>@])])
|
||||
if test "x$with_vendor_name" = xyes; then
|
||||
if test "x$with_vendor_name" = xyes || test "x$with_vendor_name" = xno; then
|
||||
AC_MSG_ERROR([--with-vendor-name must have a value])
|
||||
elif [ ! [[ $with_vendor_name =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-vendor-name contains non-printing characters: $with_vendor_name])
|
||||
@@ -115,7 +117,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# The vendor URL, if any
|
||||
AC_ARG_WITH(vendor-url, [AS_HELP_STRING([--with-vendor-url],
|
||||
[Set the 'java.vendor.url' system property @<:@not specified@:>@])])
|
||||
if test "x$with_vendor_url" = xyes; then
|
||||
if test "x$with_vendor_url" = xyes || test "x$with_vendor_url" = xno; then
|
||||
AC_MSG_ERROR([--with-vendor-url must have a value])
|
||||
elif [ ! [[ $with_vendor_url =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-vendor-url contains non-printing characters: $with_vendor_url])
|
||||
@@ -129,7 +131,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# The vendor bug URL, if any
|
||||
AC_ARG_WITH(vendor-bug-url, [AS_HELP_STRING([--with-vendor-bug-url],
|
||||
[Set the 'java.vendor.url.bug' system property @<:@not specified@:>@])])
|
||||
if test "x$with_vendor_bug_url" = xyes; then
|
||||
if test "x$with_vendor_bug_url" = xyes || test "x$with_vendor_bug_url" = xno; then
|
||||
AC_MSG_ERROR([--with-vendor-bug-url must have a value])
|
||||
elif [ ! [[ $with_vendor_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-vendor-bug-url contains non-printing characters: $with_vendor_bug_url])
|
||||
@@ -143,7 +145,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# The vendor VM bug URL, if any
|
||||
AC_ARG_WITH(vendor-vm-bug-url, [AS_HELP_STRING([--with-vendor-vm-bug-url],
|
||||
[Sets the bug URL which will be displayed when the VM crashes @<:@not specified@:>@])])
|
||||
if test "x$with_vendor_vm_bug_url" = xyes; then
|
||||
if test "x$with_vendor_vm_bug_url" = xyes || test "x$with_vendor_vm_bug_url" = xno; then
|
||||
AC_MSG_ERROR([--with-vendor-vm-bug-url must have a value])
|
||||
elif [ ! [[ $with_vendor_vm_bug_url =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-vendor-vm-bug-url contains non-printing characters: $with_vendor_vm_bug_url])
|
||||
@@ -160,7 +162,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# override parts with more specific flags, since these are processed later.
|
||||
AC_ARG_WITH(version-string, [AS_HELP_STRING([--with-version-string],
|
||||
[Set version string @<:@calculated@:>@])])
|
||||
if test "x$with_version_string" = xyes; then
|
||||
if test "x$with_version_string" = xyes || test "x$with_version_string" = xno; then
|
||||
AC_MSG_ERROR([--with-version-string must have a value])
|
||||
elif test "x$with_version_string" != x; then
|
||||
# Additional [] needed to keep m4 from mangling shell constructs.
|
||||
@@ -199,6 +201,10 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
&& test "x$VERSION_BUILD$VERSION_OPT" = x; then
|
||||
AC_MSG_ERROR([Version string contains + but both 'BUILD' and 'OPT' are missing])
|
||||
fi
|
||||
if test "x$VERSION_BUILD" = x0; then
|
||||
AC_MSG_WARN([Version build 0 is interpreted as no build number])
|
||||
VERSION_BUILD=
|
||||
fi
|
||||
# Stop the version part process from setting default values.
|
||||
# We still allow them to explicitly override though.
|
||||
NO_DEFAULT_VERSION_PARTS=true
|
||||
@@ -250,9 +256,10 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
fi
|
||||
else
|
||||
if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
|
||||
# Default is to calculate a string like this 'adhoc.<username>.<base dir name>'
|
||||
# Default is to calculate a string like this:
|
||||
# 'adhoc.<username>.<base dir name>'
|
||||
# Outer [ ] to quote m4.
|
||||
[ basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'` ]
|
||||
[ basedirname=`$BASENAME "$WORKSPACE_ROOT" | $TR -d -c '[a-z][A-Z][0-9].-'` ]
|
||||
VERSION_OPT="adhoc.$USERNAME.$basedirname"
|
||||
fi
|
||||
fi
|
||||
@@ -271,13 +278,15 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
VERSION_BUILD=
|
||||
else
|
||||
JDKVER_CHECK_AND_SET_NUMBER(VERSION_BUILD, $with_version_build)
|
||||
if test "x$VERSION_BUILD" = "x0"; then
|
||||
AC_MSG_WARN([--with-version-build=0 is interpreted as --without-version-build])
|
||||
VERSION_BUILD=
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
|
||||
# Default is to not have a build number.
|
||||
VERSION_BUILD=""
|
||||
# FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0.
|
||||
VERSION_BUILD=0
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -286,7 +295,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
[with_version_feature_present=true], [with_version_feature_present=false])
|
||||
|
||||
if test "x$with_version_feature_present" = xtrue; then
|
||||
if test "x$with_version_feature" = xyes; then
|
||||
if test "x$with_version_feature" = xyes || test "x$with_version_feature" = xno; then
|
||||
AC_MSG_ERROR([--with-version-feature must have a value])
|
||||
else
|
||||
JDKVER_CHECK_AND_SET_NUMBER(VERSION_FEATURE, $with_version_feature)
|
||||
@@ -450,21 +459,30 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
for i in 1 2 3 4 5 6 ; do stripped_version_number=${stripped_version_number%.0} ; done
|
||||
VERSION_NUMBER=$stripped_version_number
|
||||
|
||||
# The complete version string, with additional build information
|
||||
if test "x$VERSION_BUILD$VERSION_OPT" = x; then
|
||||
VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
|
||||
else
|
||||
# If either build or opt is set, we need a + separator
|
||||
VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}+$VERSION_BUILD${VERSION_OPT:+-$VERSION_OPT}
|
||||
# A build number of "0" is interpreted as "no build number".
|
||||
if test "x$VERSION_BUILD" = x0; then
|
||||
VERSION_BUILD=
|
||||
fi
|
||||
|
||||
# Compute the complete version string, with additional build information
|
||||
version_with_pre=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
|
||||
if test "x$VERSION_BUILD" != x || \
|
||||
( test "x$VERSION_OPT" != x && test "x$VERSION_PRE" = x ); then
|
||||
# As per JEP 223, if build is set, or if opt is set but not pre,
|
||||
# we need a + separator
|
||||
version_with_build=$version_with_pre+$VERSION_BUILD
|
||||
else
|
||||
version_with_build=$version_with_pre
|
||||
fi
|
||||
VERSION_STRING=$version_with_build${VERSION_OPT:+-$VERSION_OPT}
|
||||
|
||||
# The short version string, just VERSION_NUMBER and PRE, if present.
|
||||
VERSION_SHORT=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
|
||||
|
||||
# The version date
|
||||
AC_ARG_WITH(version-date, [AS_HELP_STRING([--with-version-date],
|
||||
[Set version date @<:@current source value@:>@])])
|
||||
if test "x$with_version_date" = xyes; then
|
||||
if test "x$with_version_date" = xyes || test "x$with_version_date" = xno; then
|
||||
AC_MSG_ERROR([--with-version-date must have a value])
|
||||
elif test "x$with_version_date" != x; then
|
||||
if [ ! [[ $with_version_date =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] ]; then
|
||||
@@ -483,7 +501,10 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_MSG_ERROR([--with-vendor-version-string must have a value])
|
||||
elif [ ! [[ $with_vendor_version_string =~ ^[[:graph:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with--vendor-version-string contains non-graphical characters: $with_vendor_version_string])
|
||||
else
|
||||
elif test "x$with_vendor_version_string" != xno; then
|
||||
# Set vendor version string if --without is not passed
|
||||
# Check not required if an empty value is passed, since VENDOR_VERSION_STRING
|
||||
# would then be set to ""
|
||||
VENDOR_VERSION_STRING="$with_vendor_version_string"
|
||||
fi
|
||||
|
||||
@@ -491,7 +512,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_ARG_WITH(macosx-bundle-name-base, [AS_HELP_STRING([--with-macosx-bundle-name-base],
|
||||
[Set the MacOSX Bundle Name base. This is the base name for calculating MacOSX Bundle Names.
|
||||
@<:@not specified@:>@])])
|
||||
if test "x$with_macosx_bundle_name_base" = xyes; then
|
||||
if test "x$with_macosx_bundle_name_base" = xyes || test "x$with_macosx_bundle_name_base" = xno; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-name-base must have a value])
|
||||
elif [ ! [[ $with_macosx_bundle_name_base =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-name-base contains non-printing characters: $with_macosx_bundle_name_base])
|
||||
@@ -505,7 +526,7 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_ARG_WITH(macosx-bundle-id-base, [AS_HELP_STRING([--with-macosx-bundle-id-base],
|
||||
[Set the MacOSX Bundle ID base. This is the base ID for calculating MacOSX Bundle IDs.
|
||||
@<:@not specified@:>@])])
|
||||
if test "x$with_macosx_bundle_id_base" = xyes; then
|
||||
if test "x$with_macosx_bundle_id_base" = xyes || test "x$with_macosx_bundle_id_base" = xno; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-id-base must have a value])
|
||||
elif [ ! [[ $with_macosx_bundle_id_base =~ ^[[:print:]]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-id-base contains non-printing characters: $with_macosx_bundle_id_base])
|
||||
@@ -526,14 +547,19 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
[Set the MacOSX Bundle CFBundleVersion field. This key is a machine-readable
|
||||
string composed of one to three period-separated integers and should represent the
|
||||
build version. Defaults to the build number.])])
|
||||
if test "x$with_macosx_bundle_build_version" = xyes; then
|
||||
if test "x$with_macosx_bundle_build_version" = xyes || test "x$with_macosx_bundle_build_version" = xno; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-build-version must have a value])
|
||||
elif [ ! [[ $with_macosx_bundle_build_version =~ ^[0-9\.]*$ ]] ]; then
|
||||
AC_MSG_ERROR([--with-macosx-bundle-build-version contains non numbers and periods: $with_macosx_bundle_build_version])
|
||||
elif test "x$with_macosx_bundle_build_version" != x; then
|
||||
MACOSX_BUNDLE_BUILD_VERSION="$with_macosx_bundle_build_version"
|
||||
else
|
||||
MACOSX_BUNDLE_BUILD_VERSION="$VERSION_BUILD"
|
||||
if test "x$VERSION_BUILD" != x; then
|
||||
MACOSX_BUNDLE_BUILD_VERSION="$VERSION_BUILD"
|
||||
else
|
||||
MACOSX_BUNDLE_BUILD_VERSION=0
|
||||
fi
|
||||
|
||||
# If VERSION_OPT consists of only numbers and periods, add it.
|
||||
if [ [[ $VERSION_OPT =~ ^[0-9\.]+$ ]] ]; then
|
||||
MACOSX_BUNDLE_BUILD_VERSION="$MACOSX_BUNDLE_BUILD_VERSION.$VERSION_OPT"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -45,7 +45,7 @@ m4_define(jvm_features_valid, m4_normalize( \
|
||||
ifdef([custom_jvm_features_valid], custom_jvm_features_valid) \
|
||||
\
|
||||
cds compiler1 compiler2 dtrace epsilongc g1gc jfr jni-check \
|
||||
jvmci jvmti link-time-opt management minimal nmt opt-size parallelgc \
|
||||
jvmci jvmti link-time-opt management minimal opt-size parallelgc \
|
||||
serialgc services shenandoahgc static-build vm-structs zero zgc \
|
||||
))
|
||||
|
||||
@@ -68,7 +68,6 @@ m4_define(jvm_feature_desc_jvmti, [enable Java Virtual Machine Tool Interface (J
|
||||
m4_define(jvm_feature_desc_link_time_opt, [enable link time optimization])
|
||||
m4_define(jvm_feature_desc_management, [enable java.lang.management API support])
|
||||
m4_define(jvm_feature_desc_minimal, [support building variant 'minimal'])
|
||||
m4_define(jvm_feature_desc_nmt, [include native memory tracking (NMT)])
|
||||
m4_define(jvm_feature_desc_opt_size, [optimize the JVM library for size])
|
||||
m4_define(jvm_feature_desc_parallelgc, [include the parallel garbage collector])
|
||||
m4_define(jvm_feature_desc_serialgc, [include the serial garbage collector])
|
||||
@@ -265,22 +264,6 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_DTRACE],
|
||||
])
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Check if the feature 'jfr' is available on this platform.
|
||||
#
|
||||
AC_DEFUN_ONCE([JVM_FEATURES_CHECK_JFR],
|
||||
[
|
||||
JVM_FEATURES_CHECK_AVAILABILITY(jfr, [
|
||||
AC_MSG_CHECKING([if platform is supported by JFR])
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
AC_MSG_RESULT([no, $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
|
||||
AVAILABLE=false
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
])
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
# Check if the feature 'jvmci' is available on this platform.
|
||||
#
|
||||
@@ -400,18 +383,11 @@ AC_DEFUN_ONCE([JVM_FEATURES_PREPARE_PLATFORM],
|
||||
|
||||
JVM_FEATURES_CHECK_CDS
|
||||
JVM_FEATURES_CHECK_DTRACE
|
||||
JVM_FEATURES_CHECK_JFR
|
||||
JVM_FEATURES_CHECK_JVMCI
|
||||
JVM_FEATURES_CHECK_SHENANDOAHGC
|
||||
JVM_FEATURES_CHECK_STATIC_BUILD
|
||||
JVM_FEATURES_CHECK_ZGC
|
||||
|
||||
# Filter out features by default for all variants on certain platforms.
|
||||
# Make sure to just add to JVM_FEATURES_PLATFORM_FILTER, since it could
|
||||
# have a value already from custom extensions.
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
JVM_FEATURES_PLATFORM_FILTER="$JVM_FEATURES_PLATFORM_FILTER jfr"
|
||||
fi
|
||||
])
|
||||
|
||||
###############################################################################
|
||||
@@ -443,7 +419,7 @@ AC_DEFUN([JVM_FEATURES_PREPARE_VARIANT],
|
||||
JVM_FEATURES_VARIANT_FILTER="compiler2 jvmci link-time-opt opt-size"
|
||||
elif test "x$variant" = "xminimal"; then
|
||||
JVM_FEATURES_VARIANT_FILTER="cds compiler2 dtrace epsilongc g1gc \
|
||||
jfr jni-check jvmci jvmti management nmt parallelgc services \
|
||||
jfr jni-check jvmci jvmti management parallelgc services \
|
||||
shenandoahgc vm-structs zgc"
|
||||
if test "x$OPENJDK_TARGET_CPU" = xarm ; then
|
||||
JVM_FEATURES_VARIANT_FILTER="$JVM_FEATURES_VARIANT_FILTER opt-size"
|
||||
@@ -538,10 +514,6 @@ AC_DEFUN([JVM_FEATURES_VERIFY],
|
||||
AC_MSG_ERROR([Specified JVM feature 'jvmti' requires feature 'services' for variant '$variant'])
|
||||
fi
|
||||
|
||||
if JVM_FEATURES_IS_ACTIVE(management) && ! JVM_FEATURES_IS_ACTIVE(nmt); then
|
||||
AC_MSG_ERROR([Specified JVM feature 'management' requires feature 'nmt' for variant '$variant'])
|
||||
fi
|
||||
|
||||
# For backwards compatibility, disable a feature "globally" if one variant
|
||||
# is missing the feature.
|
||||
if ! JVM_FEATURES_IS_ACTIVE(cds); then
|
||||
|
||||
336
make/autoconf/lib-hsdis.m4
Normal file
336
make/autoconf/lib-hsdis.m4
Normal file
@@ -0,0 +1,336 @@
|
||||
#
|
||||
# Copyright (c) 2021, 2022, 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.
|
||||
#
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Helper function to setup hsdis using Capstone
|
||||
#
|
||||
AC_DEFUN([LIB_SETUP_HSDIS_CAPSTONE],
|
||||
[
|
||||
AC_ARG_WITH(capstone, [AS_HELP_STRING([--with-capstone],
|
||||
[where to find the Capstone files needed for hsdis/capstone])])
|
||||
|
||||
if test "x$with_capstone" != x; then
|
||||
AC_MSG_CHECKING([for capstone])
|
||||
CAPSTONE="$with_capstone"
|
||||
AC_MSG_RESULT([$CAPSTONE])
|
||||
|
||||
HSDIS_CFLAGS="-I${CAPSTONE}/include/capstone"
|
||||
if test "x$OPENJDK_TARGET_OS" != xwindows; then
|
||||
HSDIS_LDFLAGS="-L${CAPSTONE}/lib"
|
||||
HSDIS_LIBS="-lcapstone"
|
||||
else
|
||||
HSDIS_LDFLAGS="-nodefaultlib:libcmt.lib"
|
||||
HSDIS_LIBS="${CAPSTONE}/capstone.lib"
|
||||
fi
|
||||
else
|
||||
if test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
# There is no way to auto-detect capstone on Windowos
|
||||
AC_MSG_NOTICE([You must specify capstone location using --with-capstone=<path>])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
PKG_CHECK_MODULES(CAPSTONE, capstone, [CAPSTONE_FOUND=yes], [CAPSTONE_FOUND=no])
|
||||
if test "x$CAPSTONE_FOUND" = xyes; then
|
||||
HSDIS_CFLAGS="$CAPSTONE_CFLAGS"
|
||||
HSDIS_LDFLAGS="$CAPSTONE_LDFLAGS"
|
||||
HSDIS_LIBS="$CAPSTONE_LIBS"
|
||||
else
|
||||
HELP_MSG_MISSING_DEPENDENCY([capstone])
|
||||
AC_MSG_NOTICE([Cannot locate capstone which is needed for hsdis/capstone. Try using --with-capstone=<path>. $HELP_MSG])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Helper function to setup hsdis using LLVM
|
||||
#
|
||||
AC_DEFUN([LIB_SETUP_HSDIS_LLVM],
|
||||
[
|
||||
AC_ARG_WITH([llvm], [AS_HELP_STRING([--with-llvm],
|
||||
[where to find the LLVM files needed for hsdis/llvm])])
|
||||
|
||||
if test "x$with_llvm" != x; then
|
||||
LLVM_DIR="$with_llvm"
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" != xwindows; then
|
||||
if test "x$LLVM_DIR" = x; then
|
||||
# Macs with homebrew can have llvm in different places
|
||||
UTIL_LOOKUP_PROGS(LLVM_CONFIG, llvm-config, [$PATH:/usr/local/opt/llvm/bin:/opt/homebrew/opt/llvm/bin])
|
||||
if test "x$LLVM_CONFIG" = x; then
|
||||
AC_MSG_NOTICE([Cannot locate llvm-config which is needed for hsdis/llvm. Try using --with-llvm=<LLVM home>.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
else
|
||||
UTIL_LOOKUP_PROGS(LLVM_CONFIG, llvm-config, [$LLVM_DIR/bin])
|
||||
if test "x$LLVM_CONFIG" = x; then
|
||||
AC_MSG_NOTICE([Cannot locate llvm-config in $LLVM_DIR. Check your --with-llvm argument.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
fi
|
||||
|
||||
# We need the LLVM flags and libs, and llvm-config provides them for us.
|
||||
HSDIS_CFLAGS=`$LLVM_CONFIG --cflags`
|
||||
HSDIS_LDFLAGS=`$LLVM_CONFIG --ldflags`
|
||||
HSDIS_LIBS=`$LLVM_CONFIG --libs $OPENJDK_TARGET_CPU_ARCH ${OPENJDK_TARGET_CPU_ARCH}disassembler`
|
||||
else
|
||||
if test "x$LLVM_DIR" = x; then
|
||||
AC_MSG_NOTICE([--with-llvm is needed on Windows to point out the LLVM home])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
|
||||
# Official Windows installation of LLVM do not ship llvm-config, and self-built llvm-config
|
||||
# produced unusable output, so just ignore it on Windows.
|
||||
if ! test -e $LLVM_DIR/include/llvm-c/lto.h; then
|
||||
AC_MSG_NOTICE([$LLVM_DIR does not seem like a valid LLVM home; include dir is missing])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
if ! test -e $LLVM_DIR/include/llvm-c/Disassembler.h; then
|
||||
AC_MSG_NOTICE([$LLVM_DIR does not point to a complete LLVM installation. ])
|
||||
AC_MSG_NOTICE([The official LLVM distribution is missing crucical files; you need to build LLVM yourself or get all include files elsewhere])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
if ! test -e $LLVM_DIR/lib/llvm-c.lib; then
|
||||
AC_MSG_NOTICE([$LLVM_DIR does not seem like a valid LLVM home; lib dir is missing])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
HSDIS_CFLAGS="-I$LLVM_DIR/include"
|
||||
HSDIS_LDFLAGS="-libpath:$LLVM_DIR/lib"
|
||||
HSDIS_LIBS="llvm-c.lib"
|
||||
fi
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Helper function to build binutils from source.
|
||||
#
|
||||
AC_DEFUN([LIB_BUILD_BINUTILS],
|
||||
[
|
||||
BINUTILS_SRC="$with_binutils_src"
|
||||
UTIL_FIXUP_PATH(BINUTILS_SRC)
|
||||
|
||||
if ! test -d $BINUTILS_SRC; then
|
||||
AC_MSG_ERROR([--with-binutils-src is not pointing to a directory])
|
||||
fi
|
||||
if ! test -x $BINUTILS_SRC/configure; then
|
||||
AC_MSG_ERROR([--with-binutils-src does not look like a binutils source directory])
|
||||
fi
|
||||
|
||||
if test -e $BINUTILS_SRC/bfd/libbfd.a && \
|
||||
test -e $BINUTILS_SRC/opcodes/libopcodes.a && \
|
||||
test -e $BINUTILS_SRC/libiberty/libiberty.a && \
|
||||
test -e $BINUTILS_SRC/zlib/libz.a; then
|
||||
AC_MSG_NOTICE([Found binutils binaries in binutils source directory -- not building])
|
||||
else
|
||||
# On Windows, we cannot build with the normal Microsoft CL, but must instead use
|
||||
# a separate mingw toolchain.
|
||||
if test "x$OPENJDK_BUILD_OS" = xwindows; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
|
||||
target_base="i686-w64-mingw32"
|
||||
else
|
||||
target_base="$OPENJDK_TARGET_CPU-w64-mingw32"
|
||||
fi
|
||||
binutils_cc="$target_base-gcc"
|
||||
binutils_target="--host=$target_base --target=$target_base"
|
||||
# Somehow the uint typedef is not included when building with mingw
|
||||
binutils_cflags="-Duint=unsigned"
|
||||
compiler_version=`$binutils_cc --version 2>&1`
|
||||
if ! [ [[ "$compiler_version" =~ GCC ]] ]; then
|
||||
AC_MSG_NOTICE([Could not find correct mingw compiler $binutils_cc.])
|
||||
HELP_MSG_MISSING_DEPENDENCY([$binutils_cc])
|
||||
AC_MSG_ERROR([Cannot continue. $HELP_MSG])
|
||||
else
|
||||
AC_MSG_NOTICE([Using compiler $binutils_cc with version $compiler_version])
|
||||
fi
|
||||
elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
binutils_target="--enable-targets=aarch64-darwin"
|
||||
else
|
||||
binutils_target=""
|
||||
fi
|
||||
else
|
||||
binutils_cc="$CC $SYSROOT_CFLAGS"
|
||||
binutils_target=""
|
||||
fi
|
||||
binutils_cflags="$binutils_cflags $MACHINE_FLAG $JVM_PICFLAG $C_O_FLAG_NORM"
|
||||
|
||||
AC_MSG_NOTICE([Running binutils configure])
|
||||
AC_MSG_NOTICE([configure command line: ./configure --disable-nls CFLAGS="$binutils_cflags" CC="$binutils_cc" $binutils_target])
|
||||
saved_dir=`pwd`
|
||||
cd "$BINUTILS_SRC"
|
||||
./configure --disable-nls CFLAGS="$binutils_cflags" CC="$binutils_cc" $binutils_target
|
||||
if test $? -ne 0 || ! test -e $BINUTILS_SRC/Makefile; then
|
||||
AC_MSG_NOTICE([Automatic building of binutils failed on configure. Try building it manually])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
AC_MSG_NOTICE([Running binutils make])
|
||||
$MAKE all-opcodes
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_NOTICE([Automatic building of binutils failed on make. Try building it manually])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
fi
|
||||
cd $saved_dir
|
||||
AC_MSG_NOTICE([Building of binutils done])
|
||||
fi
|
||||
|
||||
BINUTILS_DIR="$BINUTILS_SRC"
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Helper function to setup hsdis using binutils
|
||||
#
|
||||
AC_DEFUN([LIB_SETUP_HSDIS_BINUTILS],
|
||||
[
|
||||
AC_ARG_WITH([binutils], [AS_HELP_STRING([--with-binutils],
|
||||
[where to find the binutils files needed for hsdis/binutils])])
|
||||
|
||||
AC_ARG_WITH([binutils-src], [AS_HELP_STRING([--with-binutils-src],
|
||||
[where to find the binutils source for building])])
|
||||
|
||||
# We need the binutils static libs and includes.
|
||||
if test "x$with_binutils_src" != x; then
|
||||
# Try building the source first. If it succeeds, it sets $BINUTILS_DIR.
|
||||
LIB_BUILD_BINUTILS
|
||||
fi
|
||||
|
||||
if test "x$with_binutils" != x; then
|
||||
BINUTILS_DIR="$with_binutils"
|
||||
fi
|
||||
|
||||
binutils_system_error=""
|
||||
HSDIS_LIBS=""
|
||||
if test "x$BINUTILS_DIR" = xsystem; then
|
||||
AC_CHECK_LIB(bfd, bfd_openr, [ HSDIS_LIBS="-lbfd" ], [ binutils_system_error="libbfd not found" ])
|
||||
AC_CHECK_LIB(opcodes, disassembler, [ HSDIS_LIBS="$HSDIS_LIBS -lopcodes" ], [ binutils_system_error="libopcodes not found" ])
|
||||
AC_CHECK_LIB(iberty, xmalloc, [ HSDIS_LIBS="$HSDIS_LIBS -liberty" ], [ binutils_system_error="libiberty not found" ])
|
||||
AC_CHECK_LIB(z, deflate, [ HSDIS_LIBS="$HSDIS_LIBS -lz" ], [ binutils_system_error="libz not found" ])
|
||||
HSDIS_CFLAGS="-DLIBARCH_$OPENJDK_TARGET_CPU_LEGACY_LIB"
|
||||
elif test "x$BINUTILS_DIR" != x; then
|
||||
if test -e $BINUTILS_DIR/bfd/libbfd.a && \
|
||||
test -e $BINUTILS_DIR/opcodes/libopcodes.a && \
|
||||
test -e $BINUTILS_DIR/libiberty/libiberty.a; then
|
||||
HSDIS_CFLAGS="-I$BINUTILS_DIR/include -I$BINUTILS_DIR/bfd -DLIBARCH_$OPENJDK_TARGET_CPU_LEGACY_LIB"
|
||||
HSDIS_LDFLAGS=""
|
||||
HSDIS_LIBS="$BINUTILS_DIR/bfd/libbfd.a $BINUTILS_DIR/opcodes/libopcodes.a $BINUTILS_DIR/libiberty/libiberty.a $BINUTILS_DIR/zlib/libz.a"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for binutils to use with hsdis])
|
||||
case "x$BINUTILS_DIR" in
|
||||
xsystem)
|
||||
if test "x$OPENJDK_TARGET_OS" != xlinux; then
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([binutils on system is supported for Linux only])
|
||||
elif test "x$binutils_system_error" = x; then
|
||||
AC_MSG_RESULT([system])
|
||||
HSDIS_CFLAGS="$HSDIS_CFLAGS -DSYSTEM_BINUTILS"
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([$binutils_system_error])
|
||||
fi
|
||||
;;
|
||||
x)
|
||||
AC_MSG_RESULT([missing])
|
||||
AC_MSG_NOTICE([--with-hsdis=binutils requires specifying a binutils installation.])
|
||||
AC_MSG_NOTICE([Download binutils from https://www.gnu.org/software/binutils and unpack it,])
|
||||
AC_MSG_NOTICE([and point --with-binutils-src to the resulting directory, or use])
|
||||
AC_MSG_NOTICE([--with-binutils to point to a pre-built binutils installation.])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
;;
|
||||
*)
|
||||
if test "x$HSDIS_LIBS" != x; then
|
||||
AC_MSG_RESULT([$BINUTILS_DIR])
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([$BINUTILS_DIR does not contain a proper binutils installation])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Determine if hsdis should be built, and if so, with which backend.
|
||||
#
|
||||
AC_DEFUN_ONCE([LIB_SETUP_HSDIS],
|
||||
[
|
||||
AC_ARG_WITH([hsdis], [AS_HELP_STRING([--with-hsdis],
|
||||
[what hsdis backend to use ('none', 'capstone', 'llvm', 'binutils') @<:@none@:>@])])
|
||||
|
||||
UTIL_ARG_ENABLE(NAME: hsdis-bundling, DEFAULT: false,
|
||||
RESULT: ENABLE_HSDIS_BUNDLING,
|
||||
DESC: [enable bundling of hsdis to allow HotSpot disassembly out-of-the-box])
|
||||
|
||||
AC_MSG_CHECKING([what hsdis backend to use])
|
||||
|
||||
if test "x$with_hsdis" = xyes; then
|
||||
AC_MSG_ERROR([--with-hsdis must have a value])
|
||||
elif test "x$with_hsdis" = xnone || test "x$with_hsdis" = xno || test "x$with_hsdis" = x; then
|
||||
HSDIS_BACKEND=none
|
||||
AC_MSG_RESULT(['none', hsdis will not be built])
|
||||
elif test "x$with_hsdis" = xcapstone; then
|
||||
HSDIS_BACKEND=capstone
|
||||
AC_MSG_RESULT(['capstone'])
|
||||
|
||||
LIB_SETUP_HSDIS_CAPSTONE
|
||||
elif test "x$with_hsdis" = xllvm; then
|
||||
HSDIS_BACKEND=llvm
|
||||
AC_MSG_RESULT(['llvm'])
|
||||
|
||||
LIB_SETUP_HSDIS_LLVM
|
||||
elif test "x$with_hsdis" = xbinutils; then
|
||||
HSDIS_BACKEND=binutils
|
||||
AC_MSG_RESULT(['binutils'])
|
||||
|
||||
LIB_SETUP_HSDIS_BINUTILS
|
||||
else
|
||||
AC_MSG_RESULT([invalid])
|
||||
AC_MSG_ERROR([Incorrect hsdis backend "$with_hsdis"])
|
||||
fi
|
||||
|
||||
AC_SUBST(HSDIS_BACKEND)
|
||||
AC_SUBST(HSDIS_CFLAGS)
|
||||
AC_SUBST(HSDIS_LDFLAGS)
|
||||
AC_SUBST(HSDIS_LIBS)
|
||||
|
||||
AC_MSG_CHECKING([if hsdis should be bundled])
|
||||
if test "x$ENABLE_HSDIS_BUNDLING" = "xtrue"; then
|
||||
if test "x$HSDIS_BACKEND" = xnone; then
|
||||
AC_MSG_RESULT([no, backend missing])
|
||||
AC_MSG_ERROR([hsdis-bundling requires a hsdis backend. Please set --with-hsdis=<backend>]);
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
if test "x$HSDIS_BACKEND" = xbinutils; then
|
||||
AC_MSG_WARN([The resulting build might not be redistributable. Seek legal advice before distributing.])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AC_SUBST(ENABLE_HSDIS_BUNDLING)
|
||||
])
|
||||
@@ -28,10 +28,12 @@ m4_include([lib-alsa.m4])
|
||||
m4_include([lib-bundled.m4])
|
||||
m4_include([lib-cups.m4])
|
||||
m4_include([lib-ffi.m4])
|
||||
m4_include([lib-fontconfig.m4])
|
||||
m4_include([lib-freetype.m4])
|
||||
m4_include([lib-hsdis.m4])
|
||||
m4_include([lib-std.m4])
|
||||
m4_include([lib-x11.m4])
|
||||
m4_include([lib-fontconfig.m4])
|
||||
|
||||
m4_include([lib-tests.m4])
|
||||
|
||||
################################################################################
|
||||
@@ -93,14 +95,17 @@ AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
|
||||
AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
||||
[
|
||||
LIB_SETUP_STD_LIBS
|
||||
LIB_SETUP_X11
|
||||
|
||||
LIB_SETUP_ALSA
|
||||
LIB_SETUP_BUNDLED_LIBS
|
||||
LIB_SETUP_CUPS
|
||||
LIB_SETUP_FONTCONFIG
|
||||
LIB_SETUP_FREETYPE
|
||||
LIB_SETUP_ALSA
|
||||
LIB_SETUP_HSDIS
|
||||
LIB_SETUP_LIBFFI
|
||||
LIB_SETUP_BUNDLED_LIBS
|
||||
LIB_SETUP_MISC_LIBS
|
||||
LIB_SETUP_X11
|
||||
|
||||
LIB_TESTS_SETUP_GTEST
|
||||
|
||||
BASIC_JDKLIB_LIBS=""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -130,6 +130,13 @@ RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
|
||||
|
||||
SOURCE_DATE := @SOURCE_DATE@
|
||||
ENABLE_REPRODUCIBLE_BUILD := @ENABLE_REPRODUCIBLE_BUILD@
|
||||
ISO_8601_FORMAT_STRING := @ISO_8601_FORMAT_STRING@
|
||||
|
||||
ifneq ($(SOURCE_DATE), updated)
|
||||
# For "updated" source date value, these are set in InitSupport.gmk
|
||||
export SOURCE_DATE_EPOCH := $(SOURCE_DATE)
|
||||
SOURCE_DATE_ISO_8601 := @SOURCE_DATE_ISO_8601@
|
||||
endif
|
||||
|
||||
LIBM:=@LIBM@
|
||||
LIBDL:=@LIBDL@
|
||||
@@ -239,7 +246,7 @@ VERSION_DOCS_API_SINCE := @VERSION_DOCS_API_SINCE@
|
||||
JDK_SOURCE_TARGET_VERSION := @JDK_SOURCE_TARGET_VERSION@
|
||||
|
||||
# Convenience CFLAGS settings for passing version information into native programs.
|
||||
VERSION_CFLAGS := \
|
||||
VERSION_CFLAGS = \
|
||||
-DVERSION_FEATURE=$(VERSION_FEATURE) \
|
||||
-DVERSION_INTERIM=$(VERSION_INTERIM) \
|
||||
-DVERSION_UPDATE=$(VERSION_UPDATE) \
|
||||
@@ -360,7 +367,9 @@ ENABLE_COMPATIBLE_CDS_ALIGNMENT := @ENABLE_COMPATIBLE_CDS_ALIGNMENT@
|
||||
ALLOW_ABSOLUTE_PATHS_IN_OUTPUT := @ALLOW_ABSOLUTE_PATHS_IN_OUTPUT@
|
||||
|
||||
HSDIS_BACKEND := @HSDIS_BACKEND@
|
||||
ENABLE_HSDIS_BUNDLING := @ENABLE_HSDIS_BUNDLING@
|
||||
HSDIS_CFLAGS := @HSDIS_CFLAGS@
|
||||
HSDIS_LDFLAGS := @HSDIS_LDFLAGS@
|
||||
HSDIS_LIBS := @HSDIS_LIBS@
|
||||
|
||||
# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
|
||||
@@ -371,6 +380,9 @@ BUILD_JDK:=@BUILD_JDK@
|
||||
CREATE_BUILDJDK:=@CREATE_BUILDJDK@
|
||||
EXTERNAL_BUILDJDK:=@EXTERNAL_BUILDJDK@
|
||||
|
||||
# Whether the boot jdk jar supports --date=TIMESTAMP
|
||||
BOOT_JDK_JAR_SUPPORTS_DATE:=@BOOT_JDK_JAR_SUPPORTS_DATE@
|
||||
|
||||
# When compiling Java source to be run by the boot jdk
|
||||
# use these extra flags, eg -source 6 -target 6
|
||||
BOOT_JDK_SOURCETARGET:=@BOOT_JDK_SOURCETARGET@
|
||||
@@ -403,6 +415,7 @@ LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
|
||||
ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
|
||||
LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
|
||||
FILE_MACRO_CFLAGS := @FILE_MACRO_CFLAGS@
|
||||
BRANCH_PROTECTION_CFLAGS := @BRANCH_PROTECTION_CFLAGS@
|
||||
|
||||
STATIC_LIBS_CFLAGS := @STATIC_LIBS_CFLAGS@
|
||||
|
||||
@@ -416,7 +429,7 @@ GTEST_FRAMEWORK_SRC := @GTEST_FRAMEWORK_SRC@
|
||||
|
||||
# Source file for cacerts
|
||||
CACERTS_FILE=@CACERTS_FILE@
|
||||
# Source folder for user provided cacerts PEM files
|
||||
# Source folder for user provided cacerts PEM files
|
||||
CACERTS_SRC=@CACERTS_SRC@
|
||||
|
||||
# Enable unlimited crypto policy
|
||||
@@ -578,7 +591,6 @@ AR := @AR@
|
||||
ARFLAGS:=@ARFLAGS@
|
||||
|
||||
NM:=@NM@
|
||||
GNM:=@GNM@
|
||||
STRIP:=@STRIP@
|
||||
OBJDUMP:=@OBJDUMP@
|
||||
CXXFILT:=@CXXFILT@
|
||||
@@ -707,6 +719,7 @@ CODESIGN:=@CODESIGN@
|
||||
CP:=@CP@
|
||||
CUT:=@CUT@
|
||||
DATE:=@DATE@
|
||||
IS_GNU_DATE:=@IS_GNU_DATE@
|
||||
DIFF:=@DIFF@
|
||||
DIRNAME:=@DIRNAME@
|
||||
DSYMUTIL:=@DSYMUTIL@
|
||||
@@ -925,7 +938,12 @@ JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
|
||||
JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
|
||||
|
||||
# Bundle names
|
||||
BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
|
||||
ifneq ($(VERSION_BUILD), )
|
||||
BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
|
||||
else
|
||||
BASE_NAME := $(VERSION_SHORT)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG_LEVEL), fastdebug)
|
||||
DEBUG_PART := -debug
|
||||
else ifneq ($(DEBUG_LEVEL), release)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -234,7 +234,7 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
if test -n "$XCODEBUILD"; then
|
||||
# On Mac OS X, default toolchain to clang after Xcode 5
|
||||
XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version 2>&1 | $HEAD -n 1`
|
||||
XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version | $HEAD -n 1`
|
||||
$ECHO "$XCODE_VERSION_OUTPUT" | $GREP "Xcode " > /dev/null
|
||||
if test $? -ne 0; then
|
||||
AC_MSG_NOTICE([xcodebuild output: $XCODE_VERSION_OUTPUT])
|
||||
@@ -772,8 +772,6 @@ AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_EXTRA],
|
||||
else
|
||||
UTIL_LOOKUP_TOOLCHAIN_PROGS(NM, nm)
|
||||
fi
|
||||
GNM="$NM"
|
||||
AC_SUBST(GNM)
|
||||
fi
|
||||
|
||||
# objcopy is used for moving debug symbols to separate files when
|
||||
|
||||
@@ -103,6 +103,7 @@ AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
|
||||
vc/auxiliary/build/vcvarsx86_amd64.bat vc/auxiliary/build/vcvars64.bat"
|
||||
elif test "x$TARGET_CPU" = xaarch64; then
|
||||
# for host x86-64, target aarch64
|
||||
# aarch64 requires Visual Studio 16.8 or higher
|
||||
VCVARSFILES="vc/auxiliary/build/vcvarsamd64_arm64.bat \
|
||||
vc/auxiliary/build/vcvarsx86_arm64.bat"
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
@@ -230,20 +230,20 @@ AC_DEFUN([UTIL_GET_MATCHING_VALUES],
|
||||
# Converts an ISO-8601 date/time string to a unix epoch timestamp. If no
|
||||
# suitable conversion method was found, an empty string is returned.
|
||||
#
|
||||
# Sets the specified variable to the resulting list.
|
||||
#
|
||||
# $1: result variable name
|
||||
# $2: input date/time string
|
||||
AC_DEFUN([UTIL_GET_EPOCH_TIMESTAMP],
|
||||
[
|
||||
timestamp=$($DATE --utc --date=$2 +"%s" 2> /dev/null)
|
||||
if test "x$timestamp" = x; then
|
||||
# GNU date format did not work, try BSD date options
|
||||
timestamp=$($DATE -j -f "%F %T" "$2" "+%s" 2> /dev/null)
|
||||
if test "x$IS_GNU_DATE" = xyes; then
|
||||
# GNU date
|
||||
timestamp=$($DATE --utc --date=$2 +"%s" 2> /dev/null)
|
||||
else
|
||||
# BSD date
|
||||
timestamp=$($DATE -u -j -f "%FZ %TZ" "$2" "+%s" 2> /dev/null)
|
||||
if test "x$timestamp" = x; then
|
||||
# Perhaps the time was missing
|
||||
timestamp=$($DATE -j -f "%F %T" "$2 00:00:00" "+%s" 2> /dev/null)
|
||||
# If this did not work, we give up and return the empty string
|
||||
# BSD date cannot handle trailing milliseconds.
|
||||
# Try again ignoring characters at end
|
||||
timestamp=$($DATE -u -j -f "%Y-%m-%dT%H:%M:%S" "$2" "+%s" 2> /dev/null)
|
||||
fi
|
||||
fi
|
||||
$1=$timestamp
|
||||
|
||||
@@ -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
|
||||
@@ -193,7 +193,7 @@ define SetupJarArchiveBody
|
||||
$1_UPDATE_CONTENTS=\
|
||||
if [ "`$(WC) -l $$($1_BIN)/_the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'`" -gt "0" ]; then \
|
||||
$(ECHO) " updating" `$(WC) -l $$($1_BIN)/_the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \
|
||||
$$($1_JAR_CMD) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents; \
|
||||
$$($1_JAR_CMD) --update $$($1_JAR_OPTIONS) --file $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents; \
|
||||
fi $$(NEWLINE)
|
||||
# The s-variants of the above macros are used when the jar is created from scratch.
|
||||
# NOTICE: please leave the parentheses space separated otherwise the AIX build will break!
|
||||
@@ -212,25 +212,27 @@ define SetupJarArchiveBody
|
||||
| $(SED) 's|$$(src)/|-C $$(src) |g' >> \
|
||||
$$($1_BIN)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) )
|
||||
endif
|
||||
$1_SUPDATE_CONTENTS=$$($1_JAR_CMD) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE)
|
||||
$1_SUPDATE_CONTENTS=$$($1_JAR_CMD) --update $$($1_JAR_OPTIONS) --file $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE)
|
||||
|
||||
# Use a slightly shorter name for logging, but with enough path to identify this jar.
|
||||
$1_NAME:=$$(subst $$(OUTPUTDIR)/,,$$($1_JAR))
|
||||
|
||||
ifneq (,$$($1_CHECK_COMPRESS_JAR))
|
||||
$1_JAR_CREATE_OPTIONS := c0fm
|
||||
$1_JAR_UPDATE_OPTIONS := u0f
|
||||
ifeq ($(COMPRESS_JARS), true)
|
||||
$1_JAR_CREATE_OPTIONS := cfm
|
||||
$1_JAR_UPDATE_OPTIONS := uf
|
||||
# If reproducible build and the boot jdk jar supports --date option
|
||||
# then specify the --date using SOURCE_DATE in ISO-8601
|
||||
$1_JAR_OPTIONS :=
|
||||
ifeq ($$(ENABLE_REPRODUCIBLE_BUILD), true)
|
||||
ifeq ($$(BOOT_JDK_JAR_SUPPORTS_DATE), true)
|
||||
$1_JAR_OPTIONS += --date $(SOURCE_DATE_ISO_8601)
|
||||
endif
|
||||
endif
|
||||
ifneq (,$$($1_CHECK_COMPRESS_JAR))
|
||||
ifneq ($(COMPRESS_JARS), true)
|
||||
$1_JAR_OPTIONS += --no-compress
|
||||
endif
|
||||
else
|
||||
$1_JAR_CREATE_OPTIONS := cfm
|
||||
$1_JAR_UPDATE_OPTIONS := uf
|
||||
endif
|
||||
|
||||
# Include all variables of significance in the vardeps file
|
||||
$1_VARDEPS := $$($1_JAR_CMD) $$($1_JAR_CREATE_OPTIONS) $$($1_MANIFEST) \
|
||||
$1_VARDEPS := $$($1_JAR_CMD) $$($1_JAR_OPTIONS) $$($1_MANIFEST) \
|
||||
$$($1_JARMAIN) $$($1_EXTRA_MANIFEST_ATTR) $$($1_ORIG_DEPS) $$($1_SRCS) \
|
||||
$$($1_INCLUDES) $$($1_EXCLUDES) $$($1_EXCLUDE_FILES) $$($1_EXTRA_FILES)
|
||||
$1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, $$($1_BIN)/_the.$$($1_JARNAME).vardeps)
|
||||
@@ -255,7 +257,7 @@ define SetupJarArchiveBody
|
||||
$$(if $$($1_EXTRA_MANIFEST_ATTR), \
|
||||
$(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
|
||||
$(ECHO) Creating $$($1_NAME) $$(NEWLINE) \
|
||||
$$($1_JAR_CMD) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
|
||||
$$($1_JAR_CMD) --create $$($1_JAR_OPTIONS) --file $$@ --manifest $$($1_MANIFEST_FILE) $$(NEWLINE) \
|
||||
$$($1_SCAPTURE_CONTENTS) \
|
||||
$$($1_SCAPTURE_METAINF) \
|
||||
$$($1_SUPDATE_CONTENTS) \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2022, 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
|
||||
@@ -258,7 +258,6 @@ var getJibProfilesCommon = function (input, data) {
|
||||
common.release_profile_base = {
|
||||
configure_args: [
|
||||
"--enable-reproducible-build",
|
||||
"--with-source-date=current",
|
||||
],
|
||||
};
|
||||
// Extra settings for debug profiles
|
||||
@@ -1165,19 +1164,12 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
jmh: {
|
||||
organization: common.organization,
|
||||
ext: "tar.gz",
|
||||
revision: "1.33+1.0"
|
||||
revision: "1.34+1.0"
|
||||
},
|
||||
|
||||
jcov: {
|
||||
// Use custom build of JCov
|
||||
// See CODETOOLS-7902734 for more info.
|
||||
// server: "jpg",
|
||||
// product: "jcov",
|
||||
// version: "3.0",
|
||||
// build_number: "b07",
|
||||
// file: "bundles/jcov-3_0.zip",
|
||||
organization: common.organization,
|
||||
revision: "3.0-9-jdk-asm+1.0",
|
||||
revision: "3.0-12-jdk-asm+1.0",
|
||||
ext: "zip",
|
||||
environment_name: "JCOV_HOME",
|
||||
},
|
||||
@@ -1431,7 +1423,10 @@ var getVersion = function (feature, interim, update, patch, extra1, extra2, extr
|
||||
* other version inputs
|
||||
*/
|
||||
var versionArgs = function(input, common) {
|
||||
var args = ["--with-version-build=" + common.build_number];
|
||||
var args = [];
|
||||
if (common.build_number != 0) {
|
||||
args = concat(args, "--with-version-build=" + common.build_number);
|
||||
}
|
||||
if (input.build_type == "promoted") {
|
||||
args = concat(args,
|
||||
"--with-version-pre=" + version_numbers.get("DEFAULT_PROMOTED_VERSION_PRE"),
|
||||
@@ -1451,6 +1446,14 @@ var versionArgs = function(input, common) {
|
||||
} else {
|
||||
args = concat(args, "--with-version-opt=" + common.build_id);
|
||||
}
|
||||
var sourceDate
|
||||
if (input.build_id_data && input.build_id_data.creationTime) {
|
||||
sourceDate = Math.floor(Date.parse(input.build_id_data.creationTime)/1000);
|
||||
} else {
|
||||
sourceDate = "current";
|
||||
}
|
||||
args = concat(args, "--with-source-date=" + sourceDate);
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2022, 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
|
||||
@@ -158,6 +158,7 @@ JVM_IsSupportedJNIVersion
|
||||
JVM_IsThreadAlive
|
||||
JVM_IsVMGeneratedMethodIx
|
||||
JVM_LatestUserDefinedLoader
|
||||
JVM_LoadZipLibrary
|
||||
JVM_LoadLibrary
|
||||
JVM_LookupDefineClass
|
||||
JVM_LookupLambdaProxyClassFromArchive
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
Github: https://raw.githubusercontent.com/publicsuffix/list/cbbba1d234670453df9c930dfbf510c0474d4301/public_suffix_list.dat
|
||||
Date: 2020-04-24
|
||||
Github: https://raw.githubusercontent.com/publicsuffix/list/3c213aab32b3c014f171b1673d4ce9b5cd72bf1c/public_suffix_list.dat
|
||||
Date: 2021-11-27
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2021, 2022, 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
|
||||
@@ -284,6 +284,10 @@ innerclass innerClass java/security/KeyStore$Entry outerClass java/security/KeyS
|
||||
innerclass innerClass java/security/KeyStore$Entry$Attribute outerClass java/security/KeyStore$Entry innerClassName Attribute flags 609
|
||||
method name engineGetAttributes descriptor (Ljava/lang/String;)Ljava/util/Set; flags 1 signature (Ljava/lang/String;)Ljava/util/Set<Ljava/security/KeyStore$Entry$Attribute;>;
|
||||
|
||||
class name java/security/Provider
|
||||
-method name getServices descriptor ()Ljava/util/Set;
|
||||
method name getServices descriptor ()Ljava/util/Set; flags 1 signature ()Ljava/util/Set<Ljava/security/Provider$Service;>;
|
||||
|
||||
class name java/security/SecureRandomParameters
|
||||
header extends java/lang/Object flags 601
|
||||
|
||||
@@ -389,6 +393,16 @@ header extends java/util/AbstractSet implements java/util/Set,java/lang/Cloneabl
|
||||
innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
|
||||
class name java/util/Hashtable
|
||||
header extends java/util/Dictionary implements java/util/Map,java/lang/Cloneable,java/io/Serializable flags 21 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Dictionary<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
|
||||
|
||||
class name java/util/IdentityHashMap
|
||||
header extends java/util/AbstractMap implements java/util/Map,java/io/Serializable,java/lang/Cloneable flags 21 signature <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable;Ljava/lang/Cloneable;
|
||||
innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609
|
||||
innerclass innerClass java/io/ObjectInputStream$GetField outerClass java/io/ObjectInputStream innerClassName GetField flags 409
|
||||
|
||||
class name java/util/Locale$IsoCountryCode
|
||||
header extends java/lang/Enum nestHost java/util/Locale sealed true flags 4421 signature Ljava/lang/Enum<Ljava/util/Locale$IsoCountryCode;>;
|
||||
innerclass innerClass java/util/Locale$IsoCountryCode outerClass java/util/Locale innerClassName IsoCountryCode flags 4409
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Blocks-13.0.0.txt
|
||||
# Date: 2019-07-10, 19:06:00 GMT [KW]
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Blocks-14.0.0.txt
|
||||
# Date: 2021-01-22, 23:29:00 GMT [KW]
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
@@ -52,6 +52,7 @@
|
||||
0800..083F; Samaritan
|
||||
0840..085F; Mandaic
|
||||
0860..086F; Syriac Supplement
|
||||
0870..089F; Arabic Extended-B
|
||||
08A0..08FF; Arabic Extended-A
|
||||
0900..097F; Devanagari
|
||||
0980..09FF; Bengali
|
||||
@@ -215,7 +216,9 @@ FFF0..FFFF; Specials
|
||||
104B0..104FF; Osage
|
||||
10500..1052F; Elbasan
|
||||
10530..1056F; Caucasian Albanian
|
||||
10570..105BF; Vithkuqi
|
||||
10600..1077F; Linear A
|
||||
10780..107BF; Latin Extended-F
|
||||
10800..1083F; Cypriot Syllabary
|
||||
10840..1085F; Imperial Aramaic
|
||||
10860..1087F; Palmyrene
|
||||
@@ -240,6 +243,7 @@ FFF0..FFFF; Specials
|
||||
10E80..10EBF; Yezidi
|
||||
10F00..10F2F; Old Sogdian
|
||||
10F30..10F6F; Sogdian
|
||||
10F70..10FAF; Old Uyghur
|
||||
10FB0..10FDF; Chorasmian
|
||||
10FE0..10FFF; Elymaic
|
||||
11000..1107F; Brahmi
|
||||
@@ -259,13 +263,14 @@ FFF0..FFFF; Specials
|
||||
11600..1165F; Modi
|
||||
11660..1167F; Mongolian Supplement
|
||||
11680..116CF; Takri
|
||||
11700..1173F; Ahom
|
||||
11700..1174F; Ahom
|
||||
11800..1184F; Dogra
|
||||
118A0..118FF; Warang Citi
|
||||
11900..1195F; Dives Akuru
|
||||
119A0..119FF; Nandinagari
|
||||
11A00..11A4F; Zanabazar Square
|
||||
11A50..11AAF; Soyombo
|
||||
11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
|
||||
11AC0..11AFF; Pau Cin Hau
|
||||
11C00..11C6F; Bhaiksuki
|
||||
11C70..11CBF; Marchen
|
||||
@@ -277,11 +282,13 @@ FFF0..FFFF; Specials
|
||||
12000..123FF; Cuneiform
|
||||
12400..1247F; Cuneiform Numbers and Punctuation
|
||||
12480..1254F; Early Dynastic Cuneiform
|
||||
12F90..12FFF; Cypro-Minoan
|
||||
13000..1342F; Egyptian Hieroglyphs
|
||||
13430..1343F; Egyptian Hieroglyph Format Controls
|
||||
14400..1467F; Anatolian Hieroglyphs
|
||||
16800..16A3F; Bamum Supplement
|
||||
16A40..16A6F; Mro
|
||||
16A70..16ACF; Tangsa
|
||||
16AD0..16AFF; Bassa Vah
|
||||
16B00..16B8F; Pahawh Hmong
|
||||
16E40..16E9F; Medefaidrin
|
||||
@@ -290,13 +297,15 @@ FFF0..FFFF; Specials
|
||||
17000..187FF; Tangut
|
||||
18800..18AFF; Tangut Components
|
||||
18B00..18CFF; Khitan Small Script
|
||||
18D00..18D8F; Tangut Supplement
|
||||
18D00..18D7F; Tangut Supplement
|
||||
1AFF0..1AFFF; Kana Extended-B
|
||||
1B000..1B0FF; Kana Supplement
|
||||
1B100..1B12F; Kana Extended-A
|
||||
1B130..1B16F; Small Kana Extension
|
||||
1B170..1B2FF; Nushu
|
||||
1BC00..1BC9F; Duployan
|
||||
1BCA0..1BCAF; Shorthand Format Controls
|
||||
1CF00..1CFCF; Znamenny Musical Notation
|
||||
1D000..1D0FF; Byzantine Musical Symbols
|
||||
1D100..1D1FF; Musical Symbols
|
||||
1D200..1D24F; Ancient Greek Musical Notation
|
||||
@@ -305,9 +314,12 @@ FFF0..FFFF; Specials
|
||||
1D360..1D37F; Counting Rod Numerals
|
||||
1D400..1D7FF; Mathematical Alphanumeric Symbols
|
||||
1D800..1DAAF; Sutton SignWriting
|
||||
1DF00..1DFFF; Latin Extended-G
|
||||
1E000..1E02F; Glagolitic Supplement
|
||||
1E100..1E14F; Nyiakeng Puachue Hmong
|
||||
1E290..1E2BF; Toto
|
||||
1E2C0..1E2FF; Wancho
|
||||
1E7E0..1E7FF; Ethiopic Extended-B
|
||||
1E800..1E8DF; Mende Kikakui
|
||||
1E900..1E95F; Adlam
|
||||
1EC70..1ECBF; Indic Siyaq Numbers
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
# PropList-13.0.0.txt
|
||||
# Date: 2019-11-27, 03:13:28 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# PropList-14.0.0.txt
|
||||
# Date: 2021-08-12, 23:13:05 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@@ -54,6 +54,7 @@
|
||||
2E1A ; Dash # Pd HYPHEN WITH DIAERESIS
|
||||
2E3A..2E3B ; Dash # Pd [2] TWO-EM DASH..THREE-EM DASH
|
||||
2E40 ; Dash # Pd DOUBLE HYPHEN
|
||||
2E5D ; Dash # Pd OBLIQUE HYPHEN
|
||||
301C ; Dash # Pd WAVE DASH
|
||||
3030 ; Dash # Pd WAVY DASH
|
||||
30A0 ; Dash # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
|
||||
@@ -63,7 +64,7 @@ FE63 ; Dash # Pd SMALL HYPHEN-MINUS
|
||||
FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS
|
||||
10EAD ; Dash # Pd YEZIDI HYPHENATION MARK
|
||||
|
||||
# Total code points: 29
|
||||
# Total code points: 30
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -126,7 +127,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ
|
||||
060C ; Terminal_Punctuation # Po ARABIC COMMA
|
||||
061B ; Terminal_Punctuation # Po ARABIC SEMICOLON
|
||||
061E..061F ; Terminal_Punctuation # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
|
||||
061D..061F ; Terminal_Punctuation # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
|
||||
06D4 ; Terminal_Punctuation # Po ARABIC FULL STOP
|
||||
0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
|
||||
070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS
|
||||
@@ -150,6 +151,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
1AA8..1AAB ; Terminal_Punctuation # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
|
||||
1B5A..1B5B ; Terminal_Punctuation # Po [2] BALINESE PANTI..BALINESE PAMADA
|
||||
1B5D..1B5F ; Terminal_Punctuation # Po [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN
|
||||
1B7D..1B7E ; Terminal_Punctuation # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
|
||||
1C3B..1C3F ; Terminal_Punctuation # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
|
||||
1C7E..1C7F ; Terminal_Punctuation # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
|
||||
203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
|
||||
@@ -159,6 +161,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
2E41 ; Terminal_Punctuation # Po REVERSED COMMA
|
||||
2E4C ; Terminal_Punctuation # Po MEDIEVAL COMMA
|
||||
2E4E..2E4F ; Terminal_Punctuation # Po [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER
|
||||
2E53..2E54 ; Terminal_Punctuation # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
|
||||
3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
|
||||
A4FE..A4FF ; Terminal_Punctuation # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
|
||||
A60D..A60F ; Terminal_Punctuation # Po [3] VAI COMMA..VAI QUESTION MARK
|
||||
@@ -189,6 +192,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
|
||||
10B3A..10B3F ; Terminal_Punctuation # Po [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION
|
||||
10B99..10B9C ; Terminal_Punctuation # Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
|
||||
10F55..10F59 ; Terminal_Punctuation # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
|
||||
10F86..10F89 ; Terminal_Punctuation # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
|
||||
11047..1104D ; Terminal_Punctuation # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
|
||||
110BE..110C1 ; Terminal_Punctuation # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
|
||||
11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK
|
||||
@@ -220,7 +224,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
|
||||
1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
|
||||
1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON
|
||||
|
||||
# Total code points: 267
|
||||
# Total code points: 276
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -600,6 +604,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
|
||||
1A6D..1A72 ; Other_Alphabetic # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
|
||||
1A73..1A74 ; Other_Alphabetic # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG
|
||||
1ABF..1AC0 ; Other_Alphabetic # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
1ACC..1ACE ; Other_Alphabetic # Mn [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T
|
||||
1B00..1B03 ; Other_Alphabetic # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
|
||||
1B04 ; Other_Alphabetic # Mc BALINESE SIGN BISAH
|
||||
1B35 ; Other_Alphabetic # Mc BALINESE VOWEL SIGN TEDUNG
|
||||
@@ -686,10 +691,12 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
11001 ; Other_Alphabetic # Mn BRAHMI SIGN ANUSVARA
|
||||
11002 ; Other_Alphabetic # Mc BRAHMI SIGN VISARGA
|
||||
11038..11045 ; Other_Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU
|
||||
11073..11074 ; Other_Alphabetic # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
|
||||
11082 ; Other_Alphabetic # Mc KAITHI SIGN VISARGA
|
||||
110B0..110B2 ; Other_Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
|
||||
110B3..110B6 ; Other_Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
|
||||
110B7..110B8 ; Other_Alphabetic # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
|
||||
110C2 ; Other_Alphabetic # Mn KAITHI VOWEL SIGN VOCALIC R
|
||||
11100..11102 ; Other_Alphabetic # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
|
||||
11127..1112B ; Other_Alphabetic # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
|
||||
1112C ; Other_Alphabetic # Mc CHAKMA VOWEL SIGN E
|
||||
@@ -815,7 +822,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
|
||||
1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
|
||||
|
||||
# Total code points: 1398
|
||||
# Total code points: 1404
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -824,7 +831,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
|
||||
3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
|
||||
3400..4DBF ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
|
||||
4E00..9FFC ; Ideographic # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
|
||||
4E00..9FFF ; Ideographic # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
|
||||
F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
|
||||
FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
|
||||
16FE4 ; Ideographic # Mn KHITAN SMALL SCRIPT FILLER
|
||||
@@ -832,15 +839,15 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
18800..18CD5 ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
|
||||
18D00..18D08 ; Ideographic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
|
||||
1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
|
||||
20000..2A6DD ; Ideographic # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
|
||||
2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
|
||||
20000..2A6DF ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
|
||||
2A700..2B738 ; Ideographic # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738
|
||||
2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
|
||||
2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
|
||||
2CEB0..2EBE0 ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
|
||||
2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||
30000..3134A ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
|
||||
|
||||
# Total code points: 101652
|
||||
# Total code points: 101661
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -885,6 +892,9 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
|
||||
07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
|
||||
0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH
|
||||
0898..089F ; Diacritic # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
|
||||
08C9 ; Diacritic # Lm ARABIC SMALL FARSI YEH
|
||||
08CA..08D2 ; Diacritic # Mn [9] ARABIC SMALL HIGH FARSI YEH..ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW
|
||||
08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT
|
||||
093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA
|
||||
094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA
|
||||
@@ -901,6 +911,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
0B4D ; Diacritic # Mn ORIYA SIGN VIRAMA
|
||||
0B55 ; Diacritic # Mn ORIYA SIGN OVERLINE
|
||||
0BCD ; Diacritic # Mn TAMIL SIGN VIRAMA
|
||||
0C3C ; Diacritic # Mn TELUGU SIGN NUKTA
|
||||
0C4D ; Diacritic # Mn TELUGU SIGN VIRAMA
|
||||
0CBC ; Diacritic # Mn KANNADA SIGN NUKTA
|
||||
0CCD ; Diacritic # Mn KANNADA SIGN VIRAMA
|
||||
@@ -928,12 +939,16 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
108F ; Diacritic # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
|
||||
109A..109B ; Diacritic # Mc [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3
|
||||
135D..135F ; Diacritic # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
|
||||
1714 ; Diacritic # Mn TAGALOG SIGN VIRAMA
|
||||
1715 ; Diacritic # Mc TAGALOG SIGN PAMUDPOD
|
||||
17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
|
||||
17DD ; Diacritic # Mn KHMER SIGN ATTHACAN
|
||||
1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
|
||||
1A75..1A7C ; Diacritic # Mn [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN
|
||||
1A7F ; Diacritic # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
|
||||
1AB0..1ABD ; Diacritic # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
|
||||
1ABE ; Diacritic # Me COMBINING PARENTHESES OVERLAY
|
||||
1AC1..1ACB ; Diacritic # Mn [11] COMBINING LEFT PARENTHESIS ABOVE LEFT..COMBINING TRIPLE ACUTE ACCENT
|
||||
1B34 ; Diacritic # Mn BALINESE SIGN REREKAN
|
||||
1B44 ; Diacritic # Mc BALINESE ADEG ADEG
|
||||
1B6B..1B73 ; Diacritic # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
|
||||
@@ -952,8 +967,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
1CF8..1CF9 ; Diacritic # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
|
||||
1D2C..1D6A ; Diacritic # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
|
||||
1DC4..1DCF ; Diacritic # Mn [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW
|
||||
1DF5..1DF9 ; Diacritic # Mn [5] COMBINING UP TACK ABOVE..COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
1DFD..1DFF ; Diacritic # Mn [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
1DF5..1DFF ; Diacritic # Mn [11] COMBINING UP TACK ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
1FBD ; Diacritic # Sk GREEK KORONIS
|
||||
1FBF..1FC1 ; Diacritic # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
|
||||
1FCD..1FCF ; Diacritic # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
|
||||
@@ -1008,10 +1022,16 @@ FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND
|
||||
FF9E..FF9F ; Diacritic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
|
||||
FFE3 ; Diacritic # Sk FULLWIDTH MACRON
|
||||
102E0 ; Diacritic # Mn COPTIC EPACT THOUSANDS MARK
|
||||
10780..10785 ; Diacritic # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
|
||||
10787..107B0 ; Diacritic # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
|
||||
107B2..107BA ; Diacritic # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
|
||||
10AE5..10AE6 ; Diacritic # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
|
||||
10D22..10D23 ; Diacritic # Lo [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
|
||||
10D24..10D27 ; Diacritic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
|
||||
10F46..10F50 ; Diacritic # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
|
||||
10F82..10F85 ; Diacritic # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
|
||||
11046 ; Diacritic # Mn BRAHMI VIRAMA
|
||||
11070 ; Diacritic # Mn BRAHMI SIGN OLD TAMIL VIRAMA
|
||||
110B9..110BA ; Diacritic # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
|
||||
11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
|
||||
11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA
|
||||
@@ -1049,18 +1069,24 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
|
||||
16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
|
||||
16FF0..16FF1 ; Diacritic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
|
||||
1AFF0..1AFF3 ; Diacritic # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
|
||||
1AFF5..1AFFB ; Diacritic # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
|
||||
1AFFD..1AFFE ; Diacritic # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
|
||||
1CF00..1CF2D ; Diacritic # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
|
||||
1CF30..1CF46 ; Diacritic # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
|
||||
1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
|
||||
1D16D..1D172 ; Diacritic # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
|
||||
1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
|
||||
1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
|
||||
1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
|
||||
1E130..1E136 ; Diacritic # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||
1E2AE ; Diacritic # Mn TOTO SIGN RISING TONE
|
||||
1E2EC..1E2EF ; Diacritic # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||
1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
|
||||
1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
|
||||
1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
|
||||
|
||||
# Total code points: 882
|
||||
# Total code points: 1064
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1088,6 +1114,7 @@ AA70 ; Extender # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
|
||||
AADD ; Extender # Lm TAI VIET SYMBOL SAM
|
||||
AAF3..AAF4 ; Extender # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
|
||||
FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
|
||||
10781..10782 ; Extender # Lm [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
|
||||
1135D ; Extender # Lo GRANTHA SIGN PLUTA
|
||||
115C6..115C8 ; Extender # Po [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3
|
||||
11A98 ; Extender # Mn SOYOMBO GEMINATION MARK
|
||||
@@ -1097,7 +1124,7 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND
|
||||
1E13C..1E13D ; Extender # Lm [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
|
||||
1E944..1E946 ; Extender # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
|
||||
|
||||
# Total code points: 48
|
||||
# Total code points: 50
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1121,8 +1148,12 @@ A69C..A69D ; Other_Lowercase # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..M
|
||||
A770 ; Other_Lowercase # Lm MODIFIER LETTER US
|
||||
A7F8..A7F9 ; Other_Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
|
||||
AB5C..AB5F ; Other_Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
|
||||
10780 ; Other_Lowercase # Lm MODIFIER LETTER SMALL CAPITAL AA
|
||||
10783..10785 ; Other_Lowercase # Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK
|
||||
10787..107B0 ; Other_Lowercase # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
|
||||
107B2..107BA ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
|
||||
|
||||
# Total code points: 189
|
||||
# Total code points: 244
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1211,7 +1242,7 @@ E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG
|
||||
# ================================================
|
||||
|
||||
3400..4DBF ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
|
||||
4E00..9FFC ; Unified_Ideograph # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
|
||||
4E00..9FFF ; Unified_Ideograph # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
|
||||
FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
|
||||
FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11
|
||||
FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
|
||||
@@ -1219,14 +1250,14 @@ FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F
|
||||
FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21
|
||||
FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
|
||||
FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
|
||||
20000..2A6DD ; Unified_Ideograph # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
|
||||
2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
|
||||
20000..2A6DF ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
|
||||
2A700..2B738 ; Unified_Ideograph # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738
|
||||
2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
|
||||
2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
|
||||
2CEB0..2EBE0 ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
|
||||
30000..3134A ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
|
||||
|
||||
# Total code points: 92856
|
||||
# Total code points: 92865
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1291,8 +1322,9 @@ E0001 ; Deprecated # Cf LANGUAGE TAG
|
||||
1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
|
||||
1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
|
||||
1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
|
||||
1DF1A ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK
|
||||
|
||||
# Total code points: 46
|
||||
# Total code points: 47
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1330,7 +1362,7 @@ AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET
|
||||
002E ; Sentence_Terminal # Po FULL STOP
|
||||
003F ; Sentence_Terminal # Po QUESTION MARK
|
||||
0589 ; Sentence_Terminal # Po ARMENIAN FULL STOP
|
||||
061E..061F ; Sentence_Terminal # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
|
||||
061D..061F ; Sentence_Terminal # Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
|
||||
06D4 ; Sentence_Terminal # Po ARABIC FULL STOP
|
||||
0700..0702 ; Sentence_Terminal # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
|
||||
07F9 ; Sentence_Terminal # Po NKO EXCLAMATION MARK
|
||||
@@ -1349,12 +1381,14 @@ AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET
|
||||
1AA8..1AAB ; Sentence_Terminal # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
|
||||
1B5A..1B5B ; Sentence_Terminal # Po [2] BALINESE PANTI..BALINESE PAMADA
|
||||
1B5E..1B5F ; Sentence_Terminal # Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
|
||||
1B7D..1B7E ; Sentence_Terminal # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
|
||||
1C3B..1C3C ; Sentence_Terminal # Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
|
||||
1C7E..1C7F ; Sentence_Terminal # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
|
||||
203C..203D ; Sentence_Terminal # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
|
||||
2047..2049 ; Sentence_Terminal # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
|
||||
2E2E ; Sentence_Terminal # Po REVERSED QUESTION MARK
|
||||
2E3C ; Sentence_Terminal # Po STENOGRAPHIC FULL STOP
|
||||
2E53..2E54 ; Sentence_Terminal # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
|
||||
3002 ; Sentence_Terminal # Po IDEOGRAPHIC FULL STOP
|
||||
A4FF ; Sentence_Terminal # Po LISU PUNCTUATION FULL STOP
|
||||
A60E..A60F ; Sentence_Terminal # Po [2] VAI FULL STOP..VAI QUESTION MARK
|
||||
@@ -1375,6 +1409,7 @@ FF1F ; Sentence_Terminal # Po FULLWIDTH QUESTION MARK
|
||||
FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP
|
||||
10A56..10A57 ; Sentence_Terminal # Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
|
||||
10F55..10F59 ; Sentence_Terminal # Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
|
||||
10F86..10F89 ; Sentence_Terminal # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
|
||||
11047..11048 ; Sentence_Terminal # Po [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
|
||||
110BE..110C1 ; Sentence_Terminal # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
|
||||
11141..11143 ; Sentence_Terminal # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK
|
||||
@@ -1403,15 +1438,16 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP
|
||||
1BC9F ; Sentence_Terminal # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
|
||||
1DA88 ; Sentence_Terminal # Po SIGNWRITING FULL STOP
|
||||
|
||||
# Total code points: 143
|
||||
# Total code points: 152
|
||||
|
||||
# ================================================
|
||||
|
||||
180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
180F ; Variation_Selector # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
|
||||
FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
|
||||
E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
|
||||
# Total code points: 259
|
||||
# Total code points: 260
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1644,8 +1680,17 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
|
||||
2E42 ; Pattern_Syntax # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK
|
||||
2E43..2E4F ; Pattern_Syntax # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
|
||||
2E50..2E51 ; Pattern_Syntax # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
|
||||
2E52 ; Pattern_Syntax # Po TIRONIAN SIGN CAPITAL ET
|
||||
2E53..2E7F ; Pattern_Syntax # Cn [45] <reserved-2E53>..<reserved-2E7F>
|
||||
2E52..2E54 ; Pattern_Syntax # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
|
||||
2E55 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH STROKE
|
||||
2E56 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH STROKE
|
||||
2E57 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E58 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E59 ; Pattern_Syntax # Ps TOP HALF LEFT PARENTHESIS
|
||||
2E5A ; Pattern_Syntax # Pe TOP HALF RIGHT PARENTHESIS
|
||||
2E5B ; Pattern_Syntax # Ps BOTTOM HALF LEFT PARENTHESIS
|
||||
2E5C ; Pattern_Syntax # Pe BOTTOM HALF RIGHT PARENTHESIS
|
||||
2E5D ; Pattern_Syntax # Pd OBLIQUE HYPHEN
|
||||
2E5E..2E7F ; Pattern_Syntax # Cn [34] <reserved-2E5E>..<reserved-2E7F>
|
||||
3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
|
||||
3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET
|
||||
3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET
|
||||
@@ -1682,11 +1727,12 @@ FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT
|
||||
0600..0605 ; Prepended_Concatenation_Mark # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
|
||||
06DD ; Prepended_Concatenation_Mark # Cf ARABIC END OF AYAH
|
||||
070F ; Prepended_Concatenation_Mark # Cf SYRIAC ABBREVIATION MARK
|
||||
0890..0891 ; Prepended_Concatenation_Mark # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
|
||||
08E2 ; Prepended_Concatenation_Mark # Cf ARABIC DISPUTED END OF AYAH
|
||||
110BD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN
|
||||
110CD ; Prepended_Concatenation_Mark # Cf KAITHI NUMBER SIGN ABOVE
|
||||
|
||||
# Total code points: 11
|
||||
# Total code points: 13
|
||||
|
||||
# ================================================
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# PropertyValueAliases-13.0.0.txt
|
||||
# Date: 2019-11-13, 21:52:10 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# PropertyValueAliases-14.0.0.txt
|
||||
# Date: 2021-05-10, 21:08:53 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@@ -89,6 +89,7 @@ age; 11.0 ; V11_0
|
||||
age; 12.0 ; V12_0
|
||||
age; 12.1 ; V12_1
|
||||
age; 13.0 ; V13_0
|
||||
age; 14.0 ; V14_0
|
||||
age; NA ; Unassigned
|
||||
|
||||
# Alphabetic (Alpha)
|
||||
@@ -160,6 +161,7 @@ blk; Ancient_Greek_Numbers ; Ancient_Greek_Numbers
|
||||
blk; Ancient_Symbols ; Ancient_Symbols
|
||||
blk; Arabic ; Arabic
|
||||
blk; Arabic_Ext_A ; Arabic_Extended_A
|
||||
blk; Arabic_Ext_B ; Arabic_Extended_B
|
||||
blk; Arabic_Math ; Arabic_Mathematical_Alphabetic_Symbols
|
||||
blk; Arabic_PF_A ; Arabic_Presentation_Forms_A ; Arabic_Presentation_Forms-A
|
||||
blk; Arabic_PF_B ; Arabic_Presentation_Forms_B
|
||||
@@ -216,6 +218,7 @@ blk; Cuneiform ; Cuneiform
|
||||
blk; Cuneiform_Numbers ; Cuneiform_Numbers_And_Punctuation
|
||||
blk; Currency_Symbols ; Currency_Symbols
|
||||
blk; Cypriot_Syllabary ; Cypriot_Syllabary
|
||||
blk; Cypro_Minoan ; Cypro_Minoan
|
||||
blk; Cyrillic ; Cyrillic
|
||||
blk; Cyrillic_Ext_A ; Cyrillic_Extended_A
|
||||
blk; Cyrillic_Ext_B ; Cyrillic_Extended_B
|
||||
@@ -246,6 +249,7 @@ blk; Enclosed_Ideographic_Sup ; Enclosed_Ideographic_Supplement
|
||||
blk; Ethiopic ; Ethiopic
|
||||
blk; Ethiopic_Ext ; Ethiopic_Extended
|
||||
blk; Ethiopic_Ext_A ; Ethiopic_Extended_A
|
||||
blk; Ethiopic_Ext_B ; Ethiopic_Extended_B
|
||||
blk; Ethiopic_Sup ; Ethiopic_Supplement
|
||||
blk; Geometric_Shapes ; Geometric_Shapes
|
||||
blk; Geometric_Shapes_Ext ; Geometric_Shapes_Extended
|
||||
@@ -285,6 +289,7 @@ blk; Jamo_Ext_B ; Hangul_Jamo_Extended_B
|
||||
blk; Javanese ; Javanese
|
||||
blk; Kaithi ; Kaithi
|
||||
blk; Kana_Ext_A ; Kana_Extended_A
|
||||
blk; Kana_Ext_B ; Kana_Extended_B
|
||||
blk; Kana_Sup ; Kana_Supplement
|
||||
blk; Kanbun ; Kanbun
|
||||
blk; Kangxi ; Kangxi_Radicals
|
||||
@@ -306,6 +311,8 @@ blk; Latin_Ext_B ; Latin_Extended_B
|
||||
blk; Latin_Ext_C ; Latin_Extended_C
|
||||
blk; Latin_Ext_D ; Latin_Extended_D
|
||||
blk; Latin_Ext_E ; Latin_Extended_E
|
||||
blk; Latin_Ext_F ; Latin_Extended_F
|
||||
blk; Latin_Ext_G ; Latin_Extended_G
|
||||
blk; Lepcha ; Lepcha
|
||||
blk; Letterlike_Symbols ; Letterlike_Symbols
|
||||
blk; Limbu ; Limbu
|
||||
@@ -372,6 +379,7 @@ blk; Old_Persian ; Old_Persian
|
||||
blk; Old_Sogdian ; Old_Sogdian
|
||||
blk; Old_South_Arabian ; Old_South_Arabian
|
||||
blk; Old_Turkic ; Old_Turkic
|
||||
blk; Old_Uyghur ; Old_Uyghur
|
||||
blk; Oriya ; Oriya
|
||||
blk; Ornamental_Dingbats ; Ornamental_Dingbats
|
||||
blk; Osage ; Osage
|
||||
@@ -433,6 +441,7 @@ blk; Tai_Xuan_Jing ; Tai_Xuan_Jing_Symbols
|
||||
blk; Takri ; Takri
|
||||
blk; Tamil ; Tamil
|
||||
blk; Tamil_Sup ; Tamil_Supplement
|
||||
blk; Tangsa ; Tangsa
|
||||
blk; Tangut ; Tangut
|
||||
blk; Tangut_Components ; Tangut_Components
|
||||
blk; Tangut_Sup ; Tangut_Supplement
|
||||
@@ -442,13 +451,16 @@ blk; Thai ; Thai
|
||||
blk; Tibetan ; Tibetan
|
||||
blk; Tifinagh ; Tifinagh
|
||||
blk; Tirhuta ; Tirhuta
|
||||
blk; Toto ; Toto
|
||||
blk; Transport_And_Map ; Transport_And_Map_Symbols
|
||||
blk; UCAS ; Unified_Canadian_Aboriginal_Syllabics; Canadian_Syllabics
|
||||
blk; UCAS_Ext ; Unified_Canadian_Aboriginal_Syllabics_Extended
|
||||
blk; UCAS_Ext_A ; Unified_Canadian_Aboriginal_Syllabics_Extended_A
|
||||
blk; Ugaritic ; Ugaritic
|
||||
blk; Vai ; Vai
|
||||
blk; Vedic_Ext ; Vedic_Extensions
|
||||
blk; Vertical_Forms ; Vertical_Forms
|
||||
blk; Vithkuqi ; Vithkuqi
|
||||
blk; VS ; Variation_Selectors
|
||||
blk; VS_Sup ; Variation_Selectors_Supplement
|
||||
blk; Wancho ; Wancho
|
||||
@@ -458,6 +470,7 @@ blk; Yi_Radicals ; Yi_Radicals
|
||||
blk; Yi_Syllables ; Yi_Syllables
|
||||
blk; Yijing ; Yijing_Hexagram_Symbols
|
||||
blk; Zanabazar_Square ; Zanabazar_Square
|
||||
blk; Znamenny_Music ; Znamenny_Musical_Notation
|
||||
|
||||
# Canonical_Combining_Class (ccc)
|
||||
|
||||
@@ -1032,6 +1045,8 @@ jg ; Taw ; Taw
|
||||
jg ; Teh_Marbuta ; Teh_Marbuta
|
||||
jg ; Teh_Marbuta_Goal ; Hamza_On_Heh_Goal
|
||||
jg ; Teth ; Teth
|
||||
jg ; Thin_Yeh ; Thin_Yeh
|
||||
jg ; Vertical_Tail ; Vertical_Tail
|
||||
jg ; Waw ; Waw
|
||||
jg ; Yeh ; Yeh
|
||||
jg ; Yeh_Barree ; Yeh_Barree
|
||||
@@ -1262,6 +1277,7 @@ sc ; Cham ; Cham
|
||||
sc ; Cher ; Cherokee
|
||||
sc ; Chrs ; Chorasmian
|
||||
sc ; Copt ; Coptic ; Qaac
|
||||
sc ; Cpmn ; Cypro_Minoan
|
||||
sc ; Cprt ; Cypriot
|
||||
sc ; Cyrl ; Cyrillic
|
||||
sc ; Deva ; Devanagari
|
||||
@@ -1341,6 +1357,7 @@ sc ; Orkh ; Old_Turkic
|
||||
sc ; Orya ; Oriya
|
||||
sc ; Osge ; Osage
|
||||
sc ; Osma ; Osmanya
|
||||
sc ; Ougr ; Old_Uyghur
|
||||
sc ; Palm ; Palmyrene
|
||||
sc ; Pauc ; Pau_Cin_Hau
|
||||
sc ; Perm ; Old_Permic
|
||||
@@ -1383,8 +1400,11 @@ sc ; Thaa ; Thaana
|
||||
sc ; Thai ; Thai
|
||||
sc ; Tibt ; Tibetan
|
||||
sc ; Tirh ; Tirhuta
|
||||
sc ; Tnsa ; Tangsa
|
||||
sc ; Toto ; Toto
|
||||
sc ; Ugar ; Ugaritic
|
||||
sc ; Vaii ; Vai
|
||||
sc ; Vith ; Vithkuqi
|
||||
sc ; Wara ; Warang_Citi
|
||||
sc ; Wcho ; Wancho
|
||||
sc ; Xpeo ; Old_Persian
|
||||
|
||||
16
make/data/unicodedata/ReadMe.txt
Normal file
16
make/data/unicodedata/ReadMe.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
# Unicode Character Database
|
||||
# Date: 2021-09-10, 17:22:00 GMT [KW]
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# For documentation, see the following:
|
||||
# NamesList.html
|
||||
# UAX #38, "Unicode Han Database (Unihan)"
|
||||
# UAX #44, "Unicode Character Database"
|
||||
# UTS #51, "Unicode Emoji"
|
||||
#
|
||||
# The UAXes and UTS #51 can be accessed at https://www.unicode.org/versions/Unicode14.0.0/
|
||||
|
||||
This directory contains the final data files
|
||||
for the Unicode Character Database, for Version 14.0.0 of the Unicode Standard.
|
||||
@@ -1,16 +1,16 @@
|
||||
# Scripts-13.0.0.txt
|
||||
# Date: 2020-01-22, 00:07:43 GMT
|
||||
# Copyright (c) 2020 Unicode, Inc.
|
||||
# Scripts-14.0.0.txt
|
||||
# Date: 2021-07-10, 00:35:31 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
# For more information, see:
|
||||
# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/
|
||||
# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/
|
||||
# Especially the sections:
|
||||
# http://www.unicode.org/reports/tr24/#Assignment_Script_Values
|
||||
# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
|
||||
# https://www.unicode.org/reports/tr24/#Assignment_Script_Values
|
||||
# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
|
||||
#
|
||||
|
||||
# ================================================
|
||||
@@ -154,7 +154,7 @@
|
||||
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
|
||||
208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
|
||||
208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
|
||||
20A0..20BF ; Common # Sc [32] EURO-CURRENCY SIGN..BITCOIN SIGN
|
||||
20A0..20C0 ; Common # Sc [33] EURO-CURRENCY SIGN..SOM SIGN
|
||||
2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
|
||||
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
|
||||
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
|
||||
@@ -347,7 +347,16 @@
|
||||
2E42 ; Common # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK
|
||||
2E43..2E4F ; Common # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
|
||||
2E50..2E51 ; Common # So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
|
||||
2E52 ; Common # Po TIRONIAN SIGN CAPITAL ET
|
||||
2E52..2E54 ; Common # Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
|
||||
2E55 ; Common # Ps LEFT SQUARE BRACKET WITH STROKE
|
||||
2E56 ; Common # Pe RIGHT SQUARE BRACKET WITH STROKE
|
||||
2E57 ; Common # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E58 ; Common # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE
|
||||
2E59 ; Common # Ps TOP HALF LEFT PARENTHESIS
|
||||
2E5A ; Common # Pe TOP HALF RIGHT PARENTHESIS
|
||||
2E5B ; Common # Ps BOTTOM HALF LEFT PARENTHESIS
|
||||
2E5C ; Common # Pe BOTTOM HALF RIGHT PARENTHESIS
|
||||
2E5D ; Common # Pd OBLIQUE HYPHEN
|
||||
2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
3000 ; Common # Zs IDEOGRAPHIC SPACE
|
||||
3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
|
||||
@@ -511,9 +520,8 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
10190..1019C ; Common # So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL
|
||||
101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
|
||||
102E1..102FB ; Common # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
|
||||
16FE2 ; Common # Po OLD CHINESE HOOK MARK
|
||||
16FE3 ; Common # Lm OLD CHINESE ITERATION MARK
|
||||
1BCA0..1BCA3 ; Common # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
|
||||
1CF50..1CFC3 ; Common # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
|
||||
1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
|
||||
1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
|
||||
1D129..1D164 ; Common # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
|
||||
@@ -523,7 +531,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
|
||||
1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
|
||||
1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
|
||||
1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
|
||||
1D1AE..1D1EA ; Common # So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON
|
||||
1D2E0..1D2F3 ; Common # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
|
||||
1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
|
||||
1D360..1D378 ; Common # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
|
||||
@@ -593,35 +601,36 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA
|
||||
1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
|
||||
1F400..1F6D7 ; Common # So [728] RAT..ELEVATOR
|
||||
1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
|
||||
1F6DD..1F6EC ; Common # So [16] PLAYGROUND SLIDE..AIRPLANE ARRIVING
|
||||
1F6F0..1F6FC ; Common # So [13] SATELLITE..ROLLER SKATE
|
||||
1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
|
||||
1F780..1F7D8 ; Common # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
|
||||
1F7E0..1F7EB ; Common # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
|
||||
1F7F0 ; Common # So HEAVY EQUALS SIGN
|
||||
1F800..1F80B ; Common # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
|
||||
1F810..1F847 ; Common # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
|
||||
1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
|
||||
1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
|
||||
1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
|
||||
1F8B0..1F8B1 ; Common # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
|
||||
1F900..1F978 ; Common # So [121] CIRCLED CROSS FORMEE WITH FOUR DOTS..DISGUISED FACE
|
||||
1F97A..1F9CB ; Common # So [82] FACE WITH PLEADING EYES..BUBBLE TEA
|
||||
1F9CD..1FA53 ; Common # So [135] STANDING PERSON..BLACK CHESS KNIGHT-BISHOP
|
||||
1F900..1FA53 ; Common # So [340] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS KNIGHT-BISHOP
|
||||
1FA60..1FA6D ; Common # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
|
||||
1FA70..1FA74 ; Common # So [5] BALLET SHOES..THONG SANDAL
|
||||
1FA78..1FA7A ; Common # So [3] DROP OF BLOOD..STETHOSCOPE
|
||||
1FA78..1FA7C ; Common # So [5] DROP OF BLOOD..CRUTCH
|
||||
1FA80..1FA86 ; Common # So [7] YO-YO..NESTING DOLLS
|
||||
1FA90..1FAA8 ; Common # So [25] RINGED PLANET..ROCK
|
||||
1FAB0..1FAB6 ; Common # So [7] FLY..FEATHER
|
||||
1FAC0..1FAC2 ; Common # So [3] ANATOMICAL HEART..PEOPLE HUGGING
|
||||
1FAD0..1FAD6 ; Common # So [7] BLUEBERRIES..TEAPOT
|
||||
1FA90..1FAAC ; Common # So [29] RINGED PLANET..HAMSA
|
||||
1FAB0..1FABA ; Common # So [11] FLY..NEST WITH EGGS
|
||||
1FAC0..1FAC5 ; Common # So [6] ANATOMICAL HEART..PERSON WITH CROWN
|
||||
1FAD0..1FAD9 ; Common # So [10] BLUEBERRIES..JAR
|
||||
1FAE0..1FAE7 ; Common # So [8] MELTING FACE..BUBBLES
|
||||
1FAF0..1FAF6 ; Common # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS
|
||||
1FB00..1FB92 ; Common # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
|
||||
1FB94..1FBCA ; Common # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
|
||||
1FBF0..1FBF9 ; Common # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
|
||||
E0001 ; Common # Cf LANGUAGE TAG
|
||||
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
||||
|
||||
# Total code points: 8087
|
||||
# Total code points: 8252
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -664,8 +673,11 @@ A770 ; Latin # Lm MODIFIER LETTER US
|
||||
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
|
||||
A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
|
||||
A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT
|
||||
A790..A7BF ; Latin # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U
|
||||
A7C2..A7CA ; Latin # L& [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
A790..A7CA ; Latin # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
|
||||
A7D0..A7D1 ; Latin # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
|
||||
A7D3 ; Latin # L& LATIN SMALL LETTER DOUBLE THORN
|
||||
A7D5..A7D9 ; Latin # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
|
||||
A7F2..A7F4 ; Latin # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
|
||||
A7F5..A7F6 ; Latin # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
|
||||
A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
|
||||
A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
|
||||
@@ -679,8 +691,14 @@ AB69 ; Latin # Lm MODIFIER LETTER SMALL TURNED W
|
||||
FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
|
||||
FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
|
||||
FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
|
||||
10780..10785 ; Latin # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
|
||||
10787..107B0 ; Latin # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
|
||||
107B2..107BA ; Latin # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
|
||||
1DF00..1DF09 ; Latin # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
|
||||
1DF0A ; Latin # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
|
||||
1DF0B..1DF1E ; Latin # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
|
||||
|
||||
# Total code points: 1374
|
||||
# Total code points: 1475
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -820,7 +838,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
||||
060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
|
||||
0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
|
||||
061C ; Arabic # Cf ARABIC LETTER MARK
|
||||
061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
061D..061E ; Arabic # Po [2] ARABIC END OF TEXT MARK..ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||
0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
|
||||
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
|
||||
0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW
|
||||
@@ -843,18 +861,25 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
||||
06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
|
||||
06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
|
||||
0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
|
||||
08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
|
||||
08B6..08C7 ; Arabic # Lo [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
|
||||
08D3..08E1 ; Arabic # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
|
||||
0870..0887 ; Arabic # Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
|
||||
0888 ; Arabic # Sk ARABIC RAISED ROUND DOT
|
||||
0889..088E ; Arabic # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
|
||||
0890..0891 ; Arabic # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
|
||||
0898..089F ; Arabic # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
|
||||
08A0..08C8 ; Arabic # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
|
||||
08C9 ; Arabic # Lm ARABIC SMALL FARSI YEH
|
||||
08CA..08E1 ; Arabic # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
|
||||
08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
|
||||
FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
|
||||
FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
|
||||
FBB2..FBC2 ; Arabic # Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE
|
||||
FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
|
||||
FD40..FD4F ; Arabic # So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH
|
||||
FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||
FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||
FDCF ; Arabic # So ARABIC LIGATURE SALAAMUHU ALAYNAA
|
||||
FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
|
||||
FDFC ; Arabic # Sc RIAL SIGN
|
||||
FDFD ; Arabic # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
|
||||
FDFD..FDFF ; Arabic # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL
|
||||
FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
|
||||
FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||
10E60..10E7E ; Arabic # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
|
||||
@@ -893,7 +918,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
|
||||
1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
|
||||
1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
|
||||
|
||||
# Total code points: 1291
|
||||
# Total code points: 1365
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1113,6 +1138,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
|
||||
0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
|
||||
0C2A..0C39 ; Telugu # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA
|
||||
0C3C ; Telugu # Mn TELUGU SIGN NUKTA
|
||||
0C3D ; Telugu # Lo TELUGU SIGN AVAGRAHA
|
||||
0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
|
||||
0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
|
||||
@@ -1120,6 +1146,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
|
||||
0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
|
||||
0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
|
||||
0C5D ; Telugu # Lo TELUGU LETTER NAKAARA POLLU
|
||||
0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
|
||||
0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
|
||||
0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
|
||||
@@ -1127,7 +1154,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
|
||||
0C7F ; Telugu # So TELUGU SIGN TUUMU
|
||||
|
||||
# Total code points: 98
|
||||
# Total code points: 100
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1150,13 +1177,13 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
|
||||
0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
|
||||
0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
|
||||
0CDE ; Kannada # Lo KANNADA LETTER FA
|
||||
0CDD..0CDE ; Kannada # Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
|
||||
0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
|
||||
0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
|
||||
0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
|
||||
0CF1..0CF2 ; Kannada # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
|
||||
|
||||
# Total code points: 89
|
||||
# Total code points: 90
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1411,8 +1438,12 @@ AB09..AB0E ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DD
|
||||
AB11..AB16 ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
|
||||
AB20..AB26 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
|
||||
AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
|
||||
1E7E0..1E7E6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
|
||||
1E7E8..1E7EB ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
|
||||
1E7ED..1E7EE ; Ethiopic # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
|
||||
1E7F0..1E7FE ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
|
||||
|
||||
# Total code points: 495
|
||||
# Total code points: 523
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1430,8 +1461,9 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
166E ; Canadian_Aboriginal # Po CANADIAN SYLLABICS FULL STOP
|
||||
166F..167F ; Canadian_Aboriginal # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
|
||||
18B0..18F5 ; Canadian_Aboriginal # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
|
||||
11AB0..11ABF ; Canadian_Aboriginal # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA
|
||||
|
||||
# Total code points: 710
|
||||
# Total code points: 726
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1480,6 +1512,7 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
|
||||
180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
180E ; Mongolian # Cf MONGOLIAN VOWEL SEPARATOR
|
||||
180F ; Mongolian # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
|
||||
1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
|
||||
1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
|
||||
1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
|
||||
@@ -1491,18 +1524,18 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
18AA ; Mongolian # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA
|
||||
11660..1166C ; Mongolian # Po [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
|
||||
|
||||
# Total code points: 167
|
||||
# Total code points: 168
|
||||
|
||||
# ================================================
|
||||
|
||||
3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
|
||||
309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
|
||||
309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
|
||||
1B001..1B11E ; Hiragana # Lo [286] HIRAGANA LETTER ARCHAIC YE..HENTAIGANA LETTER N-MU-MO-2
|
||||
1B001..1B11F ; Hiragana # Lo [287] HIRAGANA LETTER ARCHAIC YE..HIRAGANA LETTER ARCHAIC WU
|
||||
1B150..1B152 ; Hiragana # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
|
||||
1F200 ; Hiragana # So SQUARE HIRAGANA HOKA
|
||||
|
||||
# Total code points: 379
|
||||
# Total code points: 380
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1514,10 +1547,14 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
|
||||
FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
|
||||
FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
|
||||
1AFF0..1AFF3 ; Katakana # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
|
||||
1AFF5..1AFFB ; Katakana # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
|
||||
1AFFD..1AFFE ; Katakana # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
|
||||
1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E
|
||||
1B120..1B122 ; Katakana # Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU
|
||||
1B164..1B167 ; Katakana # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
|
||||
|
||||
# Total code points: 304
|
||||
# Total code points: 320
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1538,19 +1575,21 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
|
||||
3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
|
||||
303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
|
||||
3400..4DBF ; Han # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
|
||||
4E00..9FFC ; Han # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
|
||||
4E00..9FFF ; Han # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
|
||||
F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
|
||||
FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
|
||||
16FE2 ; Han # Po OLD CHINESE HOOK MARK
|
||||
16FE3 ; Han # Lm OLD CHINESE ITERATION MARK
|
||||
16FF0..16FF1 ; Han # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
|
||||
20000..2A6DD ; Han # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
|
||||
2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
|
||||
20000..2A6DF ; Han # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
|
||||
2A700..2B738 ; Han # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738
|
||||
2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
|
||||
2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
|
||||
2CEB0..2EBE0 ; Han # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
|
||||
2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||
30000..3134A ; Han # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
|
||||
|
||||
# Total code points: 94204
|
||||
# Total code points: 94215
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1593,15 +1632,14 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
|
||||
0951..0954 ; Inherited # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
|
||||
1AB0..1ABD ; Inherited # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
|
||||
1ABE ; Inherited # Me COMBINING PARENTHESES OVERLAY
|
||||
1ABF..1AC0 ; Inherited # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
1ABF..1ACE ; Inherited # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
|
||||
1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
|
||||
1CD4..1CE0 ; Inherited # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
|
||||
1CE2..1CE8 ; Inherited # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
|
||||
1CED ; Inherited # Mn VEDIC SIGN TIRYAK
|
||||
1CF4 ; Inherited # Mn VEDIC TONE CANDRA ABOVE
|
||||
1CF8..1CF9 ; Inherited # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
|
||||
1DC0..1DF9 ; Inherited # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
1DFB..1DFF ; Inherited # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
1DC0..1DFF ; Inherited # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
|
||||
20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
|
||||
20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
|
||||
@@ -1615,26 +1653,30 @@ FE20..FE2D ; Inherited # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CON
|
||||
101FD ; Inherited # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
|
||||
102E0 ; Inherited # Mn COPTIC EPACT THOUSANDS MARK
|
||||
1133B ; Inherited # Mn COMBINING BINDU BELOW
|
||||
1CF00..1CF2D ; Inherited # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
|
||||
1CF30..1CF46 ; Inherited # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
|
||||
1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
|
||||
1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
|
||||
1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
|
||||
1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
|
||||
E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
|
||||
# Total code points: 573
|
||||
# Total code points: 657
|
||||
|
||||
# ================================================
|
||||
|
||||
1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
|
||||
170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
|
||||
1700..1711 ; Tagalog # Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA
|
||||
1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
|
||||
1715 ; Tagalog # Mc TAGALOG SIGN PAMUDPOD
|
||||
171F ; Tagalog # Lo TAGALOG LETTER ARCHAIC RA
|
||||
|
||||
# Total code points: 20
|
||||
# Total code points: 23
|
||||
|
||||
# ================================================
|
||||
|
||||
1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
|
||||
1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
|
||||
1732..1733 ; Hanunoo # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
|
||||
1734 ; Hanunoo # Mc HANUNOO SIGN PAMUDPOD
|
||||
|
||||
# Total code points: 21
|
||||
|
||||
@@ -1762,15 +1804,14 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2
|
||||
|
||||
# ================================================
|
||||
|
||||
2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
|
||||
2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
|
||||
2C00..2C5F ; Glagolitic # L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
|
||||
1E000..1E006 ; Glagolitic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
|
||||
1E008..1E018 ; Glagolitic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
|
||||
1E01B..1E021 ; Glagolitic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
|
||||
1E023..1E024 ; Glagolitic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
|
||||
1E026..1E02A ; Glagolitic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
|
||||
|
||||
# Total code points: 132
|
||||
# Total code points: 134
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -1836,14 +1877,15 @@ A82C ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
|
||||
1B3D..1B41 ; Balinese # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
|
||||
1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET
|
||||
1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
|
||||
1B45..1B4B ; Balinese # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
|
||||
1B45..1B4C ; Balinese # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
|
||||
1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
|
||||
1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG
|
||||
1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
|
||||
1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
|
||||
1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
|
||||
1B7D..1B7E ; Balinese # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
|
||||
|
||||
# Total code points: 121
|
||||
# Total code points: 124
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -2178,9 +2220,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
110BB..110BC ; Kaithi # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
|
||||
110BD ; Kaithi # Cf KAITHI NUMBER SIGN
|
||||
110BE..110C1 ; Kaithi # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
|
||||
110C2 ; Kaithi # Mn KAITHI VOWEL SIGN VOCALIC R
|
||||
110CD ; Kaithi # Cf KAITHI NUMBER SIGN ABOVE
|
||||
|
||||
# Total code points: 67
|
||||
# Total code points: 68
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -2207,9 +2250,13 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
11047..1104D ; Brahmi # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
|
||||
11052..11065 ; Brahmi # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
|
||||
11066..1106F ; Brahmi # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
|
||||
11070 ; Brahmi # Mn BRAHMI SIGN OLD TAMIL VIRAMA
|
||||
11071..11072 ; Brahmi # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
|
||||
11073..11074 ; Brahmi # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
|
||||
11075 ; Brahmi # Lo BRAHMI LETTER OLD TAMIL LLA
|
||||
1107F ; Brahmi # Mn BRAHMI NUMBER JOINER
|
||||
|
||||
# Total code points: 109
|
||||
# Total code points: 115
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -2301,9 +2348,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
116B6 ; Takri # Mc TAKRI SIGN VIRAMA
|
||||
116B7 ; Takri # Mn TAKRI SIGN NUKTA
|
||||
116B8 ; Takri # Lo TAKRI LETTER ARCHAIC KHA
|
||||
116B9 ; Takri # Po TAKRI ABBREVIATION SIGN
|
||||
116C0..116C9 ; Takri # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
|
||||
|
||||
# Total code points: 67
|
||||
# Total code points: 68
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -2561,8 +2609,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
|
||||
1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
|
||||
1173F ; Ahom # So AHOM SYMBOL VI
|
||||
11740..11746 ; Ahom # Lo [7] AHOM LETTER CA..AHOM LETTER LLA
|
||||
|
||||
# Total code points: 58
|
||||
# Total code points: 65
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -2897,4 +2946,46 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
|
||||
# Total code points: 47
|
||||
|
||||
# ================================================
|
||||
|
||||
12F90..12FF0 ; Cypro_Minoan # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
|
||||
12FF1..12FF2 ; Cypro_Minoan # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302
|
||||
|
||||
# Total code points: 99
|
||||
|
||||
# ================================================
|
||||
|
||||
10F70..10F81 ; Old_Uyghur # Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
|
||||
10F82..10F85 ; Old_Uyghur # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
|
||||
10F86..10F89 ; Old_Uyghur # Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
|
||||
|
||||
# Total code points: 26
|
||||
|
||||
# ================================================
|
||||
|
||||
16A70..16ABE ; Tangsa # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
|
||||
16AC0..16AC9 ; Tangsa # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
|
||||
|
||||
# Total code points: 89
|
||||
|
||||
# ================================================
|
||||
|
||||
1E290..1E2AD ; Toto # Lo [30] TOTO LETTER PA..TOTO LETTER A
|
||||
1E2AE ; Toto # Mn TOTO SIGN RISING TONE
|
||||
|
||||
# Total code points: 31
|
||||
|
||||
# ================================================
|
||||
|
||||
10570..1057A ; Vithkuqi # L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
|
||||
1057C..1058A ; Vithkuqi # L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
|
||||
1058C..10592 ; Vithkuqi # L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
|
||||
10594..10595 ; Vithkuqi # L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
|
||||
10597..105A1 ; Vithkuqi # L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
|
||||
105A3..105B1 ; Vithkuqi # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
|
||||
105B3..105B9 ; Vithkuqi # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
|
||||
105BB..105BC ; Vithkuqi # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
|
||||
|
||||
# Total code points: 70
|
||||
|
||||
# EOF
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SpecialCasing-13.0.0.txt
|
||||
# Date: 2019-09-08, 23:31:24 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# SpecialCasing-14.0.0.txt
|
||||
# Date: 2021-03-08, 19:35:55 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
13.0.0
|
||||
@@ -1,6 +1,6 @@
|
||||
# GraphemeBreakProperty-13.0.0.txt
|
||||
# Date: 2019-10-21, 14:30:35 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# GraphemeBreakProperty-14.0.0.txt
|
||||
# Date: 2021-08-12, 23:13:02 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@@ -21,6 +21,7 @@
|
||||
0600..0605 ; Prepend # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
|
||||
06DD ; Prepend # Cf ARABIC END OF AYAH
|
||||
070F ; Prepend # Cf SYRIAC ABBREVIATION MARK
|
||||
0890..0891 ; Prepend # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
|
||||
08E2 ; Prepend # Cf ARABIC DISPUTED END OF AYAH
|
||||
0D4E ; Prepend # Lo MALAYALAM LETTER DOT REPH
|
||||
110BD ; Prepend # Cf KAITHI NUMBER SIGN
|
||||
@@ -32,7 +33,7 @@
|
||||
11A84..11A89 ; Prepend # Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA
|
||||
11D46 ; Prepend # Lo MASARAM GONDI REPHA
|
||||
|
||||
# Total code points: 24
|
||||
# Total code points: 26
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -104,7 +105,8 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
|
||||
0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
|
||||
0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
|
||||
08D3..08E1 ; Extend # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
|
||||
0898..089F ; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
|
||||
08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
|
||||
08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
|
||||
093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE
|
||||
093C ; Extend # Mn DEVANAGARI SIGN NUKTA
|
||||
@@ -151,6 +153,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
|
||||
0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
|
||||
0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
|
||||
0C3C ; Extend # Mn TELUGU SIGN NUKTA
|
||||
0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
|
||||
0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
|
||||
0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
|
||||
@@ -206,7 +209,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI
|
||||
135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
|
||||
1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
|
||||
1732..1734 ; Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
|
||||
1732..1733 ; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
|
||||
1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
|
||||
1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
|
||||
17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
|
||||
@@ -215,6 +218,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
|
||||
17DD ; Extend # Mn KHMER SIGN ATTHACAN
|
||||
180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
180F ; Extend # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
|
||||
1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
|
||||
18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
|
||||
1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
|
||||
@@ -232,7 +236,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
1A7F ; Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
|
||||
1AB0..1ABD ; Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
|
||||
1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY
|
||||
1ABF..1AC0 ; Extend # Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
|
||||
1ABF..1ACE ; Extend # Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
|
||||
1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
|
||||
1B34 ; Extend # Mn BALINESE SIGN REREKAN
|
||||
1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG
|
||||
@@ -256,8 +260,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
1CED ; Extend # Mn VEDIC SIGN TIRYAK
|
||||
1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE
|
||||
1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
|
||||
1DC0..1DF9 ; Extend # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
1DFB..1DFF ; Extend # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
1DC0..1DFF ; Extend # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
200C ; Extend # Cf ZERO WIDTH NON-JOINER
|
||||
20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
|
||||
20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
|
||||
@@ -322,11 +325,15 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
|
||||
10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
|
||||
10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
|
||||
10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
|
||||
11001 ; Extend # Mn BRAHMI SIGN ANUSVARA
|
||||
11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
|
||||
11070 ; Extend # Mn BRAHMI SIGN OLD TAMIL VIRAMA
|
||||
11073..11074 ; Extend # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
|
||||
1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
|
||||
110B3..110B6 ; Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
|
||||
110B9..110BA ; Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
|
||||
110C2 ; Extend # Mn KAITHI VOWEL SIGN VOCALIC R
|
||||
11100..11102 ; Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
|
||||
11127..1112B ; Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
|
||||
1112D..11134 ; Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
|
||||
@@ -412,6 +419,8 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER
|
||||
1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
|
||||
1CF00..1CF2D ; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
|
||||
1CF30..1CF46 ; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
|
||||
1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
|
||||
1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
|
||||
1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
|
||||
@@ -431,6 +440,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
|
||||
1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
|
||||
1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||
1E2AE ; Extend # Mn TOTO SIGN RISING TONE
|
||||
1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||
1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
|
||||
1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
|
||||
@@ -438,7 +448,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
|
||||
E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
|
||||
# Total code points: 1984
|
||||
# Total code points: 2095
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -495,6 +505,8 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
103B..103C ; SpacingMark # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
|
||||
1056..1057 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
|
||||
1084 ; SpacingMark # Mc MYANMAR VOWEL SIGN SHAN E
|
||||
1715 ; SpacingMark # Mc TAGALOG SIGN PAMUDPOD
|
||||
1734 ; SpacingMark # Mc HANUNOO SIGN PAMUDPOD
|
||||
17B6 ; SpacingMark # Mc KHMER VOWEL SIGN AA
|
||||
17BE..17C5 ; SpacingMark # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
|
||||
17C7..17C8 ; SpacingMark # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
|
||||
@@ -579,7 +591,6 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
|
||||
116AC ; SpacingMark # Mc TAKRI SIGN VISARGA
|
||||
116AE..116AF ; SpacingMark # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
|
||||
116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA
|
||||
11720..11721 ; SpacingMark # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
|
||||
11726 ; SpacingMark # Mc AHOM VOWEL SIGN E
|
||||
1182C..1182E ; SpacingMark # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
|
||||
11838 ; SpacingMark # Mc DOGRA SIGN VISARGA
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# GraphemeBreakTest-13.0.0.txt
|
||||
# Date: 2019-11-15, 19:49:10 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# GraphemeBreakTest-14.0.0.txt
|
||||
# Date: 2021-03-08, 06:22:32 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# emoji-data.txt
|
||||
# Date: 2020-01-28, 20:52:38 GMT
|
||||
# Copyright (c) 2020 Unicode, Inc.
|
||||
# emoji-data-14.0.0.txt
|
||||
# Date: 2021-08-26, 17:22:22 GMT
|
||||
# Copyright (c) 2021 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Emoji Data for UTS #51
|
||||
# Version: 13.0
|
||||
# Used with Emoji Version 14.0 and subsequent minor revisions (if any)
|
||||
#
|
||||
# For documentation and usage, see http://www.unicode.org/reports/tr51
|
||||
#
|
||||
@@ -22,7 +22,7 @@
|
||||
# All omitted code points have Emoji=No
|
||||
# @missing: 0000..10FFFF ; Emoji ; No
|
||||
|
||||
0023 ; Emoji # E0.0 [1] (#️) number sign
|
||||
0023 ; Emoji # E0.0 [1] (#️) hash sign
|
||||
002A ; Emoji # E0.0 [1] (*️) asterisk
|
||||
0030..0039 ; Emoji # E0.0 [10] (0️..9️) digit zero..digit nine
|
||||
00A9 ; Emoji # E0.6 [1] (©️) copyright
|
||||
@@ -119,8 +119,8 @@
|
||||
2747 ; Emoji # E0.6 [1] (❇️) sparkle
|
||||
274C ; Emoji # E0.6 [1] (❌) cross mark
|
||||
274E ; Emoji # E0.6 [1] (❎) cross mark button
|
||||
2753..2755 ; Emoji # E0.6 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Emoji # E0.6 [1] (❗) exclamation mark
|
||||
2753..2755 ; Emoji # E0.6 [3] (❓..❕) red question mark..white exclamation mark
|
||||
2757 ; Emoji # E0.6 [1] (❗) red exclamation mark
|
||||
2763 ; Emoji # E1.0 [1] (❣️) heart exclamation
|
||||
2764 ; Emoji # E0.6 [1] (❤️) red heart
|
||||
2795..2797 ; Emoji # E0.6 [3] (➕..➗) plus..divide
|
||||
@@ -239,7 +239,7 @@
|
||||
1F509 ; Emoji # E1.0 [1] (🔉) speaker medium volume
|
||||
1F50A..1F514 ; Emoji # E0.6 [11] (🔊..🔔) speaker high volume..bell
|
||||
1F515 ; Emoji # E1.0 [1] (🔕) bell with slash
|
||||
1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..pistol
|
||||
1F516..1F52B ; Emoji # E0.6 [22] (🔖..🔫) bookmark..water pistol
|
||||
1F52C..1F52D ; Emoji # E1.0 [2] (🔬..🔭) microscope..telescope
|
||||
1F52E..1F53D ; Emoji # E0.6 [16] (🔮..🔽) crystal ball..downwards button
|
||||
1F549..1F54A ; Emoji # E0.7 [2] (🕉️..🕊️) om..dove
|
||||
@@ -294,7 +294,7 @@
|
||||
1F62E..1F62F ; Emoji # E1.0 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Emoji # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Emoji # E1.0 [1] (😴) sleeping face
|
||||
1F635 ; Emoji # E0.6 [1] (😵) dizzy face
|
||||
1F635 ; Emoji # E0.6 [1] (😵) face with crossed-out eyes
|
||||
1F636 ; Emoji # E1.0 [1] (😶) face without mouth
|
||||
1F637..1F640 ; Emoji # E0.6 [10] (😷..🙀) face with medical mask..weary cat
|
||||
1F641..1F644 ; Emoji # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
|
||||
@@ -341,6 +341,7 @@
|
||||
1F6D1..1F6D2 ; Emoji # E3.0 [2] (🛑..🛒) stop sign..shopping cart
|
||||
1F6D5 ; Emoji # E12.0 [1] (🛕) hindu temple
|
||||
1F6D6..1F6D7 ; Emoji # E13.0 [2] (🛖..🛗) hut..elevator
|
||||
1F6DD..1F6DF ; Emoji # E14.0 [3] (🛝..🛟) playground slide..ring buoy
|
||||
1F6E0..1F6E5 ; Emoji # E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
|
||||
1F6E9 ; Emoji # E0.7 [1] (🛩️) small airplane
|
||||
1F6EB..1F6EC ; Emoji # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
|
||||
@@ -352,6 +353,7 @@
|
||||
1F6FA ; Emoji # E12.0 [1] (🛺) auto rickshaw
|
||||
1F6FB..1F6FC ; Emoji # E13.0 [2] (🛻..🛼) pickup truck..roller skate
|
||||
1F7E0..1F7EB ; Emoji # E12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F7F0 ; Emoji # E14.0 [1] (🟰) heavy equals sign
|
||||
1F90C ; Emoji # E13.0 [1] (🤌) pinched fingers
|
||||
1F90D..1F90F ; Emoji # E12.0 [3] (🤍..🤏) white heart..pinching hand
|
||||
1F910..1F918 ; Emoji # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
|
||||
@@ -375,6 +377,7 @@
|
||||
1F972 ; Emoji # E13.0 [1] (🥲) smiling face with tear
|
||||
1F973..1F976 ; Emoji # E11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F977..1F978 ; Emoji # E13.0 [2] (🥷..🥸) ninja..disguised face
|
||||
1F979 ; Emoji # E14.0 [1] (🥹) face holding back tears
|
||||
1F97A ; Emoji # E11.0 [1] (🥺) pleading face
|
||||
1F97B ; Emoji # E12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Emoji # E11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
@@ -392,21 +395,29 @@
|
||||
1F9C1..1F9C2 ; Emoji # E11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Emoji # E12.0 [8] (🧃..🧊) beverage box..ice
|
||||
1F9CB ; Emoji # E13.0 [1] (🧋) bubble tea
|
||||
1F9CC ; Emoji # E14.0 [1] (🧌) troll
|
||||
1F9CD..1F9CF ; Emoji # E12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Emoji # E5.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Emoji # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
1FA70..1FA73 ; Emoji # E12.0 [4] (🩰..🩳) ballet shoes..shorts
|
||||
1FA74 ; Emoji # E13.0 [1] (🩴) thong sandal
|
||||
1FA78..1FA7A ; Emoji # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA7B..1FA7C ; Emoji # E14.0 [2] (🩻..🩼) x-ray..crutch
|
||||
1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
|
||||
1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
|
||||
1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa
|
||||
1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
|
||||
1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs
|
||||
1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
|
||||
1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown
|
||||
1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
|
||||
1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar
|
||||
1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles
|
||||
1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
|
||||
|
||||
# Total elements: 1367
|
||||
# Total elements: 1404
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -438,8 +449,8 @@
|
||||
2728 ; Emoji_Presentation # E0.6 [1] (✨) sparkles
|
||||
274C ; Emoji_Presentation # E0.6 [1] (❌) cross mark
|
||||
274E ; Emoji_Presentation # E0.6 [1] (❎) cross mark button
|
||||
2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Emoji_Presentation # E0.6 [1] (❗) exclamation mark
|
||||
2753..2755 ; Emoji_Presentation # E0.6 [3] (❓..❕) red question mark..white exclamation mark
|
||||
2757 ; Emoji_Presentation # E0.6 [1] (❗) red exclamation mark
|
||||
2795..2797 ; Emoji_Presentation # E0.6 [3] (➕..➗) plus..divide
|
||||
27B0 ; Emoji_Presentation # E0.6 [1] (➰) curly loop
|
||||
27BF ; Emoji_Presentation # E1.0 [1] (➿) double curly loop
|
||||
@@ -533,7 +544,7 @@
|
||||
1F509 ; Emoji_Presentation # E1.0 [1] (🔉) speaker medium volume
|
||||
1F50A..1F514 ; Emoji_Presentation # E0.6 [11] (🔊..🔔) speaker high volume..bell
|
||||
1F515 ; Emoji_Presentation # E1.0 [1] (🔕) bell with slash
|
||||
1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..pistol
|
||||
1F516..1F52B ; Emoji_Presentation # E0.6 [22] (🔖..🔫) bookmark..water pistol
|
||||
1F52C..1F52D ; Emoji_Presentation # E1.0 [2] (🔬..🔭) microscope..telescope
|
||||
1F52E..1F53D ; Emoji_Presentation # E0.6 [16] (🔮..🔽) crystal ball..downwards button
|
||||
1F54B..1F54E ; Emoji_Presentation # E1.0 [4] (🕋..🕎) kaaba..menorah
|
||||
@@ -569,7 +580,7 @@
|
||||
1F62E..1F62F ; Emoji_Presentation # E1.0 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Emoji_Presentation # E0.6 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Emoji_Presentation # E1.0 [1] (😴) sleeping face
|
||||
1F635 ; Emoji_Presentation # E0.6 [1] (😵) dizzy face
|
||||
1F635 ; Emoji_Presentation # E0.6 [1] (😵) face with crossed-out eyes
|
||||
1F636 ; Emoji_Presentation # E1.0 [1] (😶) face without mouth
|
||||
1F637..1F640 ; Emoji_Presentation # E0.6 [10] (😷..🙀) face with medical mask..weary cat
|
||||
1F641..1F644 ; Emoji_Presentation # E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
|
||||
@@ -614,6 +625,7 @@
|
||||
1F6D1..1F6D2 ; Emoji_Presentation # E3.0 [2] (🛑..🛒) stop sign..shopping cart
|
||||
1F6D5 ; Emoji_Presentation # E12.0 [1] (🛕) hindu temple
|
||||
1F6D6..1F6D7 ; Emoji_Presentation # E13.0 [2] (🛖..🛗) hut..elevator
|
||||
1F6DD..1F6DF ; Emoji_Presentation # E14.0 [3] (🛝..🛟) playground slide..ring buoy
|
||||
1F6EB..1F6EC ; Emoji_Presentation # E1.0 [2] (🛫..🛬) airplane departure..airplane arrival
|
||||
1F6F4..1F6F6 ; Emoji_Presentation # E3.0 [3] (🛴..🛶) kick scooter..canoe
|
||||
1F6F7..1F6F8 ; Emoji_Presentation # E5.0 [2] (🛷..🛸) sled..flying saucer
|
||||
@@ -621,6 +633,7 @@
|
||||
1F6FA ; Emoji_Presentation # E12.0 [1] (🛺) auto rickshaw
|
||||
1F6FB..1F6FC ; Emoji_Presentation # E13.0 [2] (🛻..🛼) pickup truck..roller skate
|
||||
1F7E0..1F7EB ; Emoji_Presentation # E12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F7F0 ; Emoji_Presentation # E14.0 [1] (🟰) heavy equals sign
|
||||
1F90C ; Emoji_Presentation # E13.0 [1] (🤌) pinched fingers
|
||||
1F90D..1F90F ; Emoji_Presentation # E12.0 [3] (🤍..🤏) white heart..pinching hand
|
||||
1F910..1F918 ; Emoji_Presentation # E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
|
||||
@@ -644,6 +657,7 @@
|
||||
1F972 ; Emoji_Presentation # E13.0 [1] (🥲) smiling face with tear
|
||||
1F973..1F976 ; Emoji_Presentation # E11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F977..1F978 ; Emoji_Presentation # E13.0 [2] (🥷..🥸) ninja..disguised face
|
||||
1F979 ; Emoji_Presentation # E14.0 [1] (🥹) face holding back tears
|
||||
1F97A ; Emoji_Presentation # E11.0 [1] (🥺) pleading face
|
||||
1F97B ; Emoji_Presentation # E12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Emoji_Presentation # E11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
@@ -661,21 +675,29 @@
|
||||
1F9C1..1F9C2 ; Emoji_Presentation # E11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Emoji_Presentation # E12.0 [8] (🧃..🧊) beverage box..ice
|
||||
1F9CB ; Emoji_Presentation # E13.0 [1] (🧋) bubble tea
|
||||
1F9CC ; Emoji_Presentation # E14.0 [1] (🧌) troll
|
||||
1F9CD..1F9CF ; Emoji_Presentation # E12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Emoji_Presentation # E5.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Emoji_Presentation # E11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
1FA70..1FA73 ; Emoji_Presentation # E12.0 [4] (🩰..🩳) ballet shoes..shorts
|
||||
1FA74 ; Emoji_Presentation # E13.0 [1] (🩴) thong sandal
|
||||
1FA78..1FA7A ; Emoji_Presentation # E12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA7B..1FA7C ; Emoji_Presentation # E14.0 [2] (🩻..🩼) x-ray..crutch
|
||||
1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
|
||||
1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
|
||||
1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa
|
||||
1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
|
||||
1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs
|
||||
1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
|
||||
1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown
|
||||
1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
|
||||
1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar
|
||||
1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles
|
||||
1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
|
||||
|
||||
# Total elements: 1148
|
||||
# Total elements: 1185
|
||||
|
||||
# ================================================
|
||||
|
||||
@@ -738,15 +760,17 @@
|
||||
1F9BB ; Emoji_Modifier_Base # E12.0 [1] (🦻) ear with hearing aid
|
||||
1F9CD..1F9CF ; Emoji_Modifier_Base # E12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D1..1F9DD ; Emoji_Modifier_Base # E5.0 [13] (🧑..🧝) person..elf
|
||||
1FAC3..1FAC5 ; Emoji_Modifier_Base # E14.0 [3] (🫃..🫅) pregnant man..person with crown
|
||||
1FAF0..1FAF6 ; Emoji_Modifier_Base # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
|
||||
|
||||
# Total elements: 122
|
||||
# Total elements: 132
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji_Component=No
|
||||
# @missing: 0000..10FFFF ; Emoji_Component ; No
|
||||
|
||||
0023 ; Emoji_Component # E0.0 [1] (#️) number sign
|
||||
0023 ; Emoji_Component # E0.0 [1] (#️) hash sign
|
||||
002A ; Emoji_Component # E0.0 [1] (*️) asterisk
|
||||
0030..0039 ; Emoji_Component # E0.0 [10] (0️..9️) digit zero..digit nine
|
||||
200D ; Emoji_Component # E0.0 [1] () zero width joiner
|
||||
@@ -902,8 +926,8 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
2747 ; Extended_Pictographic# E0.6 [1] (❇️) sparkle
|
||||
274C ; Extended_Pictographic# E0.6 [1] (❌) cross mark
|
||||
274E ; Extended_Pictographic# E0.6 [1] (❎) cross mark button
|
||||
2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Extended_Pictographic# E0.6 [1] (❗) exclamation mark
|
||||
2753..2755 ; Extended_Pictographic# E0.6 [3] (❓..❕) red question mark..white exclamation mark
|
||||
2757 ; Extended_Pictographic# E0.6 [1] (❗) red exclamation mark
|
||||
2763 ; Extended_Pictographic# E1.0 [1] (❣️) heart exclamation
|
||||
2764 ; Extended_Pictographic# E0.6 [1] (❤️) red heart
|
||||
2765..2767 ; Extended_Pictographic# E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
|
||||
@@ -1041,7 +1065,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F509 ; Extended_Pictographic# E1.0 [1] (🔉) speaker medium volume
|
||||
1F50A..1F514 ; Extended_Pictographic# E0.6 [11] (🔊..🔔) speaker high volume..bell
|
||||
1F515 ; Extended_Pictographic# E1.0 [1] (🔕) bell with slash
|
||||
1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..pistol
|
||||
1F516..1F52B ; Extended_Pictographic# E0.6 [22] (🔖..🔫) bookmark..water pistol
|
||||
1F52C..1F52D ; Extended_Pictographic# E1.0 [2] (🔬..🔭) microscope..telescope
|
||||
1F52E..1F53D ; Extended_Pictographic# E0.6 [16] (🔮..🔽) crystal ball..downwards button
|
||||
1F546..1F548 ; Extended_Pictographic# E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS
|
||||
@@ -1117,7 +1141,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F62E..1F62F ; Extended_Pictographic# E1.0 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Extended_Pictographic# E0.6 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Extended_Pictographic# E1.0 [1] (😴) sleeping face
|
||||
1F635 ; Extended_Pictographic# E0.6 [1] (😵) dizzy face
|
||||
1F635 ; Extended_Pictographic# E0.6 [1] (😵) face with crossed-out eyes
|
||||
1F636 ; Extended_Pictographic# E1.0 [1] (😶) face without mouth
|
||||
1F637..1F640 ; Extended_Pictographic# E0.6 [10] (😷..🙀) face with medical mask..weary cat
|
||||
1F641..1F644 ; Extended_Pictographic# E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes
|
||||
@@ -1166,7 +1190,8 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F6D3..1F6D4 ; Extended_Pictographic# E0.0 [2] (🛓..🛔) STUPA..PAGODA
|
||||
1F6D5 ; Extended_Pictographic# E12.0 [1] (🛕) hindu temple
|
||||
1F6D6..1F6D7 ; Extended_Pictographic# E13.0 [2] (🛖..🛗) hut..elevator
|
||||
1F6D8..1F6DF ; Extended_Pictographic# E0.0 [8] (..🛟) <reserved-1F6D8>..<reserved-1F6DF>
|
||||
1F6D8..1F6DC ; Extended_Pictographic# E0.0 [5] (..🛜) <reserved-1F6D8>..<reserved-1F6DC>
|
||||
1F6DD..1F6DF ; Extended_Pictographic# E14.0 [3] (🛝..🛟) playground slide..ring buoy
|
||||
1F6E0..1F6E5 ; Extended_Pictographic# E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat
|
||||
1F6E6..1F6E8 ; Extended_Pictographic# E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE
|
||||
1F6E9 ; Extended_Pictographic# E0.7 [1] (🛩️) small airplane
|
||||
@@ -1185,7 +1210,9 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F774..1F77F ; Extended_Pictographic# E0.0 [12] (🝴..🝿) <reserved-1F774>..<reserved-1F77F>
|
||||
1F7D5..1F7DF ; Extended_Pictographic# E0.0 [11] (🟕..) CIRCLED TRIANGLE..<reserved-1F7DF>
|
||||
1F7E0..1F7EB ; Extended_Pictographic# E12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F7EC..1F7FF ; Extended_Pictographic# E0.0 [20] (..) <reserved-1F7EC>..<reserved-1F7FF>
|
||||
1F7EC..1F7EF ; Extended_Pictographic# E0.0 [4] (..) <reserved-1F7EC>..<reserved-1F7EF>
|
||||
1F7F0 ; Extended_Pictographic# E14.0 [1] (🟰) heavy equals sign
|
||||
1F7F1..1F7FF ; Extended_Pictographic# E0.0 [15] (..) <reserved-1F7F1>..<reserved-1F7FF>
|
||||
1F80C..1F80F ; Extended_Pictographic# E0.0 [4] (..) <reserved-1F80C>..<reserved-1F80F>
|
||||
1F848..1F84F ; Extended_Pictographic# E0.0 [8] (..) <reserved-1F848>..<reserved-1F84F>
|
||||
1F85A..1F85F ; Extended_Pictographic# E0.0 [6] (..) <reserved-1F85A>..<reserved-1F85F>
|
||||
@@ -1214,7 +1241,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F972 ; Extended_Pictographic# E13.0 [1] (🥲) smiling face with tear
|
||||
1F973..1F976 ; Extended_Pictographic# E11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F977..1F978 ; Extended_Pictographic# E13.0 [2] (🥷..🥸) ninja..disguised face
|
||||
1F979 ; Extended_Pictographic# E0.0 [1] (🥹) <reserved-1F979>
|
||||
1F979 ; Extended_Pictographic# E14.0 [1] (🥹) face holding back tears
|
||||
1F97A ; Extended_Pictographic# E11.0 [1] (🥺) pleading face
|
||||
1F97B ; Extended_Pictographic# E12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Extended_Pictographic# E11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
@@ -1232,7 +1259,7 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1F9C1..1F9C2 ; Extended_Pictographic# E11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Extended_Pictographic# E12.0 [8] (🧃..🧊) beverage box..ice
|
||||
1F9CB ; Extended_Pictographic# E13.0 [1] (🧋) bubble tea
|
||||
1F9CC ; Extended_Pictographic# E0.0 [1] (🧌) <reserved-1F9CC>
|
||||
1F9CC ; Extended_Pictographic# E14.0 [1] (🧌) troll
|
||||
1F9CD..1F9CF ; Extended_Pictographic# E12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Extended_Pictographic# E5.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Extended_Pictographic# E11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
@@ -1241,19 +1268,28 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (..) tag space..c
|
||||
1FA74 ; Extended_Pictographic# E13.0 [1] (🩴) thong sandal
|
||||
1FA75..1FA77 ; Extended_Pictographic# E0.0 [3] (🩵..🩷) <reserved-1FA75>..<reserved-1FA77>
|
||||
1FA78..1FA7A ; Extended_Pictographic# E12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA7B..1FA7F ; Extended_Pictographic# E0.0 [5] (🩻..) <reserved-1FA7B>..<reserved-1FA7F>
|
||||
1FA7B..1FA7C ; Extended_Pictographic# E14.0 [2] (🩻..🩼) x-ray..crutch
|
||||
1FA7D..1FA7F ; Extended_Pictographic# E0.0 [3] (..) <reserved-1FA7D>..<reserved-1FA7F>
|
||||
1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
|
||||
1FA87..1FA8F ; Extended_Pictographic# E0.0 [9] (🪇..) <reserved-1FA87>..<reserved-1FA8F>
|
||||
1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
|
||||
1FAA9..1FAAF ; Extended_Pictographic# E0.0 [7] (🪩..🪯) <reserved-1FAA9>..<reserved-1FAAF>
|
||||
1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa
|
||||
1FAAD..1FAAF ; Extended_Pictographic# E0.0 [3] (🪭..🪯) <reserved-1FAAD>..<reserved-1FAAF>
|
||||
1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
|
||||
1FAB7..1FABF ; Extended_Pictographic# E0.0 [9] (🪷..🪿) <reserved-1FAB7>..<reserved-1FABF>
|
||||
1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs
|
||||
1FABB..1FABF ; Extended_Pictographic# E0.0 [5] (🪻..🪿) <reserved-1FABB>..<reserved-1FABF>
|
||||
1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
|
||||
1FAC3..1FACF ; Extended_Pictographic# E0.0 [13] (🫃..🫏) <reserved-1FAC3>..<reserved-1FACF>
|
||||
1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown
|
||||
1FAC6..1FACF ; Extended_Pictographic# E0.0 [10] (..🫏) <reserved-1FAC6>..<reserved-1FACF>
|
||||
1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
|
||||
1FAD7..1FAFF ; Extended_Pictographic# E0.0 [41] (🫗..) <reserved-1FAD7>..<reserved-1FAFF>
|
||||
1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar
|
||||
1FADA..1FADF ; Extended_Pictographic# E0.0 [6] (🫚..) <reserved-1FADA>..<reserved-1FADF>
|
||||
1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles
|
||||
1FAE8..1FAEF ; Extended_Pictographic# E0.0 [8] (🫨..) <reserved-1FAE8>..<reserved-1FAEF>
|
||||
1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
|
||||
1FAF7..1FAFF ; Extended_Pictographic# E0.0 [9] (🫷..) <reserved-1FAF7>..<reserved-1FAFF>
|
||||
1FC00..1FFFD ; Extended_Pictographic# E0.0[1022] (..) <reserved-1FC00>..<reserved-1FFFD>
|
||||
|
||||
# Total elements: 3537
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# Create a bundle in the build directory, containing what's needed to
|
||||
# build and run JMH microbenchmarks from the OpenJDK build.
|
||||
|
||||
JMH_VERSION=1.33
|
||||
JMH_VERSION=1.34
|
||||
COMMONS_MATH3_VERSION=3.2
|
||||
JOPT_SIMPLE_VERSION=4.6
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2022, 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
|
||||
@@ -49,7 +49,7 @@ $(eval $(call SetupJdkLibrary, BUILD_GTEST_LIBGTEST, \
|
||||
$(GTEST_FRAMEWORK_SRC)/googletest/src \
|
||||
$(GTEST_FRAMEWORK_SRC)/googlemock/src, \
|
||||
INCLUDE_FILES := gtest-all.cc gmock-all.cc, \
|
||||
DISABLED_WARNINGS_gcc := undef unused-result format-nonliteral, \
|
||||
DISABLED_WARNINGS_gcc := undef unused-result format-nonliteral maybe-uninitialized, \
|
||||
DISABLED_WARNINGS_clang := undef unused-result format-nonliteral, \
|
||||
CFLAGS := $(JVM_CFLAGS) \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googletest \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 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
|
||||
@@ -61,6 +61,11 @@ else
|
||||
OPENJDK_TARGET_CPU_VM_VERSION := $(OPENJDK_TARGET_CPU)
|
||||
endif
|
||||
|
||||
ifeq ($(VERSION_BUILD), )
|
||||
# Hotspot cannot handle an empty build number
|
||||
VERSION_BUILD := 0
|
||||
endif
|
||||
|
||||
CFLAGS_VM_VERSION := \
|
||||
$(VERSION_CFLAGS) \
|
||||
-DHOTSPOT_VERSION_STRING='"$(VERSION_STRING)"' \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 2022, 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
|
||||
@@ -130,13 +130,6 @@ ifneq ($(call check-jvm-feature, cds), true)
|
||||
JVM_EXCLUDE_PATTERNS += cds/
|
||||
endif
|
||||
|
||||
ifneq ($(call check-jvm-feature, nmt), true)
|
||||
JVM_CFLAGS_FEATURES += -DINCLUDE_NMT=0
|
||||
JVM_EXCLUDE_FILES += \
|
||||
memBaseline.cpp memReporter.cpp mallocTracker.cpp virtualMemoryTracker.cpp nmtCommon.cpp \
|
||||
memTracker.cpp nmtDCmd.cpp mallocSiteTable.cpp threadStackTracker.cpp
|
||||
endif
|
||||
|
||||
ifneq ($(call check-jvm-feature, g1gc), true)
|
||||
JVM_CFLAGS_FEATURES += -DINCLUDE_G1GC=0
|
||||
JVM_EXCLUDE_PATTERNS += gc/g1
|
||||
|
||||
@@ -29,6 +29,13 @@ default: all
|
||||
include $(SPEC)
|
||||
include MakeBase.gmk
|
||||
|
||||
################################################################################
|
||||
# SedEscape
|
||||
#
|
||||
# Escape special characters for use in SED replacement string
|
||||
################################################################################
|
||||
SedEscape = $(subst !,\!,$(subst \,\\,$1))
|
||||
|
||||
################################################################################
|
||||
# Return the full path to an indexer-specific file fragment.
|
||||
#
|
||||
@@ -78,15 +85,15 @@ define CreateFromTemplate
|
||||
$(SED) -e '/{{INDEXER_EXTENSIONS}}/r $(call GetIndexerFragment,extensions)' \
|
||||
-e '/{{INDEXER_SETTINGS}}/r $(call GetIndexerFragment,settings)' \
|
||||
-e '/{{EXTRA_WORKSPACE_ROOT}}/r $(call GetExtraWorkspaceRoot)' $1 | \
|
||||
$(SED) -e 's!{{TOPDIR}}!$(call FixPath,$(TOPDIR))!g' \
|
||||
-e 's!{{TOPDIR_RELATIVE}}!$(call FixPath,$(strip \
|
||||
$(call RelativePath,$(OUTPUTDIR),$(TOPDIR))))!g' \
|
||||
-e 's!{{WORKSPACE_ROOT}}!$(call FixPath,$(WORKSPACE_ROOT))!g' \
|
||||
-e 's!{{OUTPUTDIR}}!$(call FixPath,$(OUTPUTDIR))!g' \
|
||||
$(SED) -e 's!{{TOPDIR}}!$(call SedEscape,$(call FixPath,$(TOPDIR)))!g' \
|
||||
-e 's!{{TOPDIR_RELATIVE}}!$(call SedEscape,$(call FixPath,$(strip \
|
||||
$(call RelativePath,$(OUTPUTDIR),$(TOPDIR)))))!g' \
|
||||
-e 's!{{WORKSPACE_ROOT}}!$(call SedEscape,$(call FixPath,$(WORKSPACE_ROOT)))!g' \
|
||||
-e 's!{{OUTPUTDIR}}!$(call SedEscape,$(call FixPath,$(OUTPUTDIR)))!g' \
|
||||
-e 's!{{CONF_NAME}}!$(CONF_NAME)!g' \
|
||||
-e 's!{{COMPILER}}!$(call FixPath,$(CXX)) $(SYSROOT_CFLAGS)!g' \
|
||||
-e 's!{{MAKE}}!$(call FixPath,$(MAKE))!g' \
|
||||
-e 's!{{PATH}}!$(call FixPath,$(PATH))!g' \
|
||||
-e 's!{{COMPILER}}!$(call SedEscape,$(call FixPath,$(CXX))) $(SYSROOT_CFLAGS)!g' \
|
||||
-e 's!{{MAKE}}!$(call SedEscape,$(call FixPath,$(MAKE)))!g' \
|
||||
-e 's!{{PATH}}!$(call SedEscape,$(call FixPath,$(PATH)))!g' \
|
||||
-e 's!{{DEBUGENGINENAME}}!$(call DebugEngineName)!g' \
|
||||
-e '/{{INDEXER_EXTENSIONS}}/d' \
|
||||
-e '/{{INDEXER_SETTINGS}}/d' \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -25,6 +25,9 @@
|
||||
|
||||
package build.tools.cldrconverter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
@@ -34,6 +37,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
class Bundle {
|
||||
@@ -47,21 +51,21 @@ class Bundle {
|
||||
FORMATDATA);
|
||||
}
|
||||
|
||||
private final static Map<String, Bundle> bundles = new HashMap<>();
|
||||
private static final Map<String, Bundle> bundles = new HashMap<>();
|
||||
|
||||
private final static String[] NUMBER_PATTERN_KEYS = {
|
||||
private static final String[] NUMBER_PATTERN_KEYS = {
|
||||
"NumberPatterns/decimal",
|
||||
"NumberPatterns/currency",
|
||||
"NumberPatterns/percent",
|
||||
"NumberPatterns/accounting"
|
||||
};
|
||||
|
||||
private final static String[] COMPACT_NUMBER_PATTERN_KEYS = {
|
||||
"short.CompactNumberPatterns",
|
||||
"long.CompactNumberPatterns"
|
||||
private static final String[] COMPACT_NUMBER_PATTERN_KEYS = {
|
||||
"short.CompactNumberPatterns",
|
||||
"long.CompactNumberPatterns"
|
||||
};
|
||||
|
||||
private final static String[] NUMBER_ELEMENT_KEYS = {
|
||||
private static final String[] NUMBER_ELEMENT_KEYS = {
|
||||
"NumberElements/decimal",
|
||||
"NumberElements/group",
|
||||
"NumberElements/list",
|
||||
@@ -77,41 +81,45 @@ class Bundle {
|
||||
"NumberElements/currencyGroup",
|
||||
};
|
||||
|
||||
private final static String[] TIME_PATTERN_KEYS = {
|
||||
private static final String[] TIME_PATTERN_KEYS = {
|
||||
"DateTimePatterns/full-time",
|
||||
"DateTimePatterns/long-time",
|
||||
"DateTimePatterns/medium-time",
|
||||
"DateTimePatterns/short-time",
|
||||
};
|
||||
|
||||
private final static String[] DATE_PATTERN_KEYS = {
|
||||
private static final String[] DATE_PATTERN_KEYS = {
|
||||
"DateTimePatterns/full-date",
|
||||
"DateTimePatterns/long-date",
|
||||
"DateTimePatterns/medium-date",
|
||||
"DateTimePatterns/short-date",
|
||||
};
|
||||
|
||||
private final static String[] DATETIME_PATTERN_KEYS = {
|
||||
private static final String[] DATETIME_PATTERN_KEYS = {
|
||||
"DateTimePatterns/full-dateTime",
|
||||
"DateTimePatterns/long-dateTime",
|
||||
"DateTimePatterns/medium-dateTime",
|
||||
"DateTimePatterns/short-dateTime",
|
||||
};
|
||||
|
||||
private final static String[] ERA_KEYS = {
|
||||
private static final String[] ERA_KEYS = {
|
||||
"long.Eras",
|
||||
"Eras",
|
||||
"narrow.Eras"
|
||||
};
|
||||
|
||||
// DateFormatItem prefix
|
||||
static final String DATEFORMATITEM_KEY_PREFIX = "DateFormatItem.";
|
||||
static final String DATEFORMATITEM_INPUT_REGIONS_PREFIX = "DateFormatItemInputRegions.";
|
||||
|
||||
// Keys for individual time zone names
|
||||
private final static String TZ_GEN_LONG_KEY = "timezone.displayname.generic.long";
|
||||
private final static String TZ_GEN_SHORT_KEY = "timezone.displayname.generic.short";
|
||||
private final static String TZ_STD_LONG_KEY = "timezone.displayname.standard.long";
|
||||
private final static String TZ_STD_SHORT_KEY = "timezone.displayname.standard.short";
|
||||
private final static String TZ_DST_LONG_KEY = "timezone.displayname.daylight.long";
|
||||
private final static String TZ_DST_SHORT_KEY = "timezone.displayname.daylight.short";
|
||||
private final static String[] ZONE_NAME_KEYS = {
|
||||
private static final String TZ_GEN_LONG_KEY = "timezone.displayname.generic.long";
|
||||
private static final String TZ_GEN_SHORT_KEY = "timezone.displayname.generic.short";
|
||||
private static final String TZ_STD_LONG_KEY = "timezone.displayname.standard.long";
|
||||
private static final String TZ_STD_SHORT_KEY = "timezone.displayname.standard.short";
|
||||
private static final String TZ_DST_LONG_KEY = "timezone.displayname.daylight.long";
|
||||
private static final String TZ_DST_SHORT_KEY = "timezone.displayname.daylight.short";
|
||||
private static final String[] ZONE_NAME_KEYS = {
|
||||
TZ_STD_LONG_KEY,
|
||||
TZ_STD_SHORT_KEY,
|
||||
TZ_DST_LONG_KEY,
|
||||
@@ -262,7 +270,7 @@ class Bundle {
|
||||
CLDRConverter.handleAliases(myMap);
|
||||
|
||||
// another hack: parentsMap is not used for date-time resources.
|
||||
if ("root".equals(id)) {
|
||||
if (isRoot()) {
|
||||
parentsMap = null;
|
||||
}
|
||||
|
||||
@@ -287,6 +295,14 @@ class Bundle {
|
||||
handleDateTimeFormatPatterns(TIME_PATTERN_KEYS, myMap, parentsMap, calendarType, "TimePatterns");
|
||||
handleDateTimeFormatPatterns(DATE_PATTERN_KEYS, myMap, parentsMap, calendarType, "DatePatterns");
|
||||
handleDateTimeFormatPatterns(DATETIME_PATTERN_KEYS, myMap, parentsMap, calendarType, "DateTimePatterns");
|
||||
|
||||
// Skeleton
|
||||
handleSkeletonPatterns(myMap, calendarType);
|
||||
}
|
||||
|
||||
// Skeleton input regions
|
||||
if (isRoot()) {
|
||||
skeletonInputRegions(myMap);
|
||||
}
|
||||
|
||||
// First, weed out any empty timezone or metazone names from myMap.
|
||||
@@ -647,8 +663,9 @@ class Bundle {
|
||||
private void convertDateTimePatternLetter(CalendarType calendarType, char cldrLetter, int count, StringBuilder sb) {
|
||||
switch (cldrLetter) {
|
||||
case 'u':
|
||||
// Change cldr letter 'u' to 'y', as 'u' is interpreted as
|
||||
// "Extended year (numeric)" in CLDR/LDML,
|
||||
case 'U':
|
||||
// Change cldr letter 'u'/'U' to 'y', as 'u' is interpreted as
|
||||
// "Extended year (numeric)", and 'U' as "Cyclic year" in CLDR/LDML,
|
||||
// which is not supported in SimpleDateFormat and
|
||||
// j.t.f.DateTimeFormatter, so it is replaced with 'y'
|
||||
// as the best approximation
|
||||
@@ -742,6 +759,19 @@ class Bundle {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void handleSkeletonPatterns(Map<String, Object> myMap, CalendarType calendarType) {
|
||||
String calendarPrefix = calendarType.keyElementName();
|
||||
myMap.putAll(myMap.entrySet().stream()
|
||||
.filter(e -> e.getKey().startsWith(Bundle.DATEFORMATITEM_KEY_PREFIX))
|
||||
.collect(Collectors.toMap(
|
||||
e -> calendarPrefix + e.getKey(),
|
||||
e -> translateDateFormatLetters(calendarType,
|
||||
(String)e.getValue(),
|
||||
this::convertDateTimePatternLetter)
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
@FunctionalInterface
|
||||
private interface ConvertDateTimeLetters {
|
||||
void convert(CalendarType calendarType, char cldrLetter, int count, StringBuilder sb);
|
||||
@@ -790,4 +820,14 @@ class Bundle {
|
||||
}
|
||||
return numArray;
|
||||
}
|
||||
|
||||
private static void skeletonInputRegions(Map<String, Object> myMap) {
|
||||
myMap.putAll(myMap.entrySet().stream()
|
||||
.filter(e -> e.getKey().startsWith(Bundle.DATEFORMATITEM_INPUT_REGIONS_PREFIX))
|
||||
.collect(Collectors.toMap(
|
||||
e -> e.getKey(),
|
||||
e -> ((String)e.getValue()).trim()
|
||||
))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2022, 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
|
||||
@@ -847,20 +847,19 @@ public class CLDRConverter {
|
||||
"DateTimePatternChars",
|
||||
"PluralRules",
|
||||
"DayPeriodRules",
|
||||
"DateFormatItem",
|
||||
};
|
||||
|
||||
private static Map<String, Object> extractFormatData(Map<String, Object> map, String id) {
|
||||
Map<String, Object> formatData = new LinkedHashMap<>();
|
||||
for (CalendarType calendarType : CalendarType.values()) {
|
||||
if (calendarType == CalendarType.GENERIC) {
|
||||
continue;
|
||||
}
|
||||
String prefix = calendarType.keyElementName();
|
||||
for (String element : FORMAT_DATA_ELEMENTS) {
|
||||
String key = prefix + element;
|
||||
copyIfPresent(map, "java.time." + key, formatData);
|
||||
copyIfPresent(map, key, formatData);
|
||||
}
|
||||
Arrays.stream(FORMAT_DATA_ELEMENTS)
|
||||
.flatMap(elem -> map.keySet().stream().filter(k -> k.startsWith(prefix + elem)))
|
||||
.forEach(key -> {
|
||||
copyIfPresent(map, "java.time." + key, formatData);
|
||||
copyIfPresent(map, key, formatData);
|
||||
});
|
||||
}
|
||||
|
||||
for (String key : map.keySet()) {
|
||||
@@ -868,9 +867,6 @@ public class CLDRConverter {
|
||||
if (key.startsWith(CLDRConverter.LOCALE_TYPE_PREFIX_CA)) {
|
||||
String type = key.substring(CLDRConverter.LOCALE_TYPE_PREFIX_CA.length());
|
||||
for (CalendarType calendarType : CalendarType.values()) {
|
||||
if (calendarType == CalendarType.GENERIC) {
|
||||
continue;
|
||||
}
|
||||
if (type.equals(calendarType.lname())) {
|
||||
Object value = map.get(key);
|
||||
String dataKey = key.replace(LOCALE_TYPE_PREFIX_CA,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2022, 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
|
||||
@@ -756,6 +756,14 @@ class LDMLParseHandler extends AbstractLDMLHandler<Object> {
|
||||
pushStringEntry(qName, attributes, prefix + "DateTimePatterns/" + attributes.getValue("type") + "-dateTime");
|
||||
}
|
||||
break;
|
||||
case "dateFormatItem":
|
||||
{
|
||||
// for FormatData
|
||||
String prefix = (currentCalendarType == null) ? "" : currentCalendarType.keyElementName();
|
||||
pushStringEntry(qName, attributes,
|
||||
prefix + Bundle.DATEFORMATITEM_KEY_PREFIX + attributes.getValue("id"));
|
||||
}
|
||||
break;
|
||||
case "localizedPatternChars":
|
||||
{
|
||||
// for FormatData
|
||||
@@ -1113,7 +1121,7 @@ class LDMLParseHandler extends AbstractLDMLHandler<Object> {
|
||||
if (id.equals("root") && key.startsWith("MonthNames")) {
|
||||
value = new DateFormatSymbols(Locale.US).getShortMonths();
|
||||
}
|
||||
return put(entry.getKey(), value);
|
||||
return put(key, value);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2022, 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
|
||||
@@ -27,8 +27,12 @@ package build.tools.cldrconverter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Collectors;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
@@ -62,10 +66,15 @@ class SupplementDataParseHandler extends AbstractLDMLHandler<Object> {
|
||||
// parentLocale.<parent_locale_id>=<child_locale_id>(" "<child_locale_id>)+
|
||||
private final Map<String, String> parentLocalesMap;
|
||||
|
||||
// Input Skeleton map for "preferred" and "allowed"
|
||||
// Map<"preferred"/"allowed", Map<"skeleton", SortedSet<"regions">>>
|
||||
private final Map<String, Map<String, SortedSet<String>>> inputSkeletonMap;
|
||||
|
||||
SupplementDataParseHandler() {
|
||||
firstDayMap = new HashMap<>();
|
||||
minDaysMap = new HashMap<>();
|
||||
parentLocalesMap = new HashMap<>();
|
||||
inputSkeletonMap = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,22 +85,25 @@ class SupplementDataParseHandler extends AbstractLDMLHandler<Object> {
|
||||
* It returns null when there is no firstDay and minDays for the country
|
||||
* although this should not happen because supplementalData.xml includes
|
||||
* default value for the world ("001") for firstDay and minDays.
|
||||
*
|
||||
* This method also returns Maps for "preferred" and "allowed" skeletons,
|
||||
* which are grouped by regions. E.g, "h:XX YY ZZ;" which means 'h' pattern
|
||||
* is "preferred"/"allowed" in "XX", "YY", and "ZZ" regions.
|
||||
*/
|
||||
Map<String, Object> getData(String id) {
|
||||
Map<String, Object> values = new HashMap<>();
|
||||
if ("root".equals(id)) {
|
||||
parentLocalesMap.keySet().forEach(key -> {
|
||||
values.put(CLDRConverter.PARENT_LOCALE_PREFIX+key,
|
||||
parentLocalesMap.get(key));
|
||||
});
|
||||
firstDayMap.keySet().forEach(key -> {
|
||||
values.put(CLDRConverter.CALENDAR_FIRSTDAY_PREFIX+firstDayMap.get(key),
|
||||
key);
|
||||
});
|
||||
minDaysMap.keySet().forEach(key -> {
|
||||
values.put(CLDRConverter.CALENDAR_MINDAYS_PREFIX+minDaysMap.get(key),
|
||||
key);
|
||||
});
|
||||
parentLocalesMap.forEach((k, v) -> values.put(CLDRConverter.PARENT_LOCALE_PREFIX + k, v));
|
||||
firstDayMap.forEach((k, v) -> values.put(CLDRConverter.CALENDAR_FIRSTDAY_PREFIX + v, k));
|
||||
minDaysMap.forEach((k, v) -> values.put(CLDRConverter.CALENDAR_MINDAYS_PREFIX + v, k));
|
||||
inputSkeletonMap.get("preferred").forEach((k, v) ->
|
||||
values.merge(Bundle.DATEFORMATITEM_INPUT_REGIONS_PREFIX + "preferred",
|
||||
k + ":" + v.stream().collect(Collectors.joining(" ")) + ";",
|
||||
(old, newVal) -> old + (String)newVal));
|
||||
inputSkeletonMap.get("allowed").forEach((k, v) ->
|
||||
values.merge(Bundle.DATEFORMATITEM_INPUT_REGIONS_PREFIX + "allowed",
|
||||
k + ":" + v.stream().collect(Collectors.joining(" ")) + ";",
|
||||
(old, newVal) -> old + (String)newVal));
|
||||
}
|
||||
return values.isEmpty() ? null : values;
|
||||
}
|
||||
@@ -158,11 +170,23 @@ class SupplementDataParseHandler extends AbstractLDMLHandler<Object> {
|
||||
attributes.getValue("locales").replaceAll("_", "-"));
|
||||
}
|
||||
break;
|
||||
case "hours":
|
||||
if (!isIgnored(attributes)) {
|
||||
var preferred = attributes.getValue("preferred");
|
||||
var allowed = attributes.getValue("allowed").replaceFirst(" .*", "").replaceFirst("b", "B"); // take only the first one, "b" -> "B"
|
||||
var regions = Arrays.stream(attributes.getValue("regions").split(" "))
|
||||
.map(r -> r.replaceAll("_", "-"))
|
||||
.collect(Collectors.toSet());
|
||||
var pmap = inputSkeletonMap.computeIfAbsent("preferred", k -> new HashMap<>());
|
||||
var amap = inputSkeletonMap.computeIfAbsent("allowed", k -> new HashMap<>());
|
||||
pmap.computeIfAbsent(preferred, k -> new TreeSet<>()).addAll(regions);
|
||||
amap.computeIfAbsent(allowed, k -> new TreeSet<>()).addAll(regions);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// treat anything else as a container
|
||||
pushContainer(qName, attributes);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ public class CharacterScript {
|
||||
|
||||
for (j = 0; j < scriptSize; j++) {
|
||||
for (int cp = scripts[j][0]; cp <= scripts[j][1]; cp++) {
|
||||
String name = names[scripts[j][2]].toUpperCase(Locale.ENGLISH);;
|
||||
String name = names[scripts[j][2]].toUpperCase(Locale.ENGLISH);
|
||||
if (cp > 0xffff)
|
||||
System.out.printf("%05X %s%n", cp, name);
|
||||
else
|
||||
|
||||
@@ -34,18 +34,22 @@ import java.util.zip.ZipException;
|
||||
import java.util.zip.ZipFile;
|
||||
import java.util.zip.ZipInputStream;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* Generate a zip file in a "reproducible" manner from the input zip file.
|
||||
* Standard zip tools rely on OS file list querying whose ordering can vary
|
||||
* by platform architecture, this class ensures the zip entries are ordered
|
||||
* and also supports SOURCE_DATE_EPOCH timestamps.
|
||||
* and also supports SOURCE_DATE_EPOCH timestamps which will set the ZipEntry
|
||||
* local time in UTC.
|
||||
*/
|
||||
public class MakeZipReproducible {
|
||||
String input_file = null;
|
||||
String fname = null;
|
||||
String zname = "";
|
||||
long timestamp = -1L;
|
||||
LocalDateTime timestamp = null;
|
||||
boolean verbose = false;
|
||||
|
||||
// Keep a sorted Set of ZipEntrys to be processed, so that the zip is reproducible
|
||||
@@ -117,7 +121,9 @@ public class MakeZipReproducible {
|
||||
break;
|
||||
case 't':
|
||||
// SOURCE_DATE_EPOCH timestamp specified
|
||||
timestamp = Long.parseLong(args[++count]) * 1000;
|
||||
long epochSeconds = Long.parseLong(args[++count]);
|
||||
Instant instant = Instant.ofEpochSecond(epochSeconds);
|
||||
timestamp = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
|
||||
break;
|
||||
case 'v':
|
||||
verbose = true;
|
||||
@@ -194,8 +200,8 @@ public class MakeZipReproducible {
|
||||
}
|
||||
|
||||
// Set to specified timestamp if set otherwise leave as original lastModified time
|
||||
if (timestamp != -1L) {
|
||||
entry.setTime(timestamp);
|
||||
if (timestamp != null) {
|
||||
entry.setTimeLocal(timestamp);
|
||||
}
|
||||
|
||||
zos.putNextEntry(entry);
|
||||
|
||||
@@ -213,7 +213,7 @@ public class GenStubs {
|
||||
long prevClassMods = currClassMods;
|
||||
currClassMods = tree.mods.flags;
|
||||
try {
|
||||
super.visitClassDef(tree);;
|
||||
super.visitClassDef(tree);
|
||||
} finally {
|
||||
currClassMods = prevClassMods;
|
||||
}
|
||||
|
||||
@@ -246,6 +246,23 @@ ifeq ($(ENABLE_LIBFFI_BUNDLING), true)
|
||||
TARGETS += $(COPY_LIBFFI)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Optionally copy hsdis into the the image
|
||||
|
||||
ifeq ($(ENABLE_HSDIS_BUNDLING), true)
|
||||
HSDIS_NAME := hsdis-$(OPENJDK_TARGET_CPU_LEGACY_LIB)$(SHARED_LIBRARY_SUFFIX)
|
||||
HSDIS_PATH := $(SUPPORT_OUTPUTDIR)/hsdis/$(HSDIS_NAME)
|
||||
|
||||
$(eval $(call SetupCopyFiles, COPY_HSDIS, \
|
||||
FILES := $(HSDIS_PATH), \
|
||||
DEST := $(call FindLibDirForModule, $(MODULE)), \
|
||||
FLATTEN := true, \
|
||||
MACRO := install-file-nolink, \
|
||||
))
|
||||
|
||||
TARGETS += $(COPY_HSDIS)
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Generate classfile_constants.h
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
DOCLINT += -Xdoclint:all/protected,-reference \
|
||||
DOCLINT += -Xdoclint:all/protected \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
JAVAC_FLAGS += -XDstringConcat=inline
|
||||
COPY += .icu .dat .spp .nrm content-types.properties \
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
DOCLINT += -Xdoclint:all/protected,-reference \
|
||||
DOCLINT += -Xdoclint:all/protected \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
COPY += flavormap.properties
|
||||
|
||||
@@ -23,5 +23,5 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
DOCLINT += -Xdoclint:all/protected,-reference \
|
||||
DOCLINT += -Xdoclint:all/protected \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
|
||||
@@ -23,5 +23,5 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
DOCLINT += -Xdoclint:all/protected,-reference \
|
||||
DOCLINT += -Xdoclint:all/protected \
|
||||
'-Xdoclint/package:java.*,javax.*'
|
||||
|
||||
@@ -27,4 +27,5 @@ include LauncherCommon.gmk
|
||||
|
||||
$(eval $(call SetupBuildLauncher, rmiregistry, \
|
||||
MAIN_CLASS := sun.rmi.registry.RegistryImpl, \
|
||||
JAVA_ARGS := -Djava.security.manager=allow, \
|
||||
))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2022, 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2012, 2022, 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
|
||||
@@ -324,7 +324,7 @@ compare_general_files() {
|
||||
! -name "*.cpl" ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \
|
||||
! -name "*.lib" ! -name "*.jmod" ! -name "*.exe" \
|
||||
! -name "*.obj" ! -name "*.o" ! -name "jspawnhelper" ! -name "*.a" \
|
||||
! -name "*.tar.gz" ! -name "*.jsa" ! -name "gtestLauncher" \
|
||||
! -name "*.tar.gz" ! -name "classes_nocoops.jsa" ! -name "gtestLauncher" \
|
||||
! -name "*.map" \
|
||||
| $GREP -v "./bin/" | $SORT | $FILTER)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash -f
|
||||
|
||||
#
|
||||
# Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -23,27 +23,87 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
# Script to update the Copyright YEAR range in Mercurial sources.
|
||||
# Script to update the Copyright YEAR range in Mercurial & Git sources.
|
||||
# (Originally from xdono, Thanks!)
|
||||
|
||||
awk=awk
|
||||
#------------------------------------------------------------
|
||||
copyright="Copyright (c)"
|
||||
company="Oracle"
|
||||
#------------------------------------------------------------
|
||||
|
||||
awk="awk"
|
||||
|
||||
# Stop on any error
|
||||
set -e
|
||||
|
||||
# To allow total changes counting
|
||||
shopt -s lastpipe
|
||||
|
||||
# Get an absolute path to this script, since that determines the top-level directory.
|
||||
this_script_dir=`dirname $0`
|
||||
this_script_dir=`cd $this_script_dir > /dev/null && pwd`
|
||||
|
||||
# Temp area
|
||||
tmp=/tmp/`basename $0`.${USER}.$$
|
||||
rm -f -r ${tmp}
|
||||
mkdir -p ${tmp}
|
||||
total=0
|
||||
|
||||
# Default or supplied company name
|
||||
if [ "$3" != "" ] ; then
|
||||
company="$3"
|
||||
fi
|
||||
|
||||
# This year or supplied year
|
||||
if [ "$1" != "" ] ; then
|
||||
year="$1"
|
||||
if [ "$2" != "" ] ; then
|
||||
year="$2"
|
||||
else
|
||||
year=`date +%Y`
|
||||
fi
|
||||
|
||||
# VCS select
|
||||
vcs="$1"
|
||||
|
||||
if [ -z "$vcs" ] ; then
|
||||
git_found=false
|
||||
hg_found=false
|
||||
|
||||
[ -d "${this_script_dir}/../../.git" ] && git_found=true
|
||||
[ -d "${this_script_dir}/../../.hg" ] && hg_found=true
|
||||
|
||||
if [ "$git_found" == "true" ] && [ "$hg_found" == "false" ] ; then
|
||||
vcs="git"
|
||||
elif [ "$hg_found" == "true" ] && [ "$git_found" == "false" ] ; then
|
||||
vcs="hg"
|
||||
else
|
||||
echo "Error: could not auto-detect version control system"
|
||||
vcs=""
|
||||
fi
|
||||
fi
|
||||
|
||||
case "$vcs" in
|
||||
"git")
|
||||
echo "Using Git version control system"
|
||||
vcs_status=(git ls-files -m)
|
||||
vcs_list_changesets=(git log --no-merges --since="${year}-01-01T00:00:00Z" --until="${year}-12-31T23:59:59Z" --pretty=tformat:"%H")
|
||||
vcs_changeset_message=(git log -1 --pretty=tformat:"%B") # followed by ${changeset}
|
||||
vcs_changeset_files=(git diff-tree --no-commit-id --name-only -r) # followed by ${changeset}
|
||||
;;
|
||||
|
||||
"hg")
|
||||
echo "Using Mercurial version control system"
|
||||
vcs_status=(hg status)
|
||||
vcs_list_changesets=(hg log --no-merges -v -d "${year}-01-01 to ${year}-12-31" --template '{node}\n')
|
||||
vcs_changeset_message=(hg log -l1 --template '{desc}\n' --rev) # followed by ${changeset}
|
||||
vcs_changeset_files=(hg log -l1 -v --template '{files}\n' --rev) # followed by ${changeset}
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: `basename "$0"` <git|hg> [year [company]]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Return true if it makes sense to edit this file
|
||||
saneFileToCheck()
|
||||
{
|
||||
@@ -68,8 +128,6 @@ updateFile() # file
|
||||
{
|
||||
changed="false"
|
||||
if [ `saneFileToCheck "$1"` = "true" ] ; then
|
||||
copyright="Copyright (c)"
|
||||
company="Oracle"
|
||||
rm -f $1.OLD
|
||||
mv $1 $1.OLD
|
||||
cat $1.OLD | \
|
||||
@@ -94,12 +152,10 @@ updateChangesetFiles() # changeset
|
||||
count=0
|
||||
files=${tmp}/files.$1
|
||||
rm -f ${files}
|
||||
hg log -l1 --rev $1 -v --template '{files}\n' | expand \
|
||||
"${vcs_changeset_files[@]}" "$1" | expand \
|
||||
| ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}' \
|
||||
> ${files}
|
||||
if [ -f "${files}" -a -s "${files}" ] ; then
|
||||
copyright="Copyright (c)"
|
||||
company="Oracle"
|
||||
fcount=`cat ${files}| wc -l`
|
||||
for i in `cat ${files}` ; do
|
||||
if [ `updateFile "${i}"` = "true" ] ; then
|
||||
@@ -116,8 +172,8 @@ updateChangesetFiles() # changeset
|
||||
printf " ERROR: No files changed in the changeset? Must be a mistake.\n"
|
||||
set -x
|
||||
ls -al ${files}
|
||||
hg log -l1 --rev $1 -v --template '{files}\n'
|
||||
hg log -l1 --rev $1 -v --template '{files}\n' | expand \
|
||||
"${vcs_changeset_files[@]}" "$1"
|
||||
"${vcs_changeset_files[@]}" "$1" | expand \
|
||||
| ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}'
|
||||
set +x
|
||||
exit 1
|
||||
@@ -126,16 +182,16 @@ updateChangesetFiles() # changeset
|
||||
}
|
||||
|
||||
# Check if repository is clean
|
||||
previous=`hg status|wc -l`
|
||||
previous=`"${vcs_status[@]}"|wc -l`
|
||||
if [ ${previous} -ne 0 ] ; then
|
||||
echo "WARNING: This repository contains previously edited working set files."
|
||||
echo " hg status | wc -l = `hg status | wc -l`"
|
||||
echo " ${vcs_status[*]} | wc -l = `"${vcs_status[@]}" | wc -l`"
|
||||
fi
|
||||
|
||||
# Get all changesets this year
|
||||
all_changesets=${tmp}/all_changesets
|
||||
rm -f ${all_changesets}
|
||||
hg log --no-merges -v -d "${year}-01-01 to ${year}-12-31" --template '{node}\n' > ${all_changesets}
|
||||
"${vcs_list_changesets[@]}" > ${all_changesets}
|
||||
|
||||
# Check changeset to see if it is Copyright only changes, filter changesets
|
||||
if [ -s ${all_changesets} ] ; then
|
||||
@@ -146,7 +202,7 @@ if [ -s ${all_changesets} ] ; then
|
||||
desc=${tmp}/desc.${changeset}
|
||||
rm -f ${desc}
|
||||
echo "------------------------------------------------"
|
||||
hg log -l1 --rev ${changeset} --template '{desc}\n' > ${desc}
|
||||
"${vcs_changeset_message[@]}" "${changeset}" > ${desc}
|
||||
printf "%d: %s\n%s\n" ${index} "${changeset}" "`cat ${desc}|head -1`"
|
||||
if [ "${year}" = "2010" ] ; then
|
||||
if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
|
||||
@@ -175,18 +231,18 @@ if [ ${total} -gt 0 ] ; then
|
||||
echo "---------------------------------------------"
|
||||
echo "Updated the copyright year on a total of ${total} files."
|
||||
if [ ${previous} -eq 0 ] ; then
|
||||
echo "This count should match the count of modified files in the repository: hg status -m"
|
||||
echo "This count should match the count of modified files in the repository: ${vcs_status[*]}"
|
||||
else
|
||||
echo "WARNING: This repository contained previously edited working set files."
|
||||
fi
|
||||
echo " hg status -m | wc -l = `hg status -m | wc -l`"
|
||||
echo " ${vcs_status[*]} | wc -l = `"${vcs_status[@]}" | wc -l`"
|
||||
else
|
||||
echo "---------------------------------------------"
|
||||
echo "No files were changed"
|
||||
if [ ${previous} -ne 0 ] ; then
|
||||
echo "WARNING: This repository contained previously edited working set files."
|
||||
fi
|
||||
echo " hg status -m | wc -l = `hg status -m | wc -l`"
|
||||
echo " ${vcs_status[*]} | wc -l = `"${vcs_status[@]}" | wc -l`"
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2015, 2022, 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
|
||||
@@ -62,6 +62,9 @@ ifeq ($(call isTargetOs, windows), true)
|
||||
WIN_LIB_JLI := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJliLaunchTest := $(WIN_LIB_JLI)
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeCallerAccessTest := jvm.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerClassLoaderTest := jvm.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerLookupTest := jvm.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerResourceBundle := jvm.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exerevokeall := advapi32.lib
|
||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncStackWalk := /EHsc
|
||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncInvokers := /EHsc
|
||||
@@ -80,6 +83,9 @@ else
|
||||
endif
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJliLaunchTest := -ljli
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeCallerAccessTest := -ljvm
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerClassLoaderTest := -ljvm
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerLookupTest := -ljvm
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeNullCallerResourceBundle := -ljvm
|
||||
endif
|
||||
|
||||
ifeq ($(call isTargetOs, macosx), true)
|
||||
|
||||
@@ -768,4 +768,13 @@ public class TableDemo extends DemoModule {
|
||||
footerTextField.setDragEnabled(dragEnabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageIcon createImageIcon(String filename, String description) {
|
||||
ImageIcon imageIcon = super.createImageIcon(filename, description);
|
||||
AccessibleContext context = imageIcon.getAccessibleContext();
|
||||
if (context!= null) {
|
||||
context.setAccessibleName(description);
|
||||
}
|
||||
return imageIcon;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2014, 2021, Red Hat, Inc. All rights reserved.
|
||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
//
|
||||
@@ -1199,9 +1199,6 @@ reg_class gov_pr (
|
||||
// P7, non-allocatable, preserved with all elements preset to TRUE.
|
||||
);
|
||||
|
||||
reg_class p0_reg(P0);
|
||||
reg_class p1_reg(P1);
|
||||
|
||||
// Singleton class for condition codes
|
||||
reg_class int_flags(RFLAGS);
|
||||
|
||||
@@ -1314,6 +1311,9 @@ public:
|
||||
// predicate controlling translation of CompareAndSwapX
|
||||
bool needs_acquiring_load_exclusive(const Node *load);
|
||||
|
||||
// Assert that the given node is not a variable shift.
|
||||
bool assert_not_var_shift(const Node* n);
|
||||
|
||||
// predicate controlling addressing modes
|
||||
bool size_fits_all_mem_uses(AddPNode* addp, int shift);
|
||||
%}
|
||||
@@ -1728,6 +1728,12 @@ bool needs_acquiring_load_exclusive(const Node *n)
|
||||
return true;
|
||||
}
|
||||
|
||||
// Assert that the given node is not a variable shift.
|
||||
bool assert_not_var_shift(const Node* n) {
|
||||
assert(!n->as_ShiftV()->is_var_shift(), "illegal variable shift");
|
||||
return true;
|
||||
}
|
||||
|
||||
#define __ _masm.
|
||||
|
||||
// advance declarations for helper functions to convert register
|
||||
@@ -1856,6 +1862,10 @@ void MachPrologNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
|
||||
if (C->output()->need_stack_bang(framesize))
|
||||
st->print("# stack bang size=%d\n\t", framesize);
|
||||
|
||||
if (VM_Version::use_rop_protection()) {
|
||||
st->print("ldr zr, [lr]\n\t");
|
||||
st->print("pacia lr, rfp\n\t");
|
||||
}
|
||||
if (framesize < ((1 << 9) + 2 * wordSize)) {
|
||||
st->print("sub sp, sp, #%d\n\t", framesize);
|
||||
st->print("stp rfp, lr, [sp, #%d]", framesize - 2 * wordSize);
|
||||
@@ -1964,6 +1974,10 @@ void MachEpilogNode::format(PhaseRegAlloc *ra_, outputStream *st) const {
|
||||
st->print("add sp, sp, rscratch1\n\t");
|
||||
st->print("ldp lr, rfp, [sp],#%d\n\t", (2 * wordSize));
|
||||
}
|
||||
if (VM_Version::use_rop_protection()) {
|
||||
st->print("autia lr, rfp\n\t");
|
||||
st->print("ldr zr, [lr]\n\t");
|
||||
}
|
||||
|
||||
if (do_polling() && C->is_method_compilation()) {
|
||||
st->print("# test polling word\n\t");
|
||||
@@ -2732,11 +2746,8 @@ bool is_vector_arith_imm_pattern(Node* n, Node* m) {
|
||||
// Should the matcher clone input 'm' of node 'n'?
|
||||
bool Matcher::pd_clone_node(Node* n, Node* m, Matcher::MStack& mstack) {
|
||||
// ShiftV src (ShiftCntV con)
|
||||
// StoreVector (VectorStoreMask src)
|
||||
// Binary src (Replicate con)
|
||||
if (is_vshift_con_pattern(n, m) ||
|
||||
(UseSVE > 0 && m->Opcode() == Op_VectorStoreMask && n->Opcode() == Op_StoreVector) ||
|
||||
is_vector_arith_imm_pattern(n, m)) {
|
||||
if (is_vshift_con_pattern(n, m) || is_vector_arith_imm_pattern(n, m)) {
|
||||
mstack.push(m, Visit);
|
||||
return true;
|
||||
}
|
||||
@@ -3207,16 +3218,30 @@ encode %{
|
||||
rscratch1, stlrb);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlrb0(memory mem) %{
|
||||
MOV_VOLATILE(zr, $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlrb);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlrh(iRegI src, memory mem) %{
|
||||
MOV_VOLATILE(as_Register($src$$reg), $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlrh);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlrh0(memory mem) %{
|
||||
MOV_VOLATILE(zr, $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlrh);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlrw(iRegI src, memory mem) %{
|
||||
MOV_VOLATILE(as_Register($src$$reg), $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlrw);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlrw0(memory mem) %{
|
||||
MOV_VOLATILE(zr, $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlrw);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_ldarsbw(iRegI dst, memory mem) %{
|
||||
Register dst_reg = as_Register($dst$$reg);
|
||||
@@ -3307,6 +3332,11 @@ encode %{
|
||||
rscratch1, stlr);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_stlr0(memory mem) %{
|
||||
MOV_VOLATILE(zr, $mem$$base, $mem$$index, $mem$$scale, $mem$$disp,
|
||||
rscratch1, stlr);
|
||||
%}
|
||||
|
||||
enc_class aarch64_enc_fstlrs(vRegF src, memory mem) %{
|
||||
{
|
||||
C2_MacroAssembler _masm(&cbuf);
|
||||
@@ -5690,24 +5720,6 @@ operand pRegGov()
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
operand pRegGov_P0()
|
||||
%{
|
||||
constraint(ALLOC_IN_RC(p0_reg));
|
||||
match(RegVectMask);
|
||||
op_cost(0);
|
||||
format %{ %}
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
operand pRegGov_P1()
|
||||
%{
|
||||
constraint(ALLOC_IN_RC(p1_reg));
|
||||
match(RegVectMask);
|
||||
op_cost(0);
|
||||
format %{ %}
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
// Flags register, used as output of signed compare instructions
|
||||
|
||||
// note that on AArch64 we also use this register as the output for
|
||||
@@ -8299,6 +8311,18 @@ instruct storeB_volatile(iRegIorL2I src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmB0_volatile(immI0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem (StoreB mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlrb zr, $mem\t# byte" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlrb0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Char/Short
|
||||
instruct storeC_volatile(iRegIorL2I src, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
@@ -8312,6 +8336,18 @@ instruct storeC_volatile(iRegIorL2I src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmC0_volatile(immI0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem (StoreC mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlrh zr, $mem\t# short" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlrh0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Integer
|
||||
|
||||
instruct storeI_volatile(iRegIorL2I src, /* sync_memory*/indirect mem)
|
||||
@@ -8326,6 +8362,18 @@ instruct storeI_volatile(iRegIorL2I src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmI0_volatile(immI0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem(StoreI mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlrw zr, $mem\t# int" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlrw0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Long (64 bit signed)
|
||||
instruct storeL_volatile(iRegL src, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
@@ -8339,6 +8387,18 @@ instruct storeL_volatile(iRegL src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmL0_volatile(immL0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem (StoreL mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlr zr, $mem\t# int" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlr0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Pointer
|
||||
instruct storeP_volatile(iRegP src, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
@@ -8352,6 +8412,18 @@ instruct storeP_volatile(iRegP src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmP0_volatile(immP0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem (StoreP mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlr zr, $mem\t# ptr" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlr0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Compressed Pointer
|
||||
instruct storeN_volatile(iRegN src, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
@@ -8365,6 +8437,18 @@ instruct storeN_volatile(iRegN src, /* sync_memory*/indirect mem)
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct storeimmN0_volatile(immN0 zero, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set mem (StoreN mem zero));
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "stlrw zr, $mem\t# compressed ptr" %}
|
||||
|
||||
ins_encode(aarch64_enc_stlrw0(mem));
|
||||
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Store Float
|
||||
instruct storeF_volatile(vRegF src, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
@@ -16686,7 +16770,7 @@ instruct partialSubtypeCheckVsZero(iRegP_R4 sub, iRegP_R0 super, iRegP_R2 temp,
|
||||
instruct string_compareU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE == 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::UU));
|
||||
predicate(((StrCompNode*)n)->encoding() == StrIntrinsicNode::UU);
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(KILL tmp1, KILL tmp2, USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
@@ -16696,7 +16780,7 @@ instruct string_compareU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 c
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
fnoreg, fnoreg, fnoreg, pnoreg, pnoreg, StrIntrinsicNode::UU);
|
||||
fnoreg, fnoreg, fnoreg, StrIntrinsicNode::UU);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -16704,7 +16788,7 @@ instruct string_compareU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 c
|
||||
instruct string_compareL(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE == 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::LL));
|
||||
predicate(((StrCompNode*)n)->encoding() == StrIntrinsicNode::LL);
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(KILL tmp1, KILL tmp2, USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
@@ -16713,7 +16797,7 @@ instruct string_compareL(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 c
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
fnoreg, fnoreg, fnoreg, pnoreg, pnoreg, StrIntrinsicNode::LL);
|
||||
fnoreg, fnoreg, fnoreg, StrIntrinsicNode::LL);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -16722,7 +16806,7 @@ instruct string_compareUL(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, vRegD_V2 vtmp3, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE == 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::UL));
|
||||
predicate(((StrCompNode*)n)->encoding() == StrIntrinsicNode::UL);
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(KILL tmp1, KILL tmp2, KILL vtmp1, KILL vtmp2, KILL vtmp3,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
@@ -16733,7 +16817,7 @@ instruct string_compareUL(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister,
|
||||
$vtmp3$$FloatRegister, pnoreg, pnoreg, StrIntrinsicNode::UL);
|
||||
$vtmp3$$FloatRegister, StrIntrinsicNode::UL);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -16742,7 +16826,7 @@ instruct string_compareLU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, vRegD_V2 vtmp3, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE == 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::LU));
|
||||
predicate(((StrCompNode*)n)->encoding() == StrIntrinsicNode::LU);
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(KILL tmp1, KILL tmp2, KILL vtmp1, KILL vtmp2, KILL vtmp3,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
@@ -16753,7 +16837,7 @@ instruct string_compareLU(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister,
|
||||
$vtmp3$$FloatRegister, pnoreg, pnoreg, StrIntrinsicNode::LU);
|
||||
$vtmp3$$FloatRegister,StrIntrinsicNode::LU);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
@@ -17018,16 +17102,17 @@ instruct string_compress(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
|
||||
iRegI_R0 result, rFlagsReg cr)
|
||||
%{
|
||||
match(Set result (StrCompressedCopy src (Binary dst len)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4, USE_KILL src, USE_KILL dst, USE_KILL len, KILL cr);
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4,
|
||||
USE_KILL src, USE_KILL dst, USE len, KILL cr);
|
||||
|
||||
format %{ "String Compress $src,$dst -> $result // KILL R1, R2, R3, R4" %}
|
||||
format %{ "String Compress $src,$dst,$len -> $result // KILL $src,$dst" %}
|
||||
ins_encode %{
|
||||
__ char_array_compress($src$$Register, $dst$$Register, $len$$Register,
|
||||
$result$$Register,
|
||||
$tmp1$$FloatRegister, $tmp2$$FloatRegister,
|
||||
$tmp3$$FloatRegister, $tmp4$$FloatRegister,
|
||||
$result$$Register);
|
||||
$tmp3$$FloatRegister, $tmp4$$FloatRegister);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// fast byte[] to char[] inflation
|
||||
@@ -17052,22 +17137,43 @@ instruct string_inflate(Universe dummy, iRegP_R0 src, iRegP_R1 dst, iRegI_R2 len
|
||||
|
||||
// encode char[] to byte[] in ISO_8859_1
|
||||
instruct encode_iso_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
|
||||
vRegD_V0 Vtmp1, vRegD_V1 Vtmp2,
|
||||
vRegD_V2 Vtmp3, vRegD_V3 Vtmp4,
|
||||
vRegD_V0 vtmp0, vRegD_V1 vtmp1,
|
||||
vRegD_V2 vtmp2, vRegD_V3 vtmp3,
|
||||
iRegI_R0 result, rFlagsReg cr)
|
||||
%{
|
||||
predicate(!((EncodeISOArrayNode*)n)->is_ascii());
|
||||
match(Set result (EncodeISOArray src (Binary dst len)));
|
||||
effect(USE_KILL src, USE_KILL dst, USE_KILL len,
|
||||
KILL Vtmp1, KILL Vtmp2, KILL Vtmp3, KILL Vtmp4, KILL cr);
|
||||
effect(USE_KILL src, USE_KILL dst, USE len,
|
||||
KILL vtmp0, KILL vtmp1, KILL vtmp2, KILL vtmp3, KILL cr);
|
||||
|
||||
format %{ "Encode array $src,$dst,$len -> $result" %}
|
||||
format %{ "Encode ISO array $src,$dst,$len -> $result" %}
|
||||
ins_encode %{
|
||||
__ encode_iso_array($src$$Register, $dst$$Register, $len$$Register,
|
||||
$result$$Register, $Vtmp1$$FloatRegister, $Vtmp2$$FloatRegister,
|
||||
$Vtmp3$$FloatRegister, $Vtmp4$$FloatRegister);
|
||||
$result$$Register, false,
|
||||
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
|
||||
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister);
|
||||
%}
|
||||
ins_pipe( pipe_class_memory );
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct encode_ascii_array(iRegP_R2 src, iRegP_R1 dst, iRegI_R3 len,
|
||||
vRegD_V0 vtmp0, vRegD_V1 vtmp1,
|
||||
vRegD_V2 vtmp2, vRegD_V3 vtmp3,
|
||||
iRegI_R0 result, rFlagsReg cr)
|
||||
%{
|
||||
predicate(((EncodeISOArrayNode*)n)->is_ascii());
|
||||
match(Set result (EncodeISOArray src (Binary dst len)));
|
||||
effect(USE_KILL src, USE_KILL dst, USE len,
|
||||
KILL vtmp0, KILL vtmp1, KILL vtmp2, KILL vtmp3, KILL cr);
|
||||
|
||||
format %{ "Encode ASCII array $src,$dst,$len -> $result" %}
|
||||
ins_encode %{
|
||||
__ encode_iso_array($src$$Register, $dst$$Register, $len$$Register,
|
||||
$result$$Register, true,
|
||||
$vtmp0$$FloatRegister, $vtmp1$$FloatRegister,
|
||||
$vtmp2$$FloatRegister, $vtmp3$$FloatRegister);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// ============================================================================
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2021, Arm Limited. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Arm Limited. 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
|
||||
@@ -1972,223 +1972,277 @@ VLOGICAL(xor, eor, xor, Xor, 16, B, X)
|
||||
|
||||
// ------------------------------ Shift ---------------------------------------
|
||||
dnl
|
||||
define(`VSHIFTCNT', `
|
||||
instruct vshiftcnt$3$4`'(vec$5 dst, iRegIorL2I cnt) %{
|
||||
predicate(UseSVE == 0 && (ifelse($3, 8, n->as_Vector()->length_in_bytes() == 4 ||`
|
||||
')n->as_Vector()->length_in_bytes() == $3));
|
||||
define(`VSLCNT', `
|
||||
instruct vslcnt$1$2`'(vec$3 dst, iRegIorL2I cnt) %{
|
||||
predicate(UseSVE == 0 && ifelse($1, 8,
|
||||
(n->as_Vector()->length_in_bytes() == 4 ||`
|
||||
'n->as_Vector()->length_in_bytes() == $1),
|
||||
n->as_Vector()->length_in_bytes() == $1));
|
||||
match(Set dst (LShiftCntV cnt));
|
||||
match(Set dst (RShiftCntV cnt));
|
||||
format %{ "$1 $dst, $cnt\t# shift count vector ($3$4)" %}
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "dup $dst, $cnt\t# shift count vector ($1$2)" %}
|
||||
ins_encode %{
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$4, as_Register($cnt$$reg));
|
||||
__ dup(as_FloatRegister($dst$$reg), __ T$1$2, as_Register($cnt$$reg));
|
||||
%}
|
||||
ins_pipe(vdup_reg_reg`'ifelse($5, D, 64, 128));
|
||||
ins_pipe(vdup_reg_reg`'ifelse($3, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl $1 $2 $3 $4 $5
|
||||
VSHIFTCNT(dup, dup, 8, B, D)
|
||||
VSHIFTCNT(dup, dup, 16, B, X)
|
||||
dnl
|
||||
define(`VSRCNT', `
|
||||
instruct vsrcnt$1$2`'(vec$3 dst, iRegIorL2I cnt) %{
|
||||
predicate(UseSVE == 0 && ifelse($1, 8,
|
||||
(n->as_Vector()->length_in_bytes() == 4 ||`
|
||||
'n->as_Vector()->length_in_bytes() == $1),
|
||||
n->as_Vector()->length_in_bytes() == $1));
|
||||
match(Set dst (RShiftCntV cnt));
|
||||
ins_cost(INSN_COST * 2);
|
||||
format %{ "negw rscratch1, $cnt\t"
|
||||
"dup $dst, rscratch1\t# shift count vector ($1$2)" %}
|
||||
ins_encode %{
|
||||
__ negw(rscratch1, as_Register($cnt$$reg));
|
||||
__ dup(as_FloatRegister($dst$$reg), __ T$1$2, rscratch1);
|
||||
%}
|
||||
ins_pipe(vdup_reg_reg`'ifelse($3, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
|
||||
// Vector shift count
|
||||
// Note-1: Low 8 bits of each element are used, so it doesn't matter if we
|
||||
// treat it as ints or bytes here.
|
||||
// Note-2: Shift value is negated for RShiftCntV additionally. See the comments
|
||||
// on vsra8B rule for more details.
|
||||
dnl $1 $2 $3
|
||||
VSLCNT(8, B, D)
|
||||
VSLCNT(16, B, X)
|
||||
VSRCNT(8, B, D)
|
||||
VSRCNT(16, B, X)
|
||||
dnl
|
||||
define(`PREDICATE',
|
||||
`ifelse($1, 8B,
|
||||
ifelse($3, `', `predicate(n->as_Vector()->length() == 4 || n->as_Vector()->length() == 8);',
|
||||
`predicate((n->as_Vector()->length() == 4 || n->as_Vector()->length() == 8) &&`
|
||||
'$3);'),
|
||||
$1, 4S,
|
||||
ifelse($3, `', `predicate(n->as_Vector()->length() == 2 || n->as_Vector()->length() == 4);',
|
||||
`predicate((n->as_Vector()->length() == 2 || n->as_Vector()->length() == 4) &&`
|
||||
'$3);'),
|
||||
ifelse($3, `', `predicate(n->as_Vector()->length() == $2);',
|
||||
`predicate(n->as_Vector()->length() == $2 && $3);'))')dnl
|
||||
dnl
|
||||
define(`VSLL', `
|
||||
instruct vsll$3$4`'(vec$6 dst, vec$6 src, vec$6 shift) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (LShiftV$4 src shift));
|
||||
instruct vsll$1$2`'(vec$4 dst, vec$4 src, vec$4 shift) %{
|
||||
PREDICATE(`$1$2', $1, )
|
||||
match(Set dst (LShiftV$2 src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst,$src,$shift\t# vector ($3$5)" %}
|
||||
format %{ "sshl $dst,$src,$shift\t# vector ($1$3)" %}
|
||||
ins_encode %{
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($shift$$reg));
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128));
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRA', `
|
||||
instruct vsra$3$4`'(vec$6 dst, vec$6 src, vec$6 shift, vec$6 tmp) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (RShiftV$4 src shift));
|
||||
instruct vsra$1$2`'(vec$4 dst, vec$4 src, vec$4 shift) %{
|
||||
PREDICATE(`$1$2', $1, !n->as_ShiftV()->is_var_shift())
|
||||
match(Set dst (RShiftV$2 src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "$1 $tmp,$shift\t"
|
||||
"$2 $dst,$src,$tmp\t# vector ($3$5)" %}
|
||||
format %{ "sshl $dst,$src,$shift\t# vector ($1$3)" %}
|
||||
ins_encode %{
|
||||
__ $1(as_FloatRegister($tmp$$reg), __ T`'ifelse($6, D, 8B, 16B),
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
as_FloatRegister($shift$$reg));
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128));
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRA_VAR', `
|
||||
instruct vsra$1$2_var`'(vec$4 dst, vec$4 src, vec$4 shift) %{
|
||||
PREDICATE(`$1$2', $1, n->as_ShiftV()->is_var_shift())
|
||||
match(Set dst (RShiftV$2 src shift));
|
||||
ins_cost(INSN_COST * 2);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "negr $dst,$shift\t"
|
||||
"sshl $dst,$src,$dst\t# vector ($1$3)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($dst$$reg), __ T`'ifelse($4, D, 8B, 16B),
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($dst$$reg));
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRL', `
|
||||
instruct vsrl$3$4`'(vec$6 dst, vec$6 src, vec$6 shift, vec$6 tmp) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (URShiftV$4 src shift));
|
||||
instruct vsrl$1$2`'(vec$4 dst, vec$4 src, vec$4 shift) %{
|
||||
PREDICATE(`$1$2', $1, !n->as_ShiftV()->is_var_shift())
|
||||
match(Set dst (URShiftV$2 src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "$1 $tmp,$shift\t"
|
||||
"$2 $dst,$src,$tmp\t# vector ($3$5)" %}
|
||||
format %{ "ushl $dst,$src,$shift\t# vector ($1$3)" %}
|
||||
ins_encode %{
|
||||
__ $1(as_FloatRegister($tmp$$reg), __ T`'ifelse($6, D, 8B, 16B),
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
as_FloatRegister($shift$$reg));
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128));
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRL_VAR', `
|
||||
instruct vsrl$1$2_var`'(vec$4 dst, vec$4 src, vec$4 shift) %{
|
||||
PREDICATE(`$1$2', $1, n->as_ShiftV()->is_var_shift())
|
||||
match(Set dst (URShiftV$2 src shift));
|
||||
ins_cost(INSN_COST * 2);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "negr $dst,$shift\t"
|
||||
"ushl $dst,$src,$dst\t# vector ($1$3)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($dst$$reg), __ T`'ifelse($4, D, 8B, 16B),
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($dst$$reg));
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128));
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSLL_IMM', `
|
||||
instruct vsll$3$4_imm`'(vec$6 dst, vec$6 src, immI shift) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (LShiftV$4 src (LShiftCntV shift)));
|
||||
instruct vsll$1$2_imm`'(vec$4 dst, vec$4 src, immI shift) %{
|
||||
PREDICATE(`$1$2', $1, assert_not_var_shift(n))
|
||||
match(Set dst (LShiftV$2 src (LShiftCntV shift)));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst, $src, $shift\t# vector ($3$5)" %}
|
||||
ins_encode %{ifelse($4, B,`
|
||||
format %{ "shl $dst, $src, $shift\t# vector ($1$3)" %}
|
||||
ins_encode %{ifelse($2, B,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 8) {
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($6, D, T8B, T16B),
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($4, D, T8B, T16B),
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
} else {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ shl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', $4, S,`
|
||||
}', $2, S,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 16) {
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($6, D, T8B, T16B),
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($4, D, T8B, T16B),
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
} else {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ shl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', `
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ shl(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
(int)$shift$$constant);')
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128)_imm);
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128)_imm);
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRA_IMM', `
|
||||
instruct vsra$3$4_imm`'(vec$6 dst, vec$6 src, immI shift) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (RShiftV$4 src (RShiftCntV shift)));
|
||||
instruct vsra$1$2_imm`'(vec$4 dst, vec$4 src, immI shift) %{
|
||||
PREDICATE(`$1$2', $1, assert_not_var_shift(n))
|
||||
match(Set dst (RShiftV$2 src (RShiftCntV shift)));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst, $src, $shift\t# vector ($3$5)" %}
|
||||
ins_encode %{ifelse($4, B,`
|
||||
format %{ "sshr $dst, $src, $shift\t# vector ($1$3)" %}
|
||||
ins_encode %{ifelse($2, B,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 8) sh = 7;
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);', $4, S,`
|
||||
__ sshr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);', $2, S,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 16) sh = 15;
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);', `
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ sshr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);', `
|
||||
__ sshr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
(int)$shift$$constant);')
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128)_imm);
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128)_imm);
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRL_IMM', `
|
||||
instruct vsrl$3$4_imm`'(vec$6 dst, vec$6 src, immI shift) %{
|
||||
predicate(ifelse($3$4, 8B, n->as_Vector()->length() == 4 ||`
|
||||
',
|
||||
$3$4, 4S, n->as_Vector()->length() == 2 ||`
|
||||
')n->as_Vector()->length() == $3);
|
||||
match(Set dst (URShiftV$4 src (RShiftCntV shift)));
|
||||
instruct vsrl$1$2_imm`'(vec$4 dst, vec$4 src, immI shift) %{
|
||||
PREDICATE(`$1$2', $1, assert_not_var_shift(n))
|
||||
match(Set dst (URShiftV$2 src (RShiftCntV shift)));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst, $src, $shift\t# vector ($3$5)" %}
|
||||
ins_encode %{ifelse($4, B,`
|
||||
format %{ "ushr $dst, $src, $shift\t# vector ($1$3)" %}
|
||||
ins_encode %{ifelse($2, B,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 8) {
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($6, D, T8B, T16B),
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($4, D, T8B, T16B),
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
} else {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', $4, S,`
|
||||
__ ushr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', $2, S,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 16) {
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($6, D, T8B, T16B),
|
||||
__ eor(as_FloatRegister($dst$$reg), __ ifelse($4, D, T8B, T16B),
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($src$$reg));
|
||||
} else {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
__ ushr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', `
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ ushr(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
(int)$shift$$constant);')
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128)_imm);
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128)_imm);
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRLA_IMM', `
|
||||
instruct vsrla$3$4_imm`'(vec$6 dst, vec$6 src, immI shift) %{
|
||||
predicate(n->as_Vector()->length() == $3);
|
||||
match(Set dst (AddV$4 dst (URShiftV$4 src (RShiftCntV shift))));
|
||||
instruct vsrla$1$2_imm`'(vec$4 dst, vec$4 src, immI shift) %{
|
||||
predicate(n->as_Vector()->length() == $1);
|
||||
match(Set dst (AddV$2 dst (URShiftV$2 src (RShiftCntV shift))));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst, $src, $shift\t# vector ($3$5)" %}
|
||||
ins_encode %{ifelse($4, B,`
|
||||
format %{ "usra $dst, $src, $shift\t# vector ($1$3)" %}
|
||||
ins_encode %{ifelse($2, B,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh < 8) {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', $4, S,`
|
||||
__ usra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', $2, S,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh < 16) {
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
__ usra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);
|
||||
}', `
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ usra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
(int)$shift$$constant);')
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128)_imm);
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128)_imm);
|
||||
%}')dnl
|
||||
dnl
|
||||
define(`VSRAA_IMM', `
|
||||
instruct vsraa$3$4_imm`'(vec$6 dst, vec$6 src, immI shift) %{
|
||||
predicate(n->as_Vector()->length() == $3);
|
||||
match(Set dst (AddV$4 dst (RShiftV$4 src (RShiftCntV shift))));
|
||||
instruct vsraa$1$2_imm`'(vec$4 dst, vec$4 src, immI shift) %{
|
||||
predicate(n->as_Vector()->length() == $1);
|
||||
match(Set dst (AddV$2 dst (RShiftV$2 src (RShiftCntV shift))));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "$1 $dst, $src, $shift\t# vector ($3$5)" %}
|
||||
ins_encode %{ifelse($4, B,`
|
||||
format %{ "ssra $dst, $src, $shift\t# vector ($1$3)" %}
|
||||
ins_encode %{ifelse($2, B,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 8) sh = 7;
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);', $4, S,`
|
||||
__ ssra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);', $2, S,`
|
||||
int sh = (int)$shift$$constant;
|
||||
if (sh >= 16) sh = 15;
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
as_FloatRegister($src$$reg), sh);', `
|
||||
__ $2(as_FloatRegister($dst$$reg), __ T$3$5,
|
||||
__ ssra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg), sh);', `
|
||||
__ ssra(as_FloatRegister($dst$$reg), __ T$1$3,
|
||||
as_FloatRegister($src$$reg),
|
||||
(int)$shift$$constant);')
|
||||
%}
|
||||
ins_pipe(vshift`'ifelse($6, D, 64, 128)_imm);
|
||||
ins_pipe(vshift`'ifelse($4, D, 64, 128)_imm);
|
||||
%}')dnl
|
||||
dnl $1 $2 $3 $4 $5 $6
|
||||
VSLL(sshl, sshl, 8, B, B, D)
|
||||
VSLL(sshl, sshl, 16, B, B, X)
|
||||
dnl
|
||||
undefine(PREDICATE)dnl
|
||||
dnl
|
||||
dnl $1 $2 $3 $4
|
||||
VSLL(8, B, B, D)
|
||||
VSLL(16, B, B, X)
|
||||
|
||||
// Right shifts with vector shift count on aarch64 SIMD are implemented
|
||||
// as left shift by negative shift count.
|
||||
@@ -2199,8 +2253,6 @@ VSLL(sshl, sshl, 16, B, B, X)
|
||||
// LoadVector RShiftCntV
|
||||
// | /
|
||||
// RShiftVI
|
||||
// Note: In inner loop, multiple neg instructions are used, which can be
|
||||
// moved to outer loop and merge into one neg instruction.
|
||||
//
|
||||
// Case 2: The vector shift count is from loading.
|
||||
// This case isn't supported by middle-end now. But it's supported by
|
||||
@@ -2210,61 +2262,83 @@ VSLL(sshl, sshl, 16, B, B, X)
|
||||
// | /
|
||||
// RShiftVI
|
||||
//
|
||||
dnl $1 $2 $3 $4 $5 $6
|
||||
VSRA(negr, sshl, 8, B, B, D)
|
||||
VSRA(negr, sshl, 16, B, B, X)
|
||||
VSRL(negr, ushl, 8, B, B, D)
|
||||
VSRL(negr, ushl, 16, B, B, X)
|
||||
VSLL_IMM(shl, shl, 8, B, B, D)
|
||||
VSLL_IMM(shl, shl, 16, B, B, X)
|
||||
VSRA_IMM(sshr, sshr, 8, B, B, D)
|
||||
VSRA_IMM(sshr, sshr, 16, B, B, X)
|
||||
VSRL_IMM(ushr, ushr, 8, B, B, D)
|
||||
VSRL_IMM(ushr, ushr, 16, B, B, X)
|
||||
VSLL(sshl, sshl, 4, S, H, D)
|
||||
VSLL(sshl, sshl, 8, S, H, X)
|
||||
VSRA(negr, sshl, 4, S, H, D)
|
||||
VSRA(negr, sshl, 8, S, H, X)
|
||||
VSRL(negr, ushl, 4, S, H, D)
|
||||
VSRL(negr, ushl, 8, S, H, X)
|
||||
VSLL_IMM(shl, shl, 4, S, H, D)
|
||||
VSLL_IMM(shl, shl, 8, S, H, X)
|
||||
VSRA_IMM(sshr, sshr, 4, S, H, D)
|
||||
VSRA_IMM(sshr, sshr, 8, S, H, X)
|
||||
VSRL_IMM(ushr, ushr, 4, S, H, D)
|
||||
VSRL_IMM(ushr, ushr, 8, S, H, X)
|
||||
VSLL(sshl, sshl, 2, I, S, D)
|
||||
VSLL(sshl, sshl, 4, I, S, X)
|
||||
VSRA(negr, sshl, 2, I, S, D)
|
||||
VSRA(negr, sshl, 4, I, S, X)
|
||||
VSRL(negr, ushl, 2, I, S, D)
|
||||
VSRL(negr, ushl, 4, I, S, X)
|
||||
VSLL_IMM(shl, shl, 2, I, S, D)
|
||||
VSLL_IMM(shl, shl, 4, I, S, X)
|
||||
VSRA_IMM(sshr, sshr, 2, I, S, D)
|
||||
VSRA_IMM(sshr, sshr, 4, I, S, X)
|
||||
VSRL_IMM(ushr, ushr, 2, I, S, D)
|
||||
VSRL_IMM(ushr, ushr, 4, I, S, X)
|
||||
VSLL(sshl, sshl, 2, L, D, X)
|
||||
VSRA(negr, sshl, 2, L, D, X)
|
||||
VSRL(negr, ushl, 2, L, D, X)
|
||||
VSLL_IMM(shl, shl, 2, L, D, X)
|
||||
VSRA_IMM(sshr, sshr, 2, L, D, X)
|
||||
VSRL_IMM(ushr, ushr, 2, L, D, X)
|
||||
VSRAA_IMM(ssra, ssra, 8, B, B, D)
|
||||
VSRAA_IMM(ssra, ssra, 16, B, B, X)
|
||||
VSRAA_IMM(ssra, ssra, 4, S, H, D)
|
||||
VSRAA_IMM(ssra, ssra, 8, S, H, X)
|
||||
VSRAA_IMM(ssra, ssra, 2, I, S, D)
|
||||
VSRAA_IMM(ssra, ssra, 4, I, S, X)
|
||||
VSRAA_IMM(ssra, ssra, 2, L, D, X)
|
||||
VSRLA_IMM(usra, usra, 8, B, B, D)
|
||||
VSRLA_IMM(usra, usra, 16, B, B, X)
|
||||
VSRLA_IMM(usra, usra, 4, S, H, D)
|
||||
VSRLA_IMM(usra, usra, 8, S, H, X)
|
||||
VSRLA_IMM(usra, usra, 2, I, S, D)
|
||||
VSRLA_IMM(usra, usra, 4, I, S, X)
|
||||
VSRLA_IMM(usra, usra, 2, L, D, X)
|
||||
// The negate is conducted in RShiftCntV rule for case 1, whereas it's done in
|
||||
// RShiftV* rules for case 2. Because there exists an optimization opportunity
|
||||
// for case 1, that is, multiple neg instructions in inner loop can be hoisted
|
||||
// to outer loop and merged into one neg instruction.
|
||||
//
|
||||
// Note that ShiftVNode::is_var_shift() indicates whether the vector shift
|
||||
// count is a variable vector(case 2) or not(a vector generated by RShiftCntV,
|
||||
// i.e. case 1).
|
||||
dnl $1 $2 $3 $4
|
||||
VSRA(8, B, B, D)
|
||||
VSRA_VAR(8, B, B, D)
|
||||
VSRA(16, B, B, X)
|
||||
VSRA_VAR(16, B, B, X)
|
||||
VSRL(8, B, B, D)
|
||||
VSRL_VAR(8, B, B, D)
|
||||
VSRL(16, B, B, X)
|
||||
VSRL_VAR(16, B, B, X)
|
||||
VSLL_IMM(8, B, B, D)
|
||||
VSLL_IMM(16, B, B, X)
|
||||
VSRA_IMM(8, B, B, D)
|
||||
VSRA_IMM(16, B, B, X)
|
||||
VSRL_IMM(8, B, B, D)
|
||||
VSRL_IMM(16, B, B, X)
|
||||
VSLL(4, S, H, D)
|
||||
VSLL(8, S, H, X)
|
||||
VSRA(4, S, H, D)
|
||||
VSRA_VAR(4, S, H, D)
|
||||
VSRA(8, S, H, X)
|
||||
VSRA_VAR(8, S, H, X)
|
||||
VSRL(4, S, H, D)
|
||||
VSRL_VAR(4, S, H, D)
|
||||
VSRL(8, S, H, X)
|
||||
VSRL_VAR(8, S, H, X)
|
||||
VSLL_IMM(4, S, H, D)
|
||||
VSLL_IMM(8, S, H, X)
|
||||
VSRA_IMM(4, S, H, D)
|
||||
VSRA_IMM(8, S, H, X)
|
||||
VSRL_IMM(4, S, H, D)
|
||||
VSRL_IMM(8, S, H, X)
|
||||
VSLL(2, I, S, D)
|
||||
VSLL(4, I, S, X)
|
||||
VSRA(2, I, S, D)
|
||||
VSRA_VAR(2, I, S, D)
|
||||
VSRA(4, I, S, X)
|
||||
VSRA_VAR(4, I, S, X)
|
||||
VSRL(2, I, S, D)
|
||||
VSRL_VAR(2, I, S, D)
|
||||
VSRL(4, I, S, X)
|
||||
VSRL_VAR(4, I, S, X)
|
||||
VSLL_IMM(2, I, S, D)
|
||||
VSLL_IMM(4, I, S, X)
|
||||
VSRA_IMM(2, I, S, D)
|
||||
VSRA_IMM(4, I, S, X)
|
||||
VSRL_IMM(2, I, S, D)
|
||||
VSRL_IMM(4, I, S, X)
|
||||
VSLL(2, L, D, X)
|
||||
VSRA(2, L, D, X)
|
||||
VSRA_VAR(2, L, D, X)
|
||||
VSRL(2, L, D, X)
|
||||
VSRL_VAR(2, L, D, X)
|
||||
VSLL_IMM(2, L, D, X)
|
||||
VSRA_IMM(2, L, D, X)
|
||||
VSRL_IMM(2, L, D, X)
|
||||
VSRAA_IMM(8, B, B, D)
|
||||
VSRAA_IMM(16, B, B, X)
|
||||
VSRAA_IMM(4, S, H, D)
|
||||
VSRAA_IMM(8, S, H, X)
|
||||
VSRAA_IMM(2, I, S, D)
|
||||
VSRAA_IMM(4, I, S, X)
|
||||
VSRAA_IMM(2, L, D, X)
|
||||
VSRLA_IMM(8, B, B, D)
|
||||
VSRLA_IMM(16, B, B, X)
|
||||
VSRLA_IMM(4, S, H, D)
|
||||
VSRLA_IMM(8, S, H, X)
|
||||
VSRLA_IMM(2, I, S, D)
|
||||
VSRLA_IMM(4, I, S, X)
|
||||
VSRLA_IMM(2, L, D, X)
|
||||
dnl
|
||||
define(`VMINMAX', `
|
||||
instruct v$1$3`'ifelse($5, S, F, D)`'(vec$6 dst, vec$6 src1, vec$6 src2)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2021, Arm Limited. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Arm Limited. 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
|
||||
@@ -411,13 +411,13 @@ instruct storeV_masked_partial(vReg src, vmemA mem, pRegGov pg, pRegGov pgtmp, r
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// maskAll
|
||||
// maskAll (full or partial predicate size)
|
||||
|
||||
instruct vmaskAll_immI(pRegGov dst, immI src) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_ptrue/sve_pfalse $dst\t# mask all (sve) (B/H/S)" %}
|
||||
format %{ "sve_ptrue_lanecnt/sve_pfalse $dst\t# mask all (sve) (B/H/S)" %}
|
||||
ins_encode %{
|
||||
int con = (int)$src$$constant;
|
||||
if (con == 0) {
|
||||
@@ -425,7 +425,8 @@ instruct vmaskAll_immI(pRegGov dst, immI src) %{
|
||||
} else {
|
||||
assert(con == -1, "invalid constant value for mask");
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_ptrue(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt));
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
Matcher::vector_length(this));
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
@@ -435,14 +436,22 @@ instruct vmaskAllI(pRegGov dst, iRegIorL2I src, vReg tmp, rFlagsReg cr) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
effect(TEMP tmp, KILL cr);
|
||||
ins_cost(2 * SVE_COST);
|
||||
ins_cost(3 * SVE_COST);
|
||||
format %{ "sve_dup $tmp, $src\n\t"
|
||||
"sve_cmpne $dst, $tmp, 0\t# mask all (sve) (B/H/S)" %}
|
||||
"sve_ptrue_lanecnt $dst\n\t"
|
||||
"sve_cmpne $dst, $dst, $tmp, 0\t# mask all (sve) (B/H/S)" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt);
|
||||
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
|
||||
__ sve_dup(as_FloatRegister($tmp$$reg), size, as_Register($src$$reg));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
if (length_in_bytes < MaxVectorSize) {
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), size, Matcher::vector_length(this));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size,
|
||||
as_PRegister($dst$$reg), as_FloatRegister($tmp$$reg), 0);
|
||||
} else {
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
@@ -451,7 +460,7 @@ instruct vmaskAll_immL(pRegGov dst, immL src) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_ptrue/sve_pfalse $dst\t# mask all (sve) (D)" %}
|
||||
format %{ "sve_ptrue_lanecnt/sve_pfalse $dst\t# mask all (sve) (D)" %}
|
||||
ins_encode %{
|
||||
long con = (long)$src$$constant;
|
||||
if (con == 0) {
|
||||
@@ -459,7 +468,8 @@ instruct vmaskAll_immL(pRegGov dst, immL src) %{
|
||||
} else {
|
||||
assert(con == -1, "invalid constant value for mask");
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_ptrue(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt));
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
Matcher::vector_length(this));
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
@@ -469,14 +479,22 @@ instruct vmaskAllL(pRegGov dst, iRegL src, vReg tmp, rFlagsReg cr) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
effect(TEMP tmp, KILL cr);
|
||||
ins_cost(2 * SVE_COST);
|
||||
ins_cost(3 * SVE_COST);
|
||||
format %{ "sve_dup $tmp, $src\n\t"
|
||||
"sve_cmpne $dst, $tmp, 0\t# mask all (sve) (D)" %}
|
||||
"sve_ptrue_lanecnt $dst\n\t"
|
||||
"sve_cmpne $dst, $dst, $tmp, 0\t# mask all (sve) (D)" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt);
|
||||
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
|
||||
__ sve_dup(as_FloatRegister($tmp$$reg), size, as_Register($src$$reg));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
if (length_in_bytes < MaxVectorSize) {
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), size, Matcher::vector_length(this));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size,
|
||||
as_PRegister($dst$$reg), as_FloatRegister($tmp$$reg), 0);
|
||||
} else {
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
@@ -1270,6 +1288,36 @@ instruct vnotL(vReg dst, vReg src, immL_M1 m1) %{
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// vector not - predicated
|
||||
|
||||
instruct vnotI_masked(vReg dst, vReg src, immI_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (XorV (Binary src (ReplicateB m1)) pg));
|
||||
match(Set dst (XorV (Binary src (ReplicateS m1)) pg));
|
||||
match(Set dst (XorV (Binary src (ReplicateI m1)) pg));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_not $dst, $pg, $src\t# vector (sve) B/H/S" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_not(as_FloatRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
instruct vnotL_masked(vReg dst, vReg src, immL_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (XorV (Binary src (ReplicateL m1)) pg));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_not $dst, $pg, $src\t# vector (sve) D" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_not(as_FloatRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// vector and_not
|
||||
|
||||
instruct vand_notI(vReg dst, vReg src1, vReg src2, immI_M1 m1) %{
|
||||
@@ -1300,6 +1348,36 @@ instruct vand_notL(vReg dst, vReg src1, vReg src2, immL_M1 m1) %{
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// vector and_not - predicated
|
||||
|
||||
instruct vand_notI_masked(vReg dst_src1, vReg src2, immI_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateB m1))) pg));
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateS m1))) pg));
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateI m1))) pg));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_bic $dst_src1, $pg, $dst_src1, $src2\t# vector (sve) B/H/S" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_bic(as_FloatRegister($dst_src1$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
instruct vand_notL_masked(vReg dst_src1, vReg src2, immL_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateL m1))) pg));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_bic $dst_src1, $pg, $dst_src1, $src2\t# vector (sve) D" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_bic(as_FloatRegister($dst_src1$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
// vector float div
|
||||
|
||||
instruct vdivF(vReg dst_src1, vReg src2) %{
|
||||
@@ -3084,6 +3162,7 @@ instruct reduce_maxF_masked(vRegF dst, vRegF src1, vReg src2, pRegGov pg) %{
|
||||
n->in(1)->in(2)->bottom_type()->is_vect()->length_in_bytes() == MaxVectorSize);
|
||||
match(Set dst (MaxReductionV (Binary src1 src2) pg));
|
||||
ins_cost(SVE_COST);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "sve_reduce_maxF $dst, $src1, $pg, $src2\t# maxF reduction predicated (sve)" %}
|
||||
ins_encode %{
|
||||
__ sve_fmaxv(as_FloatRegister($dst$$reg), __ S, as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
@@ -3098,6 +3177,7 @@ instruct reduce_maxD_masked(vRegD dst, vRegD src1, vReg src2, pRegGov pg) %{
|
||||
n->in(1)->in(2)->bottom_type()->is_vect()->length_in_bytes() == MaxVectorSize);
|
||||
match(Set dst (MaxReductionV (Binary src1 src2) pg));
|
||||
ins_cost(SVE_COST);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "sve_reduce_maxD $dst, $src1, $pg, $src2\t# maxD reduction predicated (sve)" %}
|
||||
ins_encode %{
|
||||
__ sve_fmaxv(as_FloatRegister($dst$$reg), __ D, as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
@@ -3380,6 +3460,7 @@ instruct reduce_minF_masked(vRegF dst, vRegF src1, vReg src2, pRegGov pg) %{
|
||||
n->in(1)->in(2)->bottom_type()->is_vect()->length_in_bytes() == MaxVectorSize);
|
||||
match(Set dst (MinReductionV (Binary src1 src2) pg));
|
||||
ins_cost(SVE_COST);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "sve_reduce_minF $dst, $src1, $pg, $src2\t# minF reduction predicated (sve)" %}
|
||||
ins_encode %{
|
||||
__ sve_fminv(as_FloatRegister($dst$$reg), __ S, as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
@@ -3394,6 +3475,7 @@ instruct reduce_minD_masked(vRegD dst, vRegD src1, vReg src2, pRegGov pg) %{
|
||||
n->in(1)->in(2)->bottom_type()->is_vect()->length_in_bytes() == MaxVectorSize);
|
||||
match(Set dst (MinReductionV (Binary src1 src2) pg));
|
||||
ins_cost(SVE_COST);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "sve_reduce_minD $dst, $src1, $pg, $src2\t# minD reduction predicated (sve)" %}
|
||||
ins_encode %{
|
||||
__ sve_fminv(as_FloatRegister($dst$$reg), __ D, as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
@@ -5551,105 +5633,6 @@ instruct stringU_indexof_char_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegI_R3 ch,
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// Intrisics for String.compareTo()
|
||||
|
||||
// Note that Z registers alias the corresponding NEON registers, we declare the vector operands of
|
||||
// these string_compare variants as NEON register type for convenience so that the prototype of
|
||||
// string_compare can be shared with all variants.
|
||||
|
||||
|
||||
instruct string_compareLL_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, pRegGov_P0 pgtmp1,
|
||||
pRegGov_P1 pgtmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE > 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::LL));
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP vtmp1, TEMP vtmp2, TEMP pgtmp1, TEMP pgtmp2,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # USE sve" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister, fnoreg,
|
||||
as_PRegister($pgtmp1$$reg), as_PRegister($pgtmp2$$reg),
|
||||
StrIntrinsicNode::LL);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct string_compareLU_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, pRegGov_P0 pgtmp1,
|
||||
pRegGov_P1 pgtmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE > 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::LU));
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP vtmp1, TEMP vtmp2, TEMP pgtmp1, TEMP pgtmp2,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # USE sve" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister, fnoreg,
|
||||
as_PRegister($pgtmp1$$reg), as_PRegister($pgtmp2$$reg),
|
||||
StrIntrinsicNode::LU);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct string_compareUL_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, pRegGov_P0 pgtmp1,
|
||||
pRegGov_P1 pgtmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE > 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::UL));
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP vtmp1, TEMP vtmp2, TEMP pgtmp1, TEMP pgtmp2,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # USE sve" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister, fnoreg,
|
||||
as_PRegister($pgtmp1$$reg), as_PRegister($pgtmp2$$reg),
|
||||
StrIntrinsicNode::UL);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
instruct string_compareUU_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, pRegGov_P0 pgtmp1,
|
||||
pRegGov_P1 pgtmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE > 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::UU));
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP vtmp1, TEMP vtmp2, TEMP pgtmp1, TEMP pgtmp2,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # USE sve" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister, fnoreg,
|
||||
as_PRegister($pgtmp1$$reg), as_PRegister($pgtmp2$$reg),
|
||||
StrIntrinsicNode::UU);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}
|
||||
|
||||
// ---------------------------- Vector mask reductions ---------------------------
|
||||
instruct vmask_truecount(iRegINoSp dst, pReg src) %{
|
||||
predicate(UseSVE > 0 &&
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2021, Arm Limited. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2020, 2022, Arm Limited. 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
|
||||
@@ -356,7 +356,7 @@ instruct vmaskAll_imm$1(pRegGov dst, imm$1 src) %{
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_ptrue/sve_pfalse $dst\t# mask all (sve) ($2)" %}
|
||||
format %{ "sve_ptrue_lanecnt/sve_pfalse $dst\t# mask all (sve) ($2)" %}
|
||||
ins_encode %{
|
||||
ifelse($1, `I', int, long) con = (ifelse($1, `I', int, long))$src$$constant;
|
||||
if (con == 0) {
|
||||
@@ -364,7 +364,8 @@ instruct vmaskAll_imm$1(pRegGov dst, imm$1 src) %{
|
||||
} else {
|
||||
assert(con == -1, "invalid constant value for mask");
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_ptrue(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt));
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
Matcher::vector_length(this));
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
@@ -377,19 +378,27 @@ instruct vmaskAll$1(pRegGov dst, ifelse($1, `I', iRegIorL2I, iRegL) src, vReg tm
|
||||
predicate(UseSVE > 0);
|
||||
match(Set dst (MaskAll src));
|
||||
effect(TEMP tmp, KILL cr);
|
||||
ins_cost(2 * SVE_COST);
|
||||
ins_cost(3 * SVE_COST);
|
||||
format %{ "sve_dup $tmp, $src\n\t"
|
||||
"sve_cmpne $dst, $tmp, 0\t# mask all (sve) ($2)" %}
|
||||
"sve_ptrue_lanecnt $dst\n\t"
|
||||
"sve_cmpne $dst, $dst, $tmp, 0\t# mask all (sve) ($2)" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt);
|
||||
uint length_in_bytes = Matcher::vector_length_in_bytes(this);
|
||||
__ sve_dup(as_FloatRegister($tmp$$reg), size, as_Register($src$$reg));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
if (length_in_bytes < MaxVectorSize) {
|
||||
__ sve_ptrue_lanecnt(as_PRegister($dst$$reg), size, Matcher::vector_length(this));
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size,
|
||||
as_PRegister($dst$$reg), as_FloatRegister($tmp$$reg), 0);
|
||||
} else {
|
||||
__ sve_cmp(Assembler::NE, as_PRegister($dst$$reg), size, ptrue, as_FloatRegister($tmp$$reg), 0);
|
||||
}
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl
|
||||
// maskAll
|
||||
// maskAll (full or partial predicate size)
|
||||
MASKALL_IMM(I, B/H/S)
|
||||
MASKALL(I, B/H/S)
|
||||
MASKALL_IMM(L, D)
|
||||
@@ -736,6 +745,32 @@ VECTOR_NOT(I, B/H/S)
|
||||
VECTOR_NOT(L, D)
|
||||
undefine(MATCH_RULE)
|
||||
dnl
|
||||
// vector not - predicated
|
||||
dnl
|
||||
define(`MATCH_RULE', `ifelse($1, I,
|
||||
`match(Set dst (XorV (Binary src (ReplicateB m1)) pg));
|
||||
match(Set dst (XorV (Binary src (ReplicateS m1)) pg));
|
||||
match(Set dst (XorV (Binary src (ReplicateI m1)) pg));',
|
||||
`match(Set dst (XorV (Binary src (ReplicateL m1)) pg));')')dnl
|
||||
dnl
|
||||
define(`VECTOR_NOT_PREDICATE', `
|
||||
instruct vnot$1_masked`'(vReg dst, vReg src, imm$1_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
MATCH_RULE($1)
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_not $dst, $pg, $src\t# vector (sve) $2" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_not(as_FloatRegister($dst$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl $1, $2
|
||||
VECTOR_NOT_PREDICATE(I, B/H/S)
|
||||
VECTOR_NOT_PREDICATE(L, D)
|
||||
undefine(MATCH_RULE)
|
||||
dnl
|
||||
// vector and_not
|
||||
dnl
|
||||
define(`MATCH_RULE', `ifelse($1, I,
|
||||
@@ -762,6 +797,32 @@ VECTOR_AND_NOT(I, B/H/S)
|
||||
VECTOR_AND_NOT(L, D)
|
||||
undefine(MATCH_RULE)
|
||||
dnl
|
||||
// vector and_not - predicated
|
||||
dnl
|
||||
define(`MATCH_RULE', `ifelse($1, I,
|
||||
`match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateB m1))) pg));
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateS m1))) pg));
|
||||
match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateI m1))) pg));',
|
||||
`match(Set dst_src1 (AndV (Binary dst_src1 (XorV src2 (ReplicateL m1))) pg));')')dnl
|
||||
dnl
|
||||
define(`VECTOR_AND_NOT_PREDICATE', `
|
||||
instruct vand_not$1_masked`'(vReg dst_src1, vReg src2, imm$1_M1 m1, pRegGov pg) %{
|
||||
predicate(UseSVE > 0);
|
||||
MATCH_RULE($1)
|
||||
ins_cost(SVE_COST);
|
||||
format %{ "sve_bic $dst_src1, $pg, $dst_src1, $src2\t# vector (sve) $2" %}
|
||||
ins_encode %{
|
||||
BasicType bt = Matcher::vector_element_basic_type(this);
|
||||
__ sve_bic(as_FloatRegister($dst_src1$$reg), __ elemType_to_regVariant(bt),
|
||||
as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
%}
|
||||
ins_pipe(pipe_slow);
|
||||
%}')dnl
|
||||
dnl $1, $2
|
||||
VECTOR_AND_NOT_PREDICATE(I, B/H/S)
|
||||
VECTOR_AND_NOT_PREDICATE(L, D)
|
||||
undefine(MATCH_RULE)
|
||||
dnl
|
||||
dnl VDIVF($1, $2 , $3 )
|
||||
dnl VDIVF(name_suffix, size, min_vec_len)
|
||||
define(`VDIVF', `
|
||||
@@ -1807,6 +1868,7 @@ instruct reduce_$1$2_masked($5 dst, $5 src1, vReg src2, pRegGov pg) %{
|
||||
n->in(1)->in(2)->bottom_type()->is_vect()->length_in_bytes() == MaxVectorSize);
|
||||
match(Set dst (translit($1, `m', `M')ReductionV (Binary src1 src2) pg));
|
||||
ins_cost(SVE_COST);
|
||||
effect(TEMP_DEF dst);
|
||||
format %{ "sve_reduce_$1$2 $dst, $src1, $pg, $src2\t# $1$2 reduction predicated (sve)" %}
|
||||
ins_encode %{
|
||||
__ sve_f$1v(as_FloatRegister($dst$$reg), __ $4, as_PRegister($pg$$reg), as_FloatRegister($src2$$reg));
|
||||
@@ -3044,42 +3106,6 @@ dnl $1 $2 $3
|
||||
STRING_INDEXOF_CHAR(L, Latin1, true)
|
||||
STRING_INDEXOF_CHAR(U, UTF16, false)
|
||||
|
||||
// Intrisics for String.compareTo()
|
||||
|
||||
// Note that Z registers alias the corresponding NEON registers, we declare the vector operands of
|
||||
// these string_compare variants as NEON register type for convenience so that the prototype of
|
||||
// string_compare can be shared with all variants.
|
||||
|
||||
dnl
|
||||
define(`STRING_COMPARETO', `
|
||||
instruct string_compare$1_sve(iRegP_R1 str1, iRegI_R2 cnt1, iRegP_R3 str2, iRegI_R4 cnt2,
|
||||
iRegI_R0 result, iRegP_R10 tmp1, iRegL_R11 tmp2,
|
||||
vRegD_V0 vtmp1, vRegD_V1 vtmp2, pRegGov_P0 pgtmp1,
|
||||
pRegGov_P1 pgtmp2, rFlagsReg cr)
|
||||
%{
|
||||
predicate((UseSVE > 0) && (((StrCompNode*)n)->encoding() == StrIntrinsicNode::$1));
|
||||
match(Set result (StrComp (Binary str1 cnt1) (Binary str2 cnt2)));
|
||||
effect(TEMP tmp1, TEMP tmp2, TEMP vtmp1, TEMP vtmp2, TEMP pgtmp1, TEMP pgtmp2,
|
||||
USE_KILL str1, USE_KILL str2, USE_KILL cnt1, USE_KILL cnt2, KILL cr);
|
||||
|
||||
format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # USE sve" %}
|
||||
ins_encode %{
|
||||
// Count is in 8-bit bytes; non-Compact chars are 16 bits.
|
||||
__ string_compare($str1$$Register, $str2$$Register,
|
||||
$cnt1$$Register, $cnt2$$Register, $result$$Register,
|
||||
$tmp1$$Register, $tmp2$$Register,
|
||||
$vtmp1$$FloatRegister, $vtmp2$$FloatRegister, fnoreg,
|
||||
as_PRegister($pgtmp1$$reg), as_PRegister($pgtmp2$$reg),
|
||||
StrIntrinsicNode::$1);
|
||||
%}
|
||||
ins_pipe(pipe_class_memory);
|
||||
%}')dnl
|
||||
dnl $1
|
||||
STRING_COMPARETO(LL)
|
||||
STRING_COMPARETO(LU)
|
||||
STRING_COMPARETO(UL)
|
||||
STRING_COMPARETO(UU)
|
||||
|
||||
// ---------------------------- Vector mask reductions ---------------------------
|
||||
instruct vmask_truecount(iRegINoSp dst, pReg src) %{
|
||||
predicate(UseSVE > 0 &&
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -27,6 +27,7 @@
|
||||
#define CPU_AARCH64_ASSEMBLER_AARCH64_HPP
|
||||
|
||||
#include "asm/register.hpp"
|
||||
#include "metaprogramming/enableIf.hpp"
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
@@ -404,18 +405,11 @@ class Address {
|
||||
: _mode(no_mode) { }
|
||||
Address(Register r)
|
||||
: _base(r), _index(noreg), _offset(0), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, int o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, long long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned int o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
Address(Register r, unsigned long long o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) { }
|
||||
|
||||
template<typename T, ENABLE_IF(std::is_integral<T>::value)>
|
||||
Address(Register r, T o)
|
||||
: _base(r), _index(noreg), _offset(o), _mode(base_plus_offset), _target(0) {}
|
||||
|
||||
Address(Register r, ByteSize disp)
|
||||
: Address(r, in_bytes(disp)) { }
|
||||
Address(Register r, Register r1, extend ext = lsl())
|
||||
@@ -993,33 +987,35 @@ public:
|
||||
rf(rt, 0);
|
||||
}
|
||||
|
||||
void hint(int imm) {
|
||||
system(0b00, 0b011, 0b0010, 0b0000, imm);
|
||||
// Hint instructions
|
||||
|
||||
#define INSN(NAME, crm, op2) \
|
||||
void NAME() { \
|
||||
system(0b00, 0b011, 0b0010, crm, op2); \
|
||||
}
|
||||
|
||||
void nop() {
|
||||
hint(0);
|
||||
}
|
||||
INSN(nop, 0b000, 0b0000);
|
||||
INSN(yield, 0b000, 0b0001);
|
||||
INSN(wfe, 0b000, 0b0010);
|
||||
INSN(wfi, 0b000, 0b0011);
|
||||
INSN(sev, 0b000, 0b0100);
|
||||
INSN(sevl, 0b000, 0b0101);
|
||||
|
||||
void yield() {
|
||||
hint(1);
|
||||
}
|
||||
INSN(autia1716, 0b0001, 0b100);
|
||||
INSN(autiasp, 0b0011, 0b101);
|
||||
INSN(autiaz, 0b0011, 0b100);
|
||||
INSN(autib1716, 0b0001, 0b110);
|
||||
INSN(autibsp, 0b0011, 0b111);
|
||||
INSN(autibz, 0b0011, 0b110);
|
||||
INSN(pacia1716, 0b0001, 0b000);
|
||||
INSN(paciasp, 0b0011, 0b001);
|
||||
INSN(paciaz, 0b0011, 0b000);
|
||||
INSN(pacib1716, 0b0001, 0b010);
|
||||
INSN(pacibsp, 0b0011, 0b011);
|
||||
INSN(pacibz, 0b0011, 0b010);
|
||||
INSN(xpaclri, 0b0000, 0b111);
|
||||
|
||||
void wfe() {
|
||||
hint(2);
|
||||
}
|
||||
|
||||
void wfi() {
|
||||
hint(3);
|
||||
}
|
||||
|
||||
void sev() {
|
||||
hint(4);
|
||||
}
|
||||
|
||||
void sevl() {
|
||||
hint(5);
|
||||
}
|
||||
#undef INSN
|
||||
|
||||
// we only provide mrs and msr for the special purpose system
|
||||
// registers where op1 (instr[20:19]) == 11 and, (currently) only
|
||||
@@ -1105,18 +1101,21 @@ public:
|
||||
}
|
||||
|
||||
// Unconditional branch (register)
|
||||
void branch_reg(Register R, int opc) {
|
||||
|
||||
void branch_reg(int OP, int A, int M, Register RN, Register RM) {
|
||||
starti;
|
||||
f(0b1101011, 31, 25);
|
||||
f(opc, 24, 21);
|
||||
f(0b11111000000, 20, 10);
|
||||
rf(R, 5);
|
||||
f(0b00000, 4, 0);
|
||||
f(OP, 24, 21);
|
||||
f(0b111110000, 20, 12);
|
||||
f(A, 11, 11);
|
||||
f(M, 10, 10);
|
||||
rf(RN, 5);
|
||||
rf(RM, 0);
|
||||
}
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(Register R) { \
|
||||
branch_reg(R, opc); \
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME(Register RN) { \
|
||||
branch_reg(opc, 0, 0, RN, r0); \
|
||||
}
|
||||
|
||||
INSN(br, 0b0000);
|
||||
@@ -1127,14 +1126,48 @@ public:
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME() { \
|
||||
branch_reg(dummy_reg, opc); \
|
||||
#define INSN(NAME, opc) \
|
||||
void NAME() { \
|
||||
branch_reg(opc, 0, 0, dummy_reg, r0); \
|
||||
}
|
||||
|
||||
INSN(eret, 0b0100);
|
||||
INSN(drps, 0b0101);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, M) \
|
||||
void NAME() { \
|
||||
branch_reg(0b0010, 1, M, dummy_reg, dummy_reg); \
|
||||
}
|
||||
|
||||
INSN(retaa, 0);
|
||||
INSN(retab, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, OP, M) \
|
||||
void NAME(Register rn) { \
|
||||
branch_reg(OP, 1, M, rn, dummy_reg); \
|
||||
}
|
||||
|
||||
INSN(braaz, 0b0000, 0);
|
||||
INSN(brabz, 0b0000, 1);
|
||||
INSN(blraaz, 0b0001, 0);
|
||||
INSN(blrabz, 0b0001, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, OP, M) \
|
||||
void NAME(Register rn, Register rm) { \
|
||||
branch_reg(OP, 1, M, rn, rm); \
|
||||
}
|
||||
|
||||
INSN(braa, 0b1000, 0);
|
||||
INSN(brab, 0b1000, 1);
|
||||
INSN(blraa, 0b1001, 0);
|
||||
INSN(blrab, 0b1001, 1);
|
||||
|
||||
#undef INSN
|
||||
|
||||
// Load/store exclusive
|
||||
@@ -1726,7 +1759,7 @@ void mvnw(Register Rd, Register Rm,
|
||||
|
||||
#define INSN(NAME, op) \
|
||||
void NAME(Register Rn, Register Rm, int imm, Condition cond) { \
|
||||
int regNumber = (Rm == zr ? 31 : (uintptr_t)Rm); \
|
||||
int regNumber = (Rm == zr ? 31 : Rm->encoding()); \
|
||||
conditional_compare(op, 0, 0, 0, Rn, regNumber, imm, cond); \
|
||||
} \
|
||||
\
|
||||
@@ -1798,6 +1831,37 @@ void mvnw(Register Rd, Register Rm,
|
||||
INSN(clz, 0b110, 0b00000, 0b00100);
|
||||
INSN(cls, 0b110, 0b00000, 0b00101);
|
||||
|
||||
// PAC instructions
|
||||
INSN(pacia, 0b110, 0b00001, 0b00000);
|
||||
INSN(pacib, 0b110, 0b00001, 0b00001);
|
||||
INSN(pacda, 0b110, 0b00001, 0b00010);
|
||||
INSN(pacdb, 0b110, 0b00001, 0b00011);
|
||||
INSN(autia, 0b110, 0b00001, 0b00100);
|
||||
INSN(autib, 0b110, 0b00001, 0b00101);
|
||||
INSN(autda, 0b110, 0b00001, 0b00110);
|
||||
INSN(autdb, 0b110, 0b00001, 0b00111);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, op29, opcode2, opcode) \
|
||||
void NAME(Register Rd) { \
|
||||
starti; \
|
||||
f(opcode2, 20, 16); \
|
||||
data_processing(current_insn, op29, opcode, Rd, dummy_reg); \
|
||||
}
|
||||
|
||||
// PAC instructions (with zero modifier)
|
||||
INSN(paciza, 0b110, 0b00001, 0b01000);
|
||||
INSN(pacizb, 0b110, 0b00001, 0b01001);
|
||||
INSN(pacdza, 0b110, 0b00001, 0b01010);
|
||||
INSN(pacdzb, 0b110, 0b00001, 0b01011);
|
||||
INSN(autiza, 0b110, 0b00001, 0b01100);
|
||||
INSN(autizb, 0b110, 0b00001, 0b01101);
|
||||
INSN(autdza, 0b110, 0b00001, 0b01110);
|
||||
INSN(autdzb, 0b110, 0b00001, 0b01111);
|
||||
INSN(xpaci, 0b110, 0b00001, 0b10000);
|
||||
INSN(xpacd, 0b110, 0b00001, 0b10001);
|
||||
|
||||
#undef INSN
|
||||
|
||||
// (2 sources)
|
||||
@@ -2424,6 +2488,12 @@ public:
|
||||
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
|
||||
// Zero compare.
|
||||
INSN(cmeq, 0, 0b100000100110, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmge, 1, 0b100000100010, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmgt, 0, 0b100000100010, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmle, 1, 0b100000100110, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
INSN(cmlt, 0, 0b100000101010, 3); // accepted arrangements: T8B, T16B, T4H, T8H, T2S, T4S, T2D
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -3045,6 +3115,7 @@ public:
|
||||
INSN(sve_and, 0b00000100, 0b011010000); // vector and
|
||||
INSN(sve_andv, 0b00000100, 0b011010001); // bitwise and reduction to scalar
|
||||
INSN(sve_asr, 0b00000100, 0b010000100); // vector arithmetic shift right
|
||||
INSN(sve_bic, 0b00000100, 0b011011000); // vector bitwise clear
|
||||
INSN(sve_cnt, 0b00000100, 0b011010101); // count non-zero bits
|
||||
INSN(sve_cpy, 0b00000101, 0b100000100); // copy scalar to each active vector element
|
||||
INSN(sve_eor, 0b00000100, 0b011001000); // vector eor
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2022, 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.
|
||||
*
|
||||
@@ -26,7 +26,7 @@
|
||||
#ifndef CPU_AARCH64_BYTES_AARCH64_HPP
|
||||
#define CPU_AARCH64_BYTES_AARCH64_HPP
|
||||
|
||||
#include "memory/allocation.hpp"
|
||||
#include "memory/allStatic.hpp"
|
||||
|
||||
class Bytes: AllStatic {
|
||||
public:
|
||||
|
||||
@@ -148,7 +148,7 @@ LIR_Address* LIRGenerator::generate_address(LIR_Opr base, LIR_Opr index,
|
||||
if (index->is_constant()) {
|
||||
LIR_Const *constant = index->as_constant_ptr();
|
||||
if (constant->type() == T_INT) {
|
||||
large_disp += index->as_jint() << shift;
|
||||
large_disp += ((intx)index->as_jint()) << shift;
|
||||
} else {
|
||||
assert(constant->type() == T_LONG, "should be");
|
||||
jlong c = index->as_jlong() << shift;
|
||||
@@ -194,7 +194,7 @@ LIR_Address* LIRGenerator::generate_address(LIR_Opr base, LIR_Opr index,
|
||||
if (large_disp == 0 && index->is_register()) {
|
||||
return new LIR_Address(base, index, type);
|
||||
} else {
|
||||
assert(Address::offset_ok_for_immed(large_disp, 0), "must be");
|
||||
assert(Address::offset_ok_for_immed(large_disp, shift), "failed for large_disp: " INTPTR_FORMAT " and shift %d", large_disp, shift);
|
||||
return new LIR_Address(base, large_disp, type);
|
||||
}
|
||||
}
|
||||
@@ -204,24 +204,7 @@ LIR_Address* LIRGenerator::emit_array_address(LIR_Opr array_opr, LIR_Opr index_o
|
||||
int offset_in_bytes = arrayOopDesc::base_offset_in_bytes(type);
|
||||
int elem_size = type2aelembytes(type);
|
||||
int shift = exact_log2(elem_size);
|
||||
|
||||
LIR_Address* addr;
|
||||
if (index_opr->is_constant()) {
|
||||
addr = new LIR_Address(array_opr,
|
||||
offset_in_bytes + (intx)(index_opr->as_jint()) * elem_size, type);
|
||||
} else {
|
||||
if (offset_in_bytes) {
|
||||
LIR_Opr tmp = new_pointer_register();
|
||||
__ add(array_opr, LIR_OprFact::intConst(offset_in_bytes), tmp);
|
||||
array_opr = tmp;
|
||||
offset_in_bytes = 0;
|
||||
}
|
||||
addr = new LIR_Address(array_opr,
|
||||
index_opr,
|
||||
LIR_Address::scale(type),
|
||||
offset_in_bytes, type);
|
||||
}
|
||||
return addr;
|
||||
return generate_address(array_opr, index_opr, shift, offset_in_bytes, type);
|
||||
}
|
||||
|
||||
LIR_Opr LIRGenerator::load_immediate(int x, BasicType type) {
|
||||
|
||||
@@ -304,7 +304,7 @@ void C1_MacroAssembler::remove_frame(int framesize) {
|
||||
}
|
||||
|
||||
|
||||
void C1_MacroAssembler::verified_entry() {
|
||||
void C1_MacroAssembler::verified_entry(bool breakAtEntry) {
|
||||
// If we have to make this method not-entrant we'll overwrite its
|
||||
// first instruction with a jump. For this action to be legal we
|
||||
// must ensure that this first instruction is a B, BL, NOP, BKPT,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -385,6 +385,7 @@ OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
|
||||
|
||||
// load issuing PC (the return address for this stub) into r3
|
||||
__ ldr(exception_pc, Address(rfp, 1*BytesPerWord));
|
||||
__ authenticate_return_address(exception_pc, rscratch1);
|
||||
|
||||
// make sure that the vm_results are cleared (may be unnecessary)
|
||||
__ str(zr, Address(rthread, JavaThread::vm_result_offset()));
|
||||
@@ -433,6 +434,7 @@ OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
|
||||
__ str(exception_pc, Address(rthread, JavaThread::exception_pc_offset()));
|
||||
|
||||
// patch throwing pc into return address (has bci & oop map)
|
||||
__ protect_return_address(exception_pc, rscratch1);
|
||||
__ str(exception_pc, Address(rfp, 1*BytesPerWord));
|
||||
|
||||
// compute the exception handler.
|
||||
@@ -448,6 +450,7 @@ OopMapSet* Runtime1::generate_handle_exception(StubID id, StubAssembler *sasm) {
|
||||
__ invalidate_registers(false, true, true, true, true, true);
|
||||
|
||||
// patch the return address, this stub will directly return to the exception handler
|
||||
__ protect_return_address(r0, rscratch1);
|
||||
__ str(r0, Address(rfp, 1*BytesPerWord));
|
||||
|
||||
switch (id) {
|
||||
@@ -496,10 +499,12 @@ void Runtime1::generate_unwind_exception(StubAssembler *sasm) {
|
||||
// Save our return address because
|
||||
// exception_handler_for_return_address will destroy it. We also
|
||||
// save exception_oop
|
||||
__ mov(r3, lr);
|
||||
__ protect_return_address();
|
||||
__ stp(lr, exception_oop, Address(__ pre(sp, -2 * wordSize)));
|
||||
|
||||
// search the exception handler address of the caller (using the return address)
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), rthread, lr);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), rthread, r3);
|
||||
// r0: exception handler address of the caller
|
||||
|
||||
// Only R0 is valid at this time; all other registers have been
|
||||
@@ -512,6 +517,7 @@ void Runtime1::generate_unwind_exception(StubAssembler *sasm) {
|
||||
// get throwing pc (= return address).
|
||||
// lr has been destroyed by the call
|
||||
__ ldp(lr, exception_oop, Address(__ post(sp, 2 * wordSize)));
|
||||
__ authenticate_return_address();
|
||||
__ mov(r3, lr);
|
||||
|
||||
__ verify_not_null_oop(exception_oop);
|
||||
|
||||
@@ -676,8 +676,7 @@ void C2_MacroAssembler::stringL_indexof_char(Register str1, Register cnt1,
|
||||
// Compare strings.
|
||||
void C2_MacroAssembler::string_compare(Register str1, Register str2,
|
||||
Register cnt1, Register cnt2, Register result, Register tmp1, Register tmp2,
|
||||
FloatRegister vtmp1, FloatRegister vtmp2, FloatRegister vtmp3,
|
||||
PRegister pgtmp1, PRegister pgtmp2, int ae) {
|
||||
FloatRegister vtmp1, FloatRegister vtmp2, FloatRegister vtmp3, int ae) {
|
||||
Label DONE, SHORT_LOOP, SHORT_STRING, SHORT_LAST, TAIL, STUB,
|
||||
DIFF, NEXT_WORD, SHORT_LOOP_TAIL, SHORT_LAST2, SHORT_LAST_INIT,
|
||||
SHORT_LOOP_START, TAIL_CHECK;
|
||||
@@ -1232,3 +1231,39 @@ void C2_MacroAssembler::sve_reduce_integral(int opc, Register dst, BasicType bt,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set elements of the dst predicate to true if the element number is
|
||||
// in the range of [0, lane_cnt), or to false otherwise.
|
||||
void C2_MacroAssembler::sve_ptrue_lanecnt(PRegister dst, SIMD_RegVariant size, int lane_cnt) {
|
||||
assert(size != Q, "invalid size");
|
||||
switch(lane_cnt) {
|
||||
case 1: /* VL1 */
|
||||
case 2: /* VL2 */
|
||||
case 3: /* VL3 */
|
||||
case 4: /* VL4 */
|
||||
case 5: /* VL5 */
|
||||
case 6: /* VL6 */
|
||||
case 7: /* VL7 */
|
||||
case 8: /* VL8 */
|
||||
sve_ptrue(dst, size, lane_cnt);
|
||||
break;
|
||||
case 16:
|
||||
sve_ptrue(dst, size, /* VL16 */ 0b01001);
|
||||
break;
|
||||
case 32:
|
||||
sve_ptrue(dst, size, /* VL32 */ 0b01010);
|
||||
break;
|
||||
case 64:
|
||||
sve_ptrue(dst, size, /* VL64 */ 0b01011);
|
||||
break;
|
||||
case 128:
|
||||
sve_ptrue(dst, size, /* VL128 */ 0b01100);
|
||||
break;
|
||||
case 256:
|
||||
sve_ptrue(dst, size, /* VL256 */ 0b01101);
|
||||
break;
|
||||
default:
|
||||
assert(false, "unsupported");
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,8 +32,7 @@
|
||||
void string_compare(Register str1, Register str2,
|
||||
Register cnt1, Register cnt2, Register result,
|
||||
Register tmp1, Register tmp2, FloatRegister vtmp1,
|
||||
FloatRegister vtmp2, FloatRegister vtmp3,
|
||||
PRegister pgtmp1, PRegister pgtmp2, int ae);
|
||||
FloatRegister vtmp2, FloatRegister vtmp3, int ae);
|
||||
|
||||
void string_indexof(Register str1, Register str2,
|
||||
Register cnt1, Register cnt2,
|
||||
@@ -88,6 +87,10 @@
|
||||
void sve_reduce_integral(int opc, Register dst, BasicType bt, Register src1,
|
||||
FloatRegister src2, PRegister pg, FloatRegister tmp);
|
||||
|
||||
// Set elements of the dst predicate to true if the element number is
|
||||
// in the range of [0, lane_cnt), or to false otherwise.
|
||||
void sve_ptrue_lanecnt(PRegister dst, SIMD_RegVariant size, int lane_cnt);
|
||||
|
||||
// Generate predicate through whilelo, by comparing ZR with an unsigned
|
||||
// immediate. rscratch1 will be clobbered.
|
||||
inline void sve_whilelo_zr_imm(PRegister pd, SIMD_RegVariant size, uint imm) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2022, 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.
|
||||
*
|
||||
@@ -52,4 +52,166 @@ static void pd_zero_to_bytes(void* to, size_t count) {
|
||||
(void)memset(to, 0, count);
|
||||
}
|
||||
|
||||
#ifndef _WINDOWS
|
||||
|
||||
#define COPY_SMALL(from, to, count) \
|
||||
{ \
|
||||
long tmp0, tmp1, tmp2, tmp3; \
|
||||
long tmp4, tmp5, tmp6, tmp7; \
|
||||
__asm volatile( \
|
||||
" adr %[t0], 0f;\n" \
|
||||
" add %[t0], %[t0], %[cnt], lsl #5;\n" \
|
||||
" br %[t0];\n" \
|
||||
" .align 5;\n" \
|
||||
"0:" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldr %[t0], [%[s], #0];\n" \
|
||||
" str %[t0], [%[d], #0];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" ldr %[t2], [%[s], #16];\n" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" str %[t2], [%[d], #16];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" ldp %[t2], %[t3], [%[s], #16];\n" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" stp %[t2], %[t3], [%[d], #16];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" ldp %[t2], %[t3], [%[s], #16];\n" \
|
||||
" ldr %[t4], [%[s], #32];\n" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" stp %[t2], %[t3], [%[d], #16];\n" \
|
||||
" str %[t4], [%[d], #32];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" ldp %[t2], %[t3], [%[s], #16];\n" \
|
||||
" ldp %[t4], %[t5], [%[s], #32];\n" \
|
||||
"2:" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" stp %[t2], %[t3], [%[d], #16];\n" \
|
||||
" stp %[t4], %[t5], [%[d], #32];\n" \
|
||||
" b 1f;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldr %[t6], [%[s], #0];\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #8];\n" \
|
||||
" ldp %[t2], %[t3], [%[s], #24];\n" \
|
||||
" ldp %[t4], %[t5], [%[s], #40];\n" \
|
||||
" str %[t6], [%[d]], #8;\n" \
|
||||
" b 2b;\n" \
|
||||
" .align 5;\n" \
|
||||
" ldp %[t0], %[t1], [%[s], #0];\n" \
|
||||
" ldp %[t2], %[t3], [%[s], #16];\n" \
|
||||
" ldp %[t4], %[t5], [%[s], #32];\n" \
|
||||
" ldp %[t6], %[t7], [%[s], #48];\n" \
|
||||
" stp %[t0], %[t1], [%[d], #0];\n" \
|
||||
" stp %[t2], %[t3], [%[d], #16];\n" \
|
||||
" stp %[t4], %[t5], [%[d], #32];\n" \
|
||||
" stp %[t6], %[t7], [%[d], #48];\n" \
|
||||
"1:" \
|
||||
\
|
||||
: [s]"+r"(from), [d]"+r"(to), [cnt]"+r"(count), \
|
||||
[t0]"=&r"(tmp0), [t1]"=&r"(tmp1), [t2]"=&r"(tmp2), [t3]"=&r"(tmp3), \
|
||||
[t4]"=&r"(tmp4), [t5]"=&r"(tmp5), [t6]"=&r"(tmp6), [t7]"=&r"(tmp7) \
|
||||
: \
|
||||
: "memory", "cc"); \
|
||||
}
|
||||
|
||||
static void pd_conjoint_words(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
__asm volatile( "prfm pldl1strm, [%[s], #0];" :: [s]"r"(from) : "memory");
|
||||
if (__builtin_expect(count <= 8, 1)) {
|
||||
COPY_SMALL(from, to, count);
|
||||
return;
|
||||
}
|
||||
_Copy_conjoint_words(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_disjoint_words(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
if (__builtin_constant_p(count)) {
|
||||
memcpy(to, from, count * sizeof(HeapWord));
|
||||
return;
|
||||
}
|
||||
__asm volatile( "prfm pldl1strm, [%[s], #0];" :: [s]"r"(from) : "memory");
|
||||
if (__builtin_expect(count <= 8, 1)) {
|
||||
COPY_SMALL(from, to, count);
|
||||
return;
|
||||
}
|
||||
_Copy_disjoint_words(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_disjoint_words_atomic(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
__asm volatile( "prfm pldl1strm, [%[s], #0];" :: [s]"r"(from) : "memory");
|
||||
if (__builtin_expect(count <= 8, 1)) {
|
||||
COPY_SMALL(from, to, count);
|
||||
return;
|
||||
}
|
||||
_Copy_disjoint_words(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_aligned_conjoint_words(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
pd_conjoint_words(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_aligned_disjoint_words(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
pd_disjoint_words(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_bytes(const void* from, void* to, size_t count) {
|
||||
(void)memmove(to, from, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_bytes_atomic(const void* from, void* to, size_t count) {
|
||||
pd_conjoint_bytes(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_jshorts_atomic(const jshort* from, jshort* to, size_t count) {
|
||||
_Copy_conjoint_jshorts_atomic(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_jints_atomic(const jint* from, jint* to, size_t count) {
|
||||
_Copy_conjoint_jints_atomic(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_jlongs_atomic(const jlong* from, jlong* to, size_t count) {
|
||||
_Copy_conjoint_jlongs_atomic(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_conjoint_oops_atomic(const oop* from, oop* to, size_t count) {
|
||||
assert(BytesPerLong == BytesPerOop, "jlongs and oops must be the same size");
|
||||
_Copy_conjoint_jlongs_atomic((const jlong*)from, (jlong*)to, count);
|
||||
}
|
||||
|
||||
static void pd_arrayof_conjoint_bytes(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
_Copy_arrayof_conjoint_bytes(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_arrayof_conjoint_jshorts(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
_Copy_arrayof_conjoint_jshorts(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_arrayof_conjoint_jints(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
_Copy_arrayof_conjoint_jints(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_arrayof_conjoint_jlongs(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
_Copy_arrayof_conjoint_jlongs(from, to, count);
|
||||
}
|
||||
|
||||
static void pd_arrayof_conjoint_oops(const HeapWord* from, HeapWord* to, size_t count) {
|
||||
assert(!UseCompressedOops, "foo!");
|
||||
assert(BytesPerLong == BytesPerOop, "jlongs and oops must be the same size");
|
||||
_Copy_arrayof_conjoint_jlongs(from, to, count);
|
||||
}
|
||||
#endif // _WINDOWS
|
||||
|
||||
#endif // CPU_AARCH64_COPY_AARCH64_HPP
|
||||
|
||||
@@ -45,7 +45,7 @@ bool ABIDescriptor::is_volatile_reg(FloatRegister reg) const {
|
||||
const ABIDescriptor ForeignGlobals::parse_abi_descriptor_impl(jobject jabi) const {
|
||||
oop abi_oop = JNIHandles::resolve_non_null(jabi);
|
||||
ABIDescriptor abi;
|
||||
const Register (*to_Register)(int) = as_Register;
|
||||
constexpr Register (*to_Register)(int) = as_Register;
|
||||
|
||||
objArrayOop inputStorage = cast<objArrayOop>(abi_oop->obj_field(ABI.inputStorage_offset));
|
||||
loadArray(inputStorage, INTEGER_TYPE, abi._integer_argument_registers, to_Register);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -128,13 +128,13 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sender_pc = (address) this->fp()[return_addr_offset];
|
||||
// for interpreted frames, the value below is the sender "raw" sp,
|
||||
// which can be different from the sender unextended sp (the sp seen
|
||||
// by the sender) because of current frame local variables
|
||||
sender_sp = (intptr_t*) addr_at(sender_sp_offset);
|
||||
sender_unextended_sp = (intptr_t*) this->fp()[interpreter_frame_sender_sp_offset];
|
||||
saved_fp = (intptr_t*) this->fp()[link_offset];
|
||||
sender_pc = pauth_strip_verifiable((address) this->fp()[return_addr_offset], (address)saved_fp);
|
||||
|
||||
} else {
|
||||
// must be some sort of compiled/runtime frame
|
||||
@@ -151,9 +151,9 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
||||
return false;
|
||||
}
|
||||
sender_unextended_sp = sender_sp;
|
||||
sender_pc = (address) *(sender_sp-1);
|
||||
// Note: frame::sender_sp_offset is only valid for compiled frame
|
||||
saved_fp = (intptr_t*) *(sender_sp - frame::sender_sp_offset);
|
||||
sender_pc = pauth_strip_verifiable((address) *(sender_sp-1), (address)saved_fp);
|
||||
}
|
||||
|
||||
|
||||
@@ -268,17 +268,22 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
||||
void frame::patch_pc(Thread* thread, address pc) {
|
||||
assert(_cb == CodeCache::find_blob(pc), "unexpected pc");
|
||||
address* pc_addr = &(((address*) sp())[-1]);
|
||||
address signing_sp = (((address*) sp())[-2]);
|
||||
address signed_pc = pauth_sign_return_address(pc, (address)signing_sp);
|
||||
address pc_old = pauth_strip_verifiable(*pc_addr, (address)signing_sp);
|
||||
if (TracePcPatching) {
|
||||
tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "]",
|
||||
p2i(pc_addr), p2i(*pc_addr), p2i(pc));
|
||||
tty->print("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "]",
|
||||
p2i(pc_addr), p2i(pc_old), p2i(pc));
|
||||
if (VM_Version::use_rop_protection()) {
|
||||
tty->print(" [signed " INTPTR_FORMAT " -> " INTPTR_FORMAT "]", p2i(*pc_addr), p2i(signed_pc));
|
||||
}
|
||||
tty->print_cr("");
|
||||
}
|
||||
|
||||
// Only generated code frames should be patched, therefore the return address will not be signed.
|
||||
assert(pauth_ptr_is_raw(*pc_addr), "cannot be signed");
|
||||
// Either the return address is the original one or we are going to
|
||||
// patch in the same address that's already there.
|
||||
assert(_pc == *pc_addr || pc == *pc_addr, "must be");
|
||||
*pc_addr = pc;
|
||||
assert(_pc == pc_old || pc == pc_old, "must be");
|
||||
*pc_addr = signed_pc;
|
||||
address original_pc = CompiledMethod::get_deopt_original_pc(this);
|
||||
if (original_pc != NULL) {
|
||||
assert(original_pc == _pc, "expected original PC to be stored before patching");
|
||||
@@ -358,6 +363,7 @@ frame frame::sender_for_entry_frame(RegisterMap* map) const {
|
||||
assert(map->include_argument_oops(), "should be set by clear");
|
||||
vmassert(jfa->last_Java_pc() != NULL, "not walkable");
|
||||
frame fr(jfa->last_Java_sp(), jfa->last_Java_fp(), jfa->last_Java_pc());
|
||||
fr.set_sp_is_trusted();
|
||||
|
||||
return fr;
|
||||
}
|
||||
@@ -454,25 +460,36 @@ frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
|
||||
}
|
||||
#endif // COMPILER2_OR_JVMCI
|
||||
|
||||
// Use the raw version of pc - the interpreter should not have signed it.
|
||||
// For ROP protection, Interpreter will have signed the sender_pc, but there is no requirement to authenticate it here.
|
||||
address sender_pc = pauth_strip_verifiable(sender_pc_maybe_signed(), (address)link());
|
||||
|
||||
return frame(sender_sp, unextended_sp, link(), sender_pc_maybe_signed());
|
||||
return frame(sender_sp, unextended_sp, link(), sender_pc);
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// frame::sender_for_compiled_frame
|
||||
frame frame::sender_for_compiled_frame(RegisterMap* map) const {
|
||||
// we cannot rely upon the last fp having been saved to the thread
|
||||
// in C2 code but it will have been pushed onto the stack. so we
|
||||
// have to find it relative to the unextended sp
|
||||
// When the sp of a compiled frame is correct, we can get the correct sender sp
|
||||
// by unextended sp + frame size.
|
||||
// For the following two scenarios, the sp of a compiled frame is correct:
|
||||
// a) This compiled frame is built from the anchor.
|
||||
// b) This compiled frame is built from a callee frame, and the callee frame can
|
||||
// calculate its sp correctly.
|
||||
//
|
||||
// For b), if the callee frame is a native code frame (such as leaf call), the sp of
|
||||
// the compiled frame cannot be calculated correctly. There is currently no suitable
|
||||
// solution to solve this problem perfectly. But when PreserveFramePointer is enabled,
|
||||
// we can get the correct sender sp by fp + 2 (that is sender_sp()).
|
||||
|
||||
assert(_cb->frame_size() >= 0, "must have non-zero frame size");
|
||||
intptr_t* l_sender_sp = unextended_sp() + _cb->frame_size();
|
||||
intptr_t* l_sender_sp = (!PreserveFramePointer || _sp_is_trusted) ? unextended_sp() + _cb->frame_size()
|
||||
: sender_sp();
|
||||
intptr_t* unextended_sp = l_sender_sp;
|
||||
|
||||
// the return_address is always the word on the stack
|
||||
address sender_pc = (address) *(l_sender_sp-1);
|
||||
|
||||
// For ROP protection, C1/C2 will have signed the sender_pc, but there is no requirement to authenticate it here.
|
||||
address sender_pc = pauth_strip_verifiable((address) *(l_sender_sp-1), (address) *(l_sender_sp-2));
|
||||
|
||||
intptr_t** saved_fp_addr = (intptr_t**) (l_sender_sp - frame::sender_sp_offset);
|
||||
|
||||
@@ -520,6 +537,9 @@ frame frame::sender_raw(RegisterMap* map) const {
|
||||
// Must be native-compiled frame, i.e. the marshaling code for native
|
||||
// methods that exists in the core system.
|
||||
|
||||
// Native code may or may not have signed the return address, we have no way to be sure or what
|
||||
// signing methods they used. Instead, just ensure the stripped value is used.
|
||||
|
||||
return frame(sender_sp(), link(), sender_pc());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2022, 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.
|
||||
*
|
||||
@@ -124,6 +124,11 @@
|
||||
intptr_t* _unextended_sp;
|
||||
void adjust_unextended_sp();
|
||||
|
||||
// true means _sp value is correct and we can use it to get the sender's sp
|
||||
// of the compiled frame, otherwise, _sp value may be invalid and we can use
|
||||
// _fp to get the sender's sp if PreserveFramePointer is enabled.
|
||||
bool _sp_is_trusted;
|
||||
|
||||
intptr_t* ptr_at_addr(int offset) const {
|
||||
return (intptr_t*) addr_at(offset);
|
||||
}
|
||||
@@ -165,4 +170,6 @@
|
||||
// returns the sending frame, without applying any barriers
|
||||
frame sender_raw(RegisterMap* map) const;
|
||||
|
||||
void set_sp_is_trusted() { _sp_is_trusted = true; }
|
||||
|
||||
#endif // CPU_AARCH64_FRAME_AARCH64_HPP
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2022, 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.
|
||||
*
|
||||
@@ -41,6 +41,7 @@ inline frame::frame() {
|
||||
_fp = NULL;
|
||||
_cb = NULL;
|
||||
_deopt_state = unknown;
|
||||
_sp_is_trusted = false;
|
||||
}
|
||||
|
||||
static int spin;
|
||||
@@ -64,6 +65,7 @@ inline void frame::init(intptr_t* sp, intptr_t* fp, address pc) {
|
||||
} else {
|
||||
_deopt_state = not_deoptimized;
|
||||
}
|
||||
_sp_is_trusted = false;
|
||||
}
|
||||
|
||||
inline frame::frame(intptr_t* sp, intptr_t* fp, address pc) {
|
||||
@@ -91,6 +93,7 @@ inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address
|
||||
} else {
|
||||
_deopt_state = not_deoptimized;
|
||||
}
|
||||
_sp_is_trusted = false;
|
||||
}
|
||||
|
||||
inline frame::frame(intptr_t* sp, intptr_t* fp) {
|
||||
@@ -122,6 +125,7 @@ inline frame::frame(intptr_t* sp, intptr_t* fp) {
|
||||
} else {
|
||||
_deopt_state = not_deoptimized;
|
||||
}
|
||||
_sp_is_trusted = false;
|
||||
}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2022, 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
|
||||
@@ -271,7 +271,7 @@ void G1BarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorator
|
||||
ModRefBarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
|
||||
if (on_oop && on_reference) {
|
||||
// LR is live. It must be saved around calls.
|
||||
__ enter(); // barrier may call runtime
|
||||
__ enter(/*strip_ret_addr*/true); // barrier may call runtime
|
||||
// Generate the G1 pre-barrier code to log the value of
|
||||
// the referent field in an SATB buffer.
|
||||
g1_write_barrier_pre(masm /* masm */,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2021, Red Hat, Inc. All rights reserved.
|
||||
* Copyright (c) 2018, 2022, 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
|
||||
@@ -237,7 +237,7 @@ void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm,
|
||||
bool is_narrow = UseCompressedOops && !is_native;
|
||||
|
||||
Label heap_stable, not_cset;
|
||||
__ enter();
|
||||
__ enter(/*strip_ret_addr*/true);
|
||||
Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
|
||||
__ ldrb(rscratch2, gc_state);
|
||||
|
||||
@@ -359,7 +359,7 @@ void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet d
|
||||
|
||||
// 3: apply keep-alive barrier if needed
|
||||
if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) {
|
||||
__ enter();
|
||||
__ enter(/*strip_ret_addr*/true);
|
||||
__ push_call_clobbered_registers();
|
||||
satb_write_barrier_pre(masm /* masm */,
|
||||
noreg /* obj */,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019, 2022, 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,7 +78,7 @@ void ZBarrierSetAssembler::load_at(MacroAssembler* masm,
|
||||
__ tst(dst, rscratch1);
|
||||
__ br(Assembler::EQ, done);
|
||||
|
||||
__ enter();
|
||||
__ enter(/*strip_ret_addr*/true);
|
||||
|
||||
__ push_call_clobbered_registers_except(RegSet::of(dst));
|
||||
|
||||
|
||||
@@ -67,4 +67,6 @@ const bool CCallingConventionRequiresIntsAsLongs = false;
|
||||
#define NOT_R18_RESERVED(code) code
|
||||
#endif
|
||||
|
||||
#define USE_POINTERS_TO_REGISTER_IMPL_ARRAY
|
||||
|
||||
#endif // CPU_AARCH64_GLOBALDEFINITIONS_AARCH64_HPP
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2019, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@@ -118,7 +118,9 @@ define_pd_global(intx, InlineSmallCode, 1000);
|
||||
product(uint, OnSpinWaitInstCount, 1, DIAGNOSTIC, \
|
||||
"The number of OnSpinWaitInst instructions to generate." \
|
||||
"It cannot be used with OnSpinWaitInst=none.") \
|
||||
range(1, 99)
|
||||
range(1, 99) \
|
||||
product(ccstr, UseBranchProtection, "none", \
|
||||
"Branch Protection to use: none, standard, pac-ret") \
|
||||
|
||||
// end of ARCH_FLAGS
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user