mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 17:39:40 +01:00
Compare commits
987 Commits
jbr21.558
...
jdk-11.0.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
95e5e3bd6a | ||
|
|
f44bca89ac | ||
|
|
a2afb491c9 | ||
|
|
7b04967df8 | ||
|
|
59d5657530 | ||
|
|
31321c06a7 | ||
|
|
8a435dba67 | ||
|
|
75fdca8d73 | ||
|
|
3ada936588 | ||
|
|
a0dbc00cd8 | ||
|
|
7b75a5b9fc | ||
|
|
7240b2a8d0 | ||
|
|
98360e1740 | ||
|
|
1a20198485 | ||
|
|
34b4553180 | ||
|
|
b2feed2f8d | ||
|
|
a2b76b4972 | ||
|
|
987b8f11de | ||
|
|
5b78891815 | ||
|
|
c0456d8982 | ||
|
|
07daff84d1 | ||
|
|
6eac440aac | ||
|
|
77a497b363 | ||
|
|
1a811216c3 | ||
|
|
ab9fe43bf4 | ||
|
|
a4052c480f | ||
|
|
bdbdc782d3 | ||
|
|
b7861e3a7b | ||
|
|
de6a742de6 | ||
|
|
ba8d9926a5 | ||
|
|
b01a85466c | ||
|
|
ebc8a88b6f | ||
|
|
11ec35a391 | ||
|
|
5e293a7b4e | ||
|
|
279802157e | ||
|
|
b02cf69157 | ||
|
|
6a30c99083 | ||
|
|
e69cf00d26 | ||
|
|
6534c617a8 | ||
|
|
f7240b2216 | ||
|
|
54f12c90ad | ||
|
|
ebd550ea49 | ||
|
|
537b44caae | ||
|
|
a406184c0a | ||
|
|
148544eb30 | ||
|
|
7d49d41348 | ||
|
|
4aee20c3f4 | ||
|
|
1dc659712b | ||
|
|
01af389aa6 | ||
|
|
4f6059033c | ||
|
|
8b2982f0ad | ||
|
|
acda1a69cf | ||
|
|
7a7d661bed | ||
|
|
17b730d7ed | ||
|
|
fb9547354c | ||
|
|
e32185a8f3 | ||
|
|
829e3910b2 | ||
|
|
a5c903cc86 | ||
|
|
453d95eaf2 | ||
|
|
12cda6f859 | ||
|
|
ec7434772e | ||
|
|
fd06253c5a | ||
|
|
51f5a85889 | ||
|
|
1a8c9f80a3 | ||
|
|
edda072fa0 | ||
|
|
b703e5dd78 | ||
|
|
dce6df62e8 | ||
|
|
d755365584 | ||
|
|
016745c090 | ||
|
|
f358696767 | ||
|
|
c1f3b1633a | ||
|
|
f08fce0ce2 | ||
|
|
fb5d6b216f | ||
|
|
6689de7e99 | ||
|
|
8f8154f371 | ||
|
|
ff1d3ec844 | ||
|
|
2d18e6e508 | ||
|
|
2ee1ae920e | ||
|
|
ece508d8a5 | ||
|
|
465f4053b8 | ||
|
|
45669a96f5 | ||
|
|
76d9f5a540 | ||
|
|
98fa9a2ee4 | ||
|
|
0cd8b5a43f | ||
|
|
f20dfa7d27 | ||
|
|
6b2e057dca | ||
|
|
9cf41e4535 | ||
|
|
78e47c6fff | ||
|
|
c4c43e3d7e | ||
|
|
cfe3e6eb15 | ||
|
|
2860d9a02b | ||
|
|
5c66363623 | ||
|
|
fedaa9ab89 | ||
|
|
8aefcee4c2 | ||
|
|
41045ec69b | ||
|
|
d1840cbc41 | ||
|
|
bbd5e37e98 | ||
|
|
ada37f8865 | ||
|
|
ee5c8390d6 | ||
|
|
390626e595 | ||
|
|
1350471e73 | ||
|
|
cfe1c7dcce | ||
|
|
eb711f1fcd | ||
|
|
057d1205fb | ||
|
|
df14f4a9ab | ||
|
|
a2b2d45431 | ||
|
|
b6e6846cac | ||
|
|
3edab32ada | ||
|
|
d827a1c345 | ||
|
|
bac54a4cfe | ||
|
|
850341c88a | ||
|
|
25c39d2343 | ||
|
|
c429aec72d | ||
|
|
60fd488c60 | ||
|
|
70155458a8 | ||
|
|
698a7e0436 | ||
|
|
956cc99560 | ||
|
|
ec438eb0ac | ||
|
|
2edf7c0ac2 | ||
|
|
b5e81f25a5 | ||
|
|
bfc3a5e954 | ||
|
|
e1d2cf8089 | ||
|
|
a1a7d699f4 | ||
|
|
9b2b726b94 | ||
|
|
33a68193d2 | ||
|
|
30a7af9f21 | ||
|
|
fc2b40683d | ||
|
|
f818e1470b | ||
|
|
357b1e6bd1 | ||
|
|
44e9108a26 | ||
|
|
3aed4d0693 | ||
|
|
466e6a83a8 | ||
|
|
47ec0ae2c2 | ||
|
|
eb894e2223 | ||
|
|
a01bde0a6f | ||
|
|
fbf6a72ee2 | ||
|
|
57ad49c4d0 | ||
|
|
2d85dbcd53 | ||
|
|
1385e36f8e | ||
|
|
8e46ea5003 | ||
|
|
ea326c7614 | ||
|
|
bd44fe92ea | ||
|
|
67b28b9f3f | ||
|
|
ec9f5a760c | ||
|
|
f7c6a658ff | ||
|
|
631f9bb771 | ||
|
|
f60ba45c96 | ||
|
|
64d7738f77 | ||
|
|
ec7c5e490f | ||
|
|
17a5192f27 | ||
|
|
8248f03e14 | ||
|
|
049699c2bb | ||
|
|
982ba3768b | ||
|
|
8d16287e06 | ||
|
|
549ffba973 | ||
|
|
bcd825a03c | ||
|
|
3f2e25139b | ||
|
|
28e92fcd0b | ||
|
|
7f59d683c2 | ||
|
|
7361ffe668 | ||
|
|
26881980fd | ||
|
|
d971f3724f | ||
|
|
53f7e154e2 | ||
|
|
0b5959054c | ||
|
|
471c550cc1 | ||
|
|
543628ec07 | ||
|
|
aa52cdf33d | ||
|
|
d15bd187d7 | ||
|
|
6ec6ec1689 | ||
|
|
50fc42ee87 | ||
|
|
3098692794 | ||
|
|
9f0f08b77a | ||
|
|
22ee1647de | ||
|
|
83f9f132c6 | ||
|
|
11574ae368 | ||
|
|
39cf5a08ef | ||
|
|
72a788d0c0 | ||
|
|
109718ba21 | ||
|
|
fe9374ee2b | ||
|
|
2216dc9bf8 | ||
|
|
f83644417f | ||
|
|
8b7c8ff5ff | ||
|
|
625a5486e6 | ||
|
|
9144b37181 | ||
|
|
9b92162531 | ||
|
|
445b63ecd1 | ||
|
|
aa3d3e8d3c | ||
|
|
4d5d843710 | ||
|
|
b5864240c4 | ||
|
|
02ed470b48 | ||
|
|
8dfd3d4c1f | ||
|
|
47516b1603 | ||
|
|
07d40aa7a4 | ||
|
|
6c62305d40 | ||
|
|
00f98305c5 | ||
|
|
ceef9cae38 | ||
|
|
9d5de827c0 | ||
|
|
03c03164f4 | ||
|
|
77427db89e | ||
|
|
243a6a83ef | ||
|
|
cf6915f3cf | ||
|
|
67cbdaa8a6 | ||
|
|
76b2a11302 | ||
|
|
389fe463c0 | ||
|
|
b4c54f4f99 | ||
|
|
c8e0bb8b22 | ||
|
|
435965a234 | ||
|
|
932bf45167 | ||
|
|
984d057307 | ||
|
|
011a511654 | ||
|
|
898445224d | ||
|
|
81b08de10c | ||
|
|
af080ad7b5 | ||
|
|
ac330454f5 | ||
|
|
38b31b854a | ||
|
|
4a70b29710 | ||
|
|
2e6316e7bb | ||
|
|
ef4e5fca32 | ||
|
|
9130557b48 | ||
|
|
002fcbc7bc | ||
|
|
f12fc3feee | ||
|
|
9f86d458ab | ||
|
|
38e353fff3 | ||
|
|
b160f01b98 | ||
|
|
bcbc76192e | ||
|
|
a49f8c3ddc | ||
|
|
2b2d47d1b3 | ||
|
|
49f747137b | ||
|
|
1ff179efc0 | ||
|
|
d47635ead3 | ||
|
|
fb25b1a150 | ||
|
|
ddba161015 | ||
|
|
79e2b3ac27 | ||
|
|
1517f6155e | ||
|
|
4b51209c1f | ||
|
|
1627b46308 | ||
|
|
6c15394a3d | ||
|
|
5670afc652 | ||
|
|
4f2eb8a326 | ||
|
|
d540af73b4 | ||
|
|
1c097b5439 | ||
|
|
b016dbe56e | ||
|
|
c2957da1ac | ||
|
|
42f4fc5b47 | ||
|
|
aa2aea9c8d | ||
|
|
d67c7591d2 | ||
|
|
cd74cc05f2 | ||
|
|
00d808e715 | ||
|
|
fd4b141b4c | ||
|
|
018ba15afa | ||
|
|
259ae373bb | ||
|
|
e4e694439f | ||
|
|
796d0403a5 | ||
|
|
ae4c82c5a1 | ||
|
|
2ae308bdd7 | ||
|
|
520839330c | ||
|
|
7a29ab4e08 | ||
|
|
b6b80ff205 | ||
|
|
b8073a2f61 | ||
|
|
01bc631404 | ||
|
|
1aa3495b55 | ||
|
|
0d45b5ac48 | ||
|
|
67064bf757 | ||
|
|
314712033f | ||
|
|
e991980263 | ||
|
|
b6aa8b2e10 | ||
|
|
f6afa06ed9 | ||
|
|
1967bf26c1 | ||
|
|
936bc71f72 | ||
|
|
6ffee6a4f5 | ||
|
|
2c5101f826 | ||
|
|
2c6c4d1db5 | ||
|
|
a40bf41724 | ||
|
|
c9f89393f3 | ||
|
|
f6a26303ac | ||
|
|
96708ee512 | ||
|
|
3fa868ddc9 | ||
|
|
cabc6cafc8 | ||
|
|
9f80298e56 | ||
|
|
f46183b5a9 | ||
|
|
e5a735c043 | ||
|
|
a04a0f2e04 | ||
|
|
f7cf4f05a4 | ||
|
|
f6f32311a3 | ||
|
|
77045031c2 | ||
|
|
31cd634282 | ||
|
|
8b362f5c46 | ||
|
|
25f3f676dd | ||
|
|
3a2a0efcd3 | ||
|
|
242c97c8a6 | ||
|
|
2173cac043 | ||
|
|
6dcc974ef5 | ||
|
|
0d8b5c61bd | ||
|
|
385444fa14 | ||
|
|
f8021fedef | ||
|
|
a92e594b47 | ||
|
|
bb5c58434d | ||
|
|
bb87c2edc7 | ||
|
|
2731505a8b | ||
|
|
245d30fcff | ||
|
|
2df83b38cd | ||
|
|
f589eaaeb6 | ||
|
|
b8808fe115 | ||
|
|
c0a78b419f | ||
|
|
9ca74c45a8 | ||
|
|
73ee445621 | ||
|
|
c98b3bc34b | ||
|
|
1c42a83df1 | ||
|
|
d94a8515c1 | ||
|
|
7f40f1fb48 | ||
|
|
f3b8806337 | ||
|
|
a73e8ed106 | ||
|
|
cd02547214 | ||
|
|
9a029d1b7e | ||
|
|
9418d43d5b | ||
|
|
46f6908963 | ||
|
|
641260fb65 | ||
|
|
4dbcd82786 | ||
|
|
f65f8e0b4a | ||
|
|
564d6b0d5c | ||
|
|
41d978e77c | ||
|
|
345e6646ca | ||
|
|
3bb7124715 | ||
|
|
a6a87c9d8a | ||
|
|
10a18340e2 | ||
|
|
f21e1e901a | ||
|
|
18e733678d | ||
|
|
079fb005b6 | ||
|
|
17f235dc46 | ||
|
|
50e223f6fe | ||
|
|
7051d96397 | ||
|
|
bc324f2de4 | ||
|
|
49127c3c1d | ||
|
|
20e622ffdb | ||
|
|
1228e4a081 | ||
|
|
bf61ddd9c6 | ||
|
|
dd7b00b1f0 | ||
|
|
0b3eaf793e | ||
|
|
028e92b50a | ||
|
|
bbf92f6e8b | ||
|
|
91db150f8f | ||
|
|
ba41216f8d | ||
|
|
e26aaf62be | ||
|
|
c4d17e1fba | ||
|
|
dd8dd171e2 | ||
|
|
122d914fbc | ||
|
|
4846f5c744 | ||
|
|
32587d2799 | ||
|
|
fa154f4de6 | ||
|
|
1d4bc1bc20 | ||
|
|
71634ee76b | ||
|
|
4c69fb98ba | ||
|
|
6869ab1cac | ||
|
|
348f9a51ce | ||
|
|
8d883a461d | ||
|
|
5954b5208b | ||
|
|
6b68a63fd7 | ||
|
|
7b8c69d8aa | ||
|
|
a76f3fa5fe | ||
|
|
33100610c6 | ||
|
|
273d5105ba | ||
|
|
fe313744f2 | ||
|
|
77f86fc3a4 | ||
|
|
7fee024445 | ||
|
|
ddbdeddfb5 | ||
|
|
d4f56125f6 | ||
|
|
7246da74f3 | ||
|
|
f29985c321 | ||
|
|
b7ea215e50 | ||
|
|
eba570224c | ||
|
|
9590d79418 | ||
|
|
c7cef22dac | ||
|
|
687cf87bc6 | ||
|
|
804a79997b | ||
|
|
9131ba6835 | ||
|
|
a0559e8fbb | ||
|
|
6e9bddded0 | ||
|
|
f2ae691bf6 | ||
|
|
960c3e2225 | ||
|
|
08a5ae16e0 | ||
|
|
e621883a9f | ||
|
|
72097b06c1 | ||
|
|
63d11a1b82 | ||
|
|
0fe34765d4 | ||
|
|
9e7d7ed5e3 | ||
|
|
296da14d35 | ||
|
|
8c52cd3fee | ||
|
|
2a9234df89 | ||
|
|
9f540020c8 | ||
|
|
f83f5d7779 | ||
|
|
d846107635 | ||
|
|
69491915e6 | ||
|
|
afc71cb8b8 | ||
|
|
666e35f205 | ||
|
|
cd90905c52 | ||
|
|
2f23b8998c | ||
|
|
36c08688f8 | ||
|
|
8518b25018 | ||
|
|
60a752c103 | ||
|
|
ec58029908 | ||
|
|
c265253cf9 | ||
|
|
89520a7433 | ||
|
|
35dec00a12 | ||
|
|
3211c7869e | ||
|
|
a55b1500ac | ||
|
|
4a820480c2 | ||
|
|
ac7c6fa6ab | ||
|
|
bf258a3602 | ||
|
|
f0176771db | ||
|
|
816ea1d566 | ||
|
|
7b87fab419 | ||
|
|
090628e7a1 | ||
|
|
c1c92e26a2 | ||
|
|
fa9e4db056 | ||
|
|
e4a5a3c9d0 | ||
|
|
26e191531a | ||
|
|
65a588e146 | ||
|
|
8d7c24162b | ||
|
|
b6dbf403a5 | ||
|
|
52d5f8acba | ||
|
|
42b85cd4fd | ||
|
|
139b107a44 | ||
|
|
f8ecb3bcee | ||
|
|
970120daeb | ||
|
|
88f143d0bb | ||
|
|
0ff3a8cdf9 | ||
|
|
6ff20ac450 | ||
|
|
934a82d2cf | ||
|
|
87ad4a7793 | ||
|
|
1dc9f02386 | ||
|
|
777bf1d3b8 | ||
|
|
13980a122d | ||
|
|
c37db36aa8 | ||
|
|
9296a1d1d1 | ||
|
|
b48b1a416e | ||
|
|
a2b993caeb | ||
|
|
59173923c7 | ||
|
|
91517bb663 | ||
|
|
278e849bf9 | ||
|
|
80262c1a21 | ||
|
|
74f0225e0d | ||
|
|
188c8c8662 | ||
|
|
3a4a414252 | ||
|
|
8142a7d9ea | ||
|
|
c68a41538f | ||
|
|
667f79dc84 | ||
|
|
bd6f2c5a7b | ||
|
|
d97a2500b7 | ||
|
|
b7cb56bc6f | ||
|
|
242334219e | ||
|
|
709d063972 | ||
|
|
19a1861dc6 | ||
|
|
a044cb6765 | ||
|
|
90a85a8562 | ||
|
|
a433cf3043 | ||
|
|
25a64a5c95 | ||
|
|
3135657b8c | ||
|
|
5783d96313 | ||
|
|
bc51902963 | ||
|
|
7630a17a0e | ||
|
|
ed67ef92eb | ||
|
|
7ba299958a | ||
|
|
6999da7599 | ||
|
|
3de15e37c0 | ||
|
|
fb7b3bd609 | ||
|
|
8b920865dc | ||
|
|
f82eacf737 | ||
|
|
f079bec7b2 | ||
|
|
3165be7550 | ||
|
|
93090558e7 | ||
|
|
b082a90749 | ||
|
|
7885cc86b7 | ||
|
|
25686b7dcf | ||
|
|
95e4e2444f | ||
|
|
6bf924c12d | ||
|
|
750967a822 | ||
|
|
7375cb23b7 | ||
|
|
d94536ac2e | ||
|
|
c44296d0b6 | ||
|
|
7d8031bc89 | ||
|
|
c551a093e5 | ||
|
|
0db1edfa87 | ||
|
|
dfdfc8fce6 | ||
|
|
4d7531f5af | ||
|
|
b8e0ad5317 | ||
|
|
d71125bf58 | ||
|
|
d7094f2afe | ||
|
|
6e7ffef73a | ||
|
|
de754a84d3 | ||
|
|
39a134a69c | ||
|
|
f994c1a279 | ||
|
|
50e01c8d13 | ||
|
|
048287c9c9 | ||
|
|
33c7830fae | ||
|
|
624c2f1398 | ||
|
|
5ce75346a8 | ||
|
|
0783958139 | ||
|
|
77609edb46 | ||
|
|
ccb37773a1 | ||
|
|
d5a9f446c1 | ||
|
|
85e6d59bc0 | ||
|
|
bb80f46971 | ||
|
|
1d4cb00f98 | ||
|
|
c5bdf3d24d | ||
|
|
9774041f24 | ||
|
|
647d35a0d1 | ||
|
|
059773a9d5 | ||
|
|
58d111434e | ||
|
|
2e04916a8d | ||
|
|
cd30755d41 | ||
|
|
b09950913e | ||
|
|
ffd888ae88 | ||
|
|
fd360fb42e | ||
|
|
b2dd2d4401 | ||
|
|
ad0dd5b9c5 | ||
|
|
093a4f2060 | ||
|
|
08690a06f4 | ||
|
|
90c7aa18c4 | ||
|
|
b886a646f9 | ||
|
|
1c2d657499 | ||
|
|
7daae94da9 | ||
|
|
4fbbbf1026 | ||
|
|
d37f6426bd | ||
|
|
f97953fb4a | ||
|
|
822d955678 | ||
|
|
4010b17481 | ||
|
|
e448c92c24 | ||
|
|
ff3ea0e809 | ||
|
|
fd5044b237 | ||
|
|
f3b6c38283 | ||
|
|
3e9539fe20 | ||
|
|
543acd4ecf | ||
|
|
7f05d1a2ec | ||
|
|
0e8b9d4f9e | ||
|
|
4da550196b | ||
|
|
8213572b6e | ||
|
|
bc7c5064b7 | ||
|
|
3b717e0987 | ||
|
|
112378d32a | ||
|
|
4044e1e832 | ||
|
|
a76b533f20 | ||
|
|
a02dd26e8b | ||
|
|
63b51e922d | ||
|
|
2d067cbb4b | ||
|
|
c75bbbde24 | ||
|
|
79cb34f557 | ||
|
|
2470e02984 | ||
|
|
e38458abd9 | ||
|
|
71b0dc5f35 | ||
|
|
ab93f8c97e | ||
|
|
ef32059f6b | ||
|
|
24c616202e | ||
|
|
1d183e8087 | ||
|
|
ca2b32d3c9 | ||
|
|
2112a72aef | ||
|
|
1af07a7094 | ||
|
|
e3723c9817 | ||
|
|
51dc88af65 | ||
|
|
9e05bd661a | ||
|
|
57bb42886c | ||
|
|
546dea854a | ||
|
|
b93bb49f4f | ||
|
|
8244da2934 | ||
|
|
f50ceeafa4 | ||
|
|
0f3122233e | ||
|
|
10f524e416 | ||
|
|
cf67bf411d | ||
|
|
6c6ca6a6b7 | ||
|
|
75214cfe8c | ||
|
|
a701f0d9f2 | ||
|
|
9d70e7040b | ||
|
|
e40f194715 | ||
|
|
e44029ec98 | ||
|
|
ef52d6c224 | ||
|
|
e96bdcbcd5 | ||
|
|
143410c88f | ||
|
|
791c453c22 | ||
|
|
0e8aa012d1 | ||
|
|
b3f4b36847 | ||
|
|
bd23905bb9 | ||
|
|
571de32554 | ||
|
|
9fc3b58483 | ||
|
|
73f5bd5e28 | ||
|
|
59770f3683 | ||
|
|
5e06830120 | ||
|
|
0819bef6f3 | ||
|
|
35d6a546eb | ||
|
|
bc0239c6ec | ||
|
|
0864917e44 | ||
|
|
718875c2a0 | ||
|
|
11f58b066b | ||
|
|
1ec7dbab23 | ||
|
|
2a08c06eea | ||
|
|
3e4a033294 | ||
|
|
4f8dc731e6 | ||
|
|
5bc98172e3 | ||
|
|
9a0ec1951e | ||
|
|
c468ecccc5 | ||
|
|
19b176af8b | ||
|
|
3f5213e31c | ||
|
|
93e528930a | ||
|
|
d07af5bcf5 | ||
|
|
cf0ad85263 | ||
|
|
c7c220f16b | ||
|
|
6e56571959 | ||
|
|
b8881acafa | ||
|
|
248ab60379 | ||
|
|
49c524cc67 | ||
|
|
26d8bdcae5 | ||
|
|
343b407cc2 | ||
|
|
3a857cfdce | ||
|
|
b9c85f33f7 | ||
|
|
406265cab6 | ||
|
|
7f00330f34 | ||
|
|
c95e23be0a | ||
|
|
244856b1dd | ||
|
|
31a53f4bac | ||
|
|
acde53eaac | ||
|
|
84c52dce5a | ||
|
|
b6884d1c5d | ||
|
|
b77ef24efa | ||
|
|
3c44f651ac | ||
|
|
bde8d15e42 | ||
|
|
908cac06de | ||
|
|
a6b8e83529 | ||
|
|
f5359010fc | ||
|
|
bb97eebdba | ||
|
|
dcd68442f5 | ||
|
|
2dc5232e2a | ||
|
|
4d7ddd9e2a | ||
|
|
c89ac41040 | ||
|
|
c12e5a76a5 | ||
|
|
829f37e68e | ||
|
|
364a78ad8b | ||
|
|
0791c4c0d6 | ||
|
|
ce1409f86c | ||
|
|
524f5a9d32 | ||
|
|
75d7c1eb2b | ||
|
|
c2db0f384f | ||
|
|
3ad9cb0290 | ||
|
|
7fdc845c52 | ||
|
|
dd0f8494e9 | ||
|
|
118e0312fc | ||
|
|
81e690b4ef | ||
|
|
b50f8b6023 | ||
|
|
3c5911e714 | ||
|
|
1b74e078b5 | ||
|
|
e45543c23a | ||
|
|
ffd27904be | ||
|
|
8dceed008b | ||
|
|
07a5f4c537 | ||
|
|
6d7449553c | ||
|
|
c1dd160bc8 | ||
|
|
acf2cfdb8f | ||
|
|
5acf946102 | ||
|
|
5dbc1f256b | ||
|
|
66d8b6679e | ||
|
|
565f73bbbc | ||
|
|
6296e110ff | ||
|
|
c23d08bb1c | ||
|
|
10cc1e491c | ||
|
|
3902ecc1ba | ||
|
|
9bb8753635 | ||
|
|
f898486d29 | ||
|
|
55aca0f2d7 | ||
|
|
79cea41ed2 | ||
|
|
e6d27ec718 | ||
|
|
feecbd5dbf | ||
|
|
4cf12330c4 | ||
|
|
944408c6e0 | ||
|
|
33f575c516 | ||
|
|
db32e3bfba | ||
|
|
0eddb97c97 | ||
|
|
ad1cc33c99 | ||
|
|
c6b425d30d | ||
|
|
0b2bccbf87 | ||
|
|
9d003c8c68 | ||
|
|
50d5a7d5ad | ||
|
|
3d4f11e0d7 | ||
|
|
7f12fb1eba | ||
|
|
1c59c60950 | ||
|
|
bc2b7c5456 | ||
|
|
f147274c1f | ||
|
|
c294597f8b | ||
|
|
d4dc93c98b | ||
|
|
f6dfbec0b3 | ||
|
|
6c39ffc5af | ||
|
|
ea817c1f23 | ||
|
|
a1235c3da2 | ||
|
|
79805c79c7 | ||
|
|
c8c4930334 | ||
|
|
a08daa68f1 | ||
|
|
3e548af5fc | ||
|
|
bc2648f73f | ||
|
|
253a875985 | ||
|
|
30dbb823b7 | ||
|
|
c3547743b0 | ||
|
|
a8d0fb8566 | ||
|
|
0638770a93 | ||
|
|
d43261885a | ||
|
|
b69b169587 | ||
|
|
7bab841630 | ||
|
|
23a97bfd12 | ||
|
|
8ad84221e5 | ||
|
|
f0adad8d93 | ||
|
|
2d44d463c1 | ||
|
|
d10134f7a9 | ||
|
|
e91313d8a3 | ||
|
|
f5804d0057 | ||
|
|
3c96669c33 | ||
|
|
54abf19254 | ||
|
|
026ccad425 | ||
|
|
1752c3afb1 | ||
|
|
f79a268c4c | ||
|
|
21243388e4 | ||
|
|
6dff87a9b3 | ||
|
|
e1ad913936 | ||
|
|
7daec7611a | ||
|
|
266d3abf72 | ||
|
|
9bf04626d4 | ||
|
|
6bdfa1ffd2 | ||
|
|
02274ae39f | ||
|
|
ceaa01b050 | ||
|
|
a1a6db9ebf | ||
|
|
9179c081dd | ||
|
|
0bd9d37ca8 | ||
|
|
68fb6e95a5 | ||
|
|
3d036b90db | ||
|
|
eccb56da8f | ||
|
|
1217d69441 | ||
|
|
b55b988e64 | ||
|
|
7904260aa8 | ||
|
|
9e1d019a35 | ||
|
|
1d096f0881 | ||
|
|
ad57683a0d | ||
|
|
a7cbc3d804 | ||
|
|
d16d19b922 | ||
|
|
689d90b159 | ||
|
|
f4a329efb8 | ||
|
|
c9be3ef73a | ||
|
|
4349e798b9 | ||
|
|
186735b3cf | ||
|
|
ad2574f9c3 | ||
|
|
49a333bac9 | ||
|
|
d2ea769228 | ||
|
|
6e811ae27d | ||
|
|
41432bbe0e | ||
|
|
15882192a9 | ||
|
|
977f66273e | ||
|
|
fccd9937a6 | ||
|
|
f185a12a60 | ||
|
|
583a0c0742 | ||
|
|
ba9a371a32 | ||
|
|
02b0467a88 | ||
|
|
612da0d83c | ||
|
|
332a672e9c | ||
|
|
ee90345bd6 | ||
|
|
6b4ee1dff3 | ||
|
|
092540aa3f | ||
|
|
25a6bef741 | ||
|
|
341489614d | ||
|
|
e5b72116fa | ||
|
|
fa9422a5b7 | ||
|
|
9c75de2097 | ||
|
|
6f005862bb | ||
|
|
d77ee5d07c | ||
|
|
78d32e1893 | ||
|
|
b18948830c | ||
|
|
9648858d1a | ||
|
|
d6054069e6 | ||
|
|
910ecd2552 | ||
|
|
d147f1198d | ||
|
|
cb70913b8b | ||
|
|
5ac502c713 | ||
|
|
517d2a16b3 | ||
|
|
4d64b3ead9 | ||
|
|
1fee25028c | ||
|
|
c38009ee92 | ||
|
|
f96d0a6d84 | ||
|
|
3527d076bb | ||
|
|
039b446e05 | ||
|
|
7325cb2547 | ||
|
|
5753717653 | ||
|
|
ad21e3f950 | ||
|
|
3fc73cb9f4 | ||
|
|
cc4d6bfc12 | ||
|
|
9783c9d4e3 | ||
|
|
82effe1790 | ||
|
|
5a01a6d8e9 | ||
|
|
8310442f7a | ||
|
|
df00e8949c | ||
|
|
fad15310f2 | ||
|
|
a2fcf4966e | ||
|
|
be8cb165b5 | ||
|
|
79ad9ee3c6 | ||
|
|
dd460e909b | ||
|
|
5963019816 | ||
|
|
96ad12949a | ||
|
|
c811120ee0 | ||
|
|
4af71255c1 | ||
|
|
07dd61439b | ||
|
|
3a8f81213c | ||
|
|
89005b0464 | ||
|
|
0839b3033d | ||
|
|
dcf9f4f63a | ||
|
|
ee13073a87 | ||
|
|
8638befaf1 | ||
|
|
c203104e18 | ||
|
|
e8433f9c72 | ||
|
|
2bd9a8d404 | ||
|
|
7fd4049f8f | ||
|
|
3a081c984f | ||
|
|
b498eb213b | ||
|
|
98fbaadd59 | ||
|
|
f52ecb70ea | ||
|
|
9633a3426d | ||
|
|
f23abfddde | ||
|
|
925892bf8b | ||
|
|
a69a3505f3 | ||
|
|
aef9a5ba5d | ||
|
|
55cd47f867 | ||
|
|
b90b514c2d | ||
|
|
ac8560494b | ||
|
|
b99af2bd16 | ||
|
|
f15d08ae3d | ||
|
|
3a3f0b8fef | ||
|
|
07032fe762 | ||
|
|
fa4f5c07bf | ||
|
|
2d64e99c24 | ||
|
|
3f0e71c182 | ||
|
|
5339092223 | ||
|
|
462b0953e9 | ||
|
|
23eda1a4d9 | ||
|
|
f94f4e4b2e | ||
|
|
12fd7c2895 | ||
|
|
91b704898f | ||
|
|
8c4eb29eed | ||
|
|
257c07321e | ||
|
|
9c178dac66 | ||
|
|
98b5e5f523 | ||
|
|
37ab55a842 | ||
|
|
dee2271fd1 | ||
|
|
5b12c0e944 | ||
|
|
e3fd4595bb | ||
|
|
1cadcd04e0 | ||
|
|
3fc4e0d6eb | ||
|
|
68011884ec | ||
|
|
fefb969cdd | ||
|
|
c4601cd75c | ||
|
|
522de631e1 | ||
|
|
2772c933c6 | ||
|
|
9d4fce3bf3 | ||
|
|
0444b6a945 | ||
|
|
2eb014b48c | ||
|
|
0ec4029c81 | ||
|
|
26d644989a | ||
|
|
491ad0c4f7 | ||
|
|
29e741113f | ||
|
|
7d10c5bc0a | ||
|
|
bbc1638ce1 | ||
|
|
0976632232 | ||
|
|
3f6c74fbc4 | ||
|
|
6a1c0b0842 | ||
|
|
6851c8d89b | ||
|
|
df20056091 | ||
|
|
91914435ad | ||
|
|
6b02e96eaf | ||
|
|
e221522f10 | ||
|
|
266f9538d5 | ||
|
|
022a8dbe8f | ||
|
|
dfbb454e07 | ||
|
|
453125603e | ||
|
|
ed98aff23d | ||
|
|
63586b45d3 | ||
|
|
b0aa15b85b | ||
|
|
8834452005 | ||
|
|
79312ec17e | ||
|
|
753d040785 | ||
|
|
d096187121 | ||
|
|
1358a2751f | ||
|
|
652376d5b3 | ||
|
|
e14a40d164 | ||
|
|
cafbdc6174 | ||
|
|
40ea8e5cb4 | ||
|
|
d391f7c63d | ||
|
|
01487e8643 | ||
|
|
1719aeb5d2 | ||
|
|
e44f85ab5d | ||
|
|
80c8967c03 | ||
|
|
876915c6a1 | ||
|
|
4d127a6a46 | ||
|
|
e67726a839 | ||
|
|
be9e8a5340 | ||
|
|
06668fe36f | ||
|
|
1a89bb119d | ||
|
|
bd79a86b01 | ||
|
|
b2cdea89f5 | ||
|
|
9949620e45 | ||
|
|
29ab806ba6 | ||
|
|
c1d9c2e3b2 | ||
|
|
b436cdd69c | ||
|
|
1de01cb219 | ||
|
|
fd5e84d8e6 | ||
|
|
5ad959f728 | ||
|
|
af0a5af68c | ||
|
|
5ed03602e6 | ||
|
|
4b39e7d090 | ||
|
|
a39af74e4d | ||
|
|
53e7770fd1 | ||
|
|
7fa51274b9 | ||
|
|
821b7ac2b5 | ||
|
|
4e78cdbda6 | ||
|
|
7918702d81 | ||
|
|
1039ff757d | ||
|
|
330ed9959b | ||
|
|
6578fdad34 | ||
|
|
abad9ccee2 | ||
|
|
afdeae0362 | ||
|
|
8f99a3be7a | ||
|
|
979f5b2e7b | ||
|
|
b339e2c59e | ||
|
|
a50090c047 | ||
|
|
30093a30d3 | ||
|
|
92b911a7c0 | ||
|
|
163e61b805 | ||
|
|
5d366027d5 | ||
|
|
18052b1b57 | ||
|
|
c86b339f4f | ||
|
|
8cf5449fd9 | ||
|
|
8cdeecd144 | ||
|
|
3480143685 | ||
|
|
9f3116100a | ||
|
|
e6b4cdadc5 | ||
|
|
ae11b1005a | ||
|
|
7bdb63c235 | ||
|
|
0ad11db552 | ||
|
|
be113a79eb | ||
|
|
703ff0db40 | ||
|
|
131a9af96d | ||
|
|
9f32083fd9 | ||
|
|
f6eb5b3fa4 | ||
|
|
8ce607d540 | ||
|
|
042ea6250a | ||
|
|
6a7ab7a4d3 | ||
|
|
6d35589509 | ||
|
|
4a501d5aea | ||
|
|
59af29a2a0 | ||
|
|
249afa3d2e | ||
|
|
d0e2d0d885 | ||
|
|
35865af26a | ||
|
|
c9091dafe3 | ||
|
|
b6016a59f3 | ||
|
|
269168158d | ||
|
|
249af9e46c | ||
|
|
b1402be6d5 | ||
|
|
8da8d21484 | ||
|
|
f650e1150e | ||
|
|
338baa118e | ||
|
|
45cc4bb387 | ||
|
|
5e0c918e7b | ||
|
|
a92a9b0df5 | ||
|
|
831ce3cd26 | ||
|
|
075c1d5096 | ||
|
|
a650cb0e62 | ||
|
|
c27e9c11b6 | ||
|
|
adf91e8e2b | ||
|
|
f43f7a9777 | ||
|
|
5d636b506a | ||
|
|
edb89345ec | ||
|
|
201ecd476d | ||
|
|
5e38ddc11e | ||
|
|
2b9ab70dc0 | ||
|
|
f3f1c8c20e | ||
|
|
ba9e2c55e0 | ||
|
|
175027bed8 | ||
|
|
30f1e924b5 | ||
|
|
703f347ee8 | ||
|
|
7310129200 | ||
|
|
2aacf785b4 | ||
|
|
36e583d2b6 | ||
|
|
e0cceee495 | ||
|
|
8da4947343 | ||
|
|
17c42c34ad | ||
|
|
f258e9a659 | ||
|
|
1dbfde12af | ||
|
|
1ccdc3374a | ||
|
|
da30b2b421 |
15
.gitignore
vendored
Normal file
15
.gitignore
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/build/
|
||||
/dist/
|
||||
/.idea/
|
||||
nbproject/private/
|
||||
/webrev
|
||||
/.src-rev
|
||||
/.jib/
|
||||
.DS_Store
|
||||
.metadata/
|
||||
.recommenders/
|
||||
test/nashorn/script/external
|
||||
test/nashorn/lib
|
||||
NashornProfile.txt
|
||||
**/JTreport/**
|
||||
**/JTwork/**
|
||||
57
.hgtags
57
.hgtags
@@ -502,3 +502,60 @@ ea900a7dc7d77dee30865c60eabd87fc24b1037c jdk-11+24
|
||||
945ba9278a272a5477ffb1b3ea1b04174fed8036 jdk-11+26
|
||||
9d7d74c6f2cbe522e39fa22dc557fdd3f79b32ad jdk-11+27
|
||||
76072a077ee1d815152d45d1692c4b36c53c5c49 jdk-11+28
|
||||
c01cc45790f871adec30acc90742b521d57a2fff jdk-11.0.1+0
|
||||
1353ec839c82de926bfacd2c7976b6b652d4afb0 jdk-11.0.1+1
|
||||
a285bd7cfedb40cb3086e61e17fc04c96b739d03 jdk-11.0.1+2
|
||||
a285bd7cfedb40cb3086e61e17fc04c96b739d03 jdk-11.0.1+2
|
||||
0000000000000000000000000000000000000000 jdk-11.0.1+2
|
||||
fc55f0667af5ea3b21e40a59e2a88b1b82e65e62 jdk-11.0.1+2
|
||||
781b5d8f2f75ae4dfdafc85630e5dbd31e324ed1 jdk-11.0.1+3
|
||||
b5b1dd7e6f9d86aedf7141e9279342fae257bd67 jdk-11.0.1+4
|
||||
d6efeebf554c918bfab50f89939eb11121e18432 jdk-11.0.1+5
|
||||
db768cfe2141b3eb9ef53d7104002a0532c8c977 jdk-11.0.1+6
|
||||
88a221c0bad0cee441767106776628550d660a82 jdk-11.0.1+7
|
||||
c2b23a17d3ff92235aed8e8d04642d7a6eaecf54 jdk-11.0.1+8
|
||||
adb9933aa8c68e6dec6b441133f3955fe7366206 jdk-11.0.1+9
|
||||
a86e14193fc8ea98835fd3e2f867447164c7af53 jdk-11.0.1+10
|
||||
0343f9aacae2d4a9e6df4e61087837166a6a477c jdk-11.0.1+11
|
||||
c0431cf9c38e5c56eedc680e007a94c4279a8f13 jdk-11.0.1+12
|
||||
8513ac27b65198d2e6562fb7da6e9c99b9fdcf51 jdk-11.0.1+13
|
||||
7da060835810b5fbd4a7493ea1c98e9a4338f30d jdk-11.0.2+0
|
||||
2be95a1bf50877cafba791c2f342953bd4a6412e jdk-11.0.2+1
|
||||
b4b16f510f48e2dd4bea007b60fddf69af0f6c10 jdk-11.0.2+2
|
||||
8a8606a3bdf2dbe0698bef375e6a4b47df0efb1a jdk-11.0.2+3
|
||||
0db90dec8c39bc38058afa11b7fda607ee259d01 jdk-11.0.2+4
|
||||
ff1f7723c4e88822fd60bcacd55824e1d3da6d36 jdk-11.0.2+5
|
||||
c6fd7ff3e96f3e6f4913d026a90c6c454a7a35c8 jdk-11.0.2+6
|
||||
a01e0cc0105972acc3b5e213dbe2b84acaee5be3 jdk-11.0.2+7
|
||||
a01e0cc0105972acc3b5e213dbe2b84acaee5be3 jdk-11.0.2-ga
|
||||
fe85e2f43a1c893cb410308106b0f31b814aebb8 jdk-11.0.2+8
|
||||
144d476b6efe527c5e9ebf19af93398913c5450f jdk-11.0.2+9
|
||||
a01e0cc0105972acc3b5e213dbe2b84acaee5be3 jdk-11.0.2-ga
|
||||
0000000000000000000000000000000000000000 jdk-11.0.2-ga
|
||||
144d476b6efe527c5e9ebf19af93398913c5450f jdk-11.0.2-ga
|
||||
cd1c042181e934a1a91f9ee59a0066f64c8bad7a jdk-11.0.4+0
|
||||
98e7354165d3a2443a8b845a5a526cc55d1b0dd7 jdk-11.0.3+0
|
||||
cd1c042181e934a1a91f9ee59a0066f64c8bad7a jdk-11.0.3+1
|
||||
9de3f198995c6c384fd6431c97089c311ec6a7ff jdk-11.0.3+2
|
||||
d17a1764a0f318ab72beadb589c998d40951493a jdk-11.0.3+3
|
||||
43d6759c3b2e36c1118e9753a080372294e1f17a jdk-11.0.3+4
|
||||
c9865fee1a6d39a7bd2a5313f54c812d9a0852f5 jdk-11.0.3+5
|
||||
8e139b8b4f62c0a1c4b13fa216f6fd975df81c1c jdk-11.0.3+6
|
||||
175eb80c253addb5b49a91c53daa7e204f124581 jdk-11.0.3+7
|
||||
175eb80c253addb5b49a91c53daa7e204f124581 jdk-11.0.3-ga
|
||||
b3f7a4c524f2e37a8068ca797859df86d9865aad jdk-11.0.4+1
|
||||
3b9194001c2eebea3109777c2b308cd784a5dcc7 jdk-11.0.4+2
|
||||
3b6fc7cd594608b7125eb0b75bdc05132e7b5f39 jdk-11.0.4+3
|
||||
e442b78d7687744475676724bd27b1d52f096d38 jdk-11.0.4+4
|
||||
371ce104ac19a12012dfe3749240b0309bfc86ee jdk-11.0.4+5
|
||||
3594cd8691f224cc7f8909c2fb14eaea0e190097 jdk-11.0.5+0
|
||||
9ab8738bf30663e01924f40e04d6d04751271b77 jdk-11.0.4+6
|
||||
640251cdca0577fd8aa4a51ddb7c71c3b874033c jdk-11.0.4+7
|
||||
ce601e800f56af59edfda40e19a92a8d3121a1cd jdk-11.0.4+8
|
||||
26958299a5f8012736b99782c835ec685e18dd43 jdk-11.0.4+9
|
||||
3f5829d9d7629ba3893456e20731949a570cc277 jdk-11.0.4+10
|
||||
6a4d57474e1c971cccf4165b3d9d023928510010 jdk-11.0.4+11
|
||||
6a4d57474e1c971cccf4165b3d9d023928510010 jdk-11.0.4-ga
|
||||
3ba9c532128b1feccf59ab8ce812b1fce2b6f681 jdk-11.0.5+1
|
||||
b249a2a2034e3392c647c61d401a41ac7237d635 jdk-11.0.5+2
|
||||
d84dae4fba034adc749e3f28fc444b3d95b8f670 jdk-11.0.5+3
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -29,6 +29,7 @@ include $(SPEC)
|
||||
include MakeBase.gmk
|
||||
|
||||
PRODUCT_TARGETS :=
|
||||
LEGACY_TARGETS :=
|
||||
TEST_TARGETS :=
|
||||
DOCS_TARGETS :=
|
||||
|
||||
@@ -146,19 +147,25 @@ endef
|
||||
# correct base directories.
|
||||
ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
|
||||
JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
|
||||
JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
|
||||
JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home
|
||||
JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
|
||||
JDK_BUNDLE_SUBDIR :=
|
||||
JRE_BUNDLE_SUBDIR :=
|
||||
else
|
||||
JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
|
||||
JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
|
||||
JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
|
||||
JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
|
||||
ifneq ($(DEBUG_LEVEL), release)
|
||||
JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||
JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(filter product-bundles, $(MAKECMDGOALS)), )
|
||||
ifneq ($(filter product-bundles legacy-bundles, $(MAKECMDGOALS)), )
|
||||
$(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR)))
|
||||
|
||||
SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
|
||||
@@ -198,6 +205,22 @@ ifneq ($(filter product-bundles, $(MAKECMDGOALS)), )
|
||||
|
||||
TEST_DEMOS_BUNDLE_FILES := $(filter $(JDK_IMAGE_HOMEDIR)/demo/%, $(ALL_JDK_FILES))
|
||||
|
||||
ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR))
|
||||
|
||||
# Create special filter rules when dealing with unzipped .dSYM directories on
|
||||
# macosx
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
|
||||
JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
|
||||
$(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
|
||||
endif
|
||||
endif
|
||||
|
||||
JRE_BUNDLE_FILES := $(filter-out \
|
||||
$(JRE_SYMBOLS_EXCLUDE_PATTERN) \
|
||||
$(SYMBOLS_EXCLUDE_PATTERN), \
|
||||
$(ALL_JRE_FILES))
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
|
||||
BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
|
||||
FILES := $(JDK_BUNDLE_FILES), \
|
||||
@@ -208,6 +231,15 @@ ifneq ($(filter product-bundles, $(MAKECMDGOALS)), )
|
||||
|
||||
PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
|
||||
BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
|
||||
FILES := $(JRE_BUNDLE_FILES), \
|
||||
BASE_DIRS := $(JRE_IMAGE_DIR), \
|
||||
SUBDIR := $(JRE_BUNDLE_SUBDIR), \
|
||||
))
|
||||
|
||||
LEGACY_TARGETS += $(BUILD_JRE_BUNDLE)
|
||||
|
||||
$(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \
|
||||
BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \
|
||||
FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \
|
||||
@@ -268,6 +300,7 @@ $(eval $(call IncludeCustomExtension, Bundles.gmk))
|
||||
################################################################################
|
||||
|
||||
product-bundles: $(PRODUCT_TARGETS)
|
||||
legacy-bundles: $(LEGACY_TARGETS)
|
||||
test-bundles: $(TEST_TARGETS)
|
||||
docs-bundles: $(DOCS_TARGETS)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -38,7 +38,7 @@ ALL_MODULEINFO_CLASSES := $(wildcard $(JDK_OUTPUTDIR)/modules/*/module_info.clas
|
||||
|
||||
$(PACKAGES_ATTRIBUTE_TARGET): $(ALL_MODULEINFO_CLASSES) $(BUILD_JIGSAW_CLASSES)
|
||||
$(call LogInfo, Optimizing the exploded image)
|
||||
$(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR)
|
||||
$(call ExecuteWithLog, $@, $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR))
|
||||
$(TOUCH) $@
|
||||
|
||||
TARGETS := $(PACKAGES_ATTRIBUTE_TARGET)
|
||||
|
||||
@@ -421,8 +421,8 @@ else # $(HAS_SPEC)=true
|
||||
$(if $(filter all, $(LOG_REPORT)), \
|
||||
$(GREP) -v -e "^Note: including file:" < $(logfile) || true $(NEWLINE) \
|
||||
, \
|
||||
($(GREP) -v -e "^Note: including file:" < $(logfile) || true) | $(HEAD) -n 12 $(NEWLINE) \
|
||||
if test `$(WC) -l < $(logfile)` -gt 12; then \
|
||||
($(GREP) -v -e "^Note: including file:" < $(logfile) || true) | $(HEAD) -n 15 $(NEWLINE) \
|
||||
if test `$(WC) -l < $(logfile)` -gt 15; then \
|
||||
$(ECHO) " ... (rest of output omitted)" ; \
|
||||
fi $(NEWLINE) \
|
||||
) \
|
||||
|
||||
107
make/Jprt.gmk
107
make/Jprt.gmk
@@ -1,107 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# 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.
|
||||
#
|
||||
|
||||
# This file contains targets and utilities needed by JPRT.
|
||||
|
||||
# Cygpath is only defined when running on Cygwin
|
||||
ifneq ($(CYGPATH), )
|
||||
# If we get JPRT_ARCHIVE_*BUNDLE externally, make sure they have /cygdrive
|
||||
# style paths
|
||||
ifdef JPRT_ARCHIVE_BUNDLE
|
||||
override JPRT_ARCHIVE_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_BUNDLE))
|
||||
endif
|
||||
ifdef JPRT_ARCHIVE_TEST_BUNDLE
|
||||
override JPRT_ARCHIVE_TEST_BUNDLE := \
|
||||
$(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE))
|
||||
endif
|
||||
ifdef JPRT_ARCHIVE_SYMBOLS_BUNDLE
|
||||
override JPRT_ARCHIVE_SYMBOLS_BUNDLE := \
|
||||
$(shell $(CYGPATH) -u $(JPRT_ARCHIVE_SYMBOLS_BUNDLE))
|
||||
endif
|
||||
endif
|
||||
|
||||
# When running in JPRT these will be provided. Need defaults so that this makefile
|
||||
# is valid anyway.
|
||||
ifndef JPRT_ARCHIVE_BUNDLE
|
||||
JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/jdk-image.zip
|
||||
endif
|
||||
ifndef JPRT_ARCHIVE_TEST_BUNDLE
|
||||
JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip
|
||||
endif
|
||||
ifndef JPRT_ARCHIVE_SYMBOLS_BUNDLE
|
||||
JPRT_ARCHIVE_SYMBOLS_BUNDLE=/tmp/jprt_bundles/symbols-image.zip
|
||||
endif
|
||||
|
||||
ifeq ($(SKIP_BOOT_CYCLE), false)
|
||||
jprt_bundle: bootcycle-images
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# JPRT specific bundling targets
|
||||
JPRT_TARGET ?= $(DEFAULT_MAKE_TARGET)
|
||||
ifeq ($(JPRT_TARGET), $(DEFAULT_MAKE_TARGET))
|
||||
jprt_bundle: $(DEFAULT_MAKE_TARGET) $(JPRT_ARCHIVE_BUNDLE) \
|
||||
$(JPRT_ARCHIVE_TEST_BUNDLE)
|
||||
|
||||
SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
|
||||
SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
|
||||
|
||||
# This target must be called in the context of a SPEC file
|
||||
$(JPRT_ARCHIVE_BUNDLE): product-images
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
|
||||
|
||||
$(JPRT_ARCHIVE_TEST_BUNDLE): test-image
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
|
||||
|
||||
##############################################################################
|
||||
# Optional symbols bundle
|
||||
ifeq ($(GCOV_ENABLED), true)
|
||||
jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE)
|
||||
|
||||
$(JPRT_ARCHIVE_SYMBOLS_BUNDLE): product-images
|
||||
$(call MakeDir, $(@D))
|
||||
$(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
|
||||
|
||||
endif
|
||||
|
||||
##############################################################################
|
||||
|
||||
else
|
||||
# Just fake the main bundle to satisfy JPRT
|
||||
jprt_bundle: $(JPRT_TARGET)
|
||||
@$(call TargetEnter)
|
||||
$(MKDIR) -p $(OUTPUTDIR)/bundles
|
||||
$(CD) $(TOPDIR) && $(TAR) cf - README | $(GZIP) > \
|
||||
$(JPRT_ARCHIVE_BUNDLE)
|
||||
@$(call TargetExit)
|
||||
endif
|
||||
|
||||
ALL_TARGETS += jprt_bundle
|
||||
|
||||
################################################################################
|
||||
|
||||
$(eval $(call IncludeCustomExtension, Jprt.gmk))
|
||||
@@ -568,13 +568,16 @@ ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
|
||||
product-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles)
|
||||
|
||||
legacy-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk legacy-bundles)
|
||||
|
||||
test-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles)
|
||||
|
||||
docs-bundles:
|
||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)
|
||||
|
||||
ALL_TARGETS += product-bundles test-bundles docs-bundles
|
||||
ALL_TARGETS += product-bundles legacy-bundles test-bundles docs-bundles
|
||||
|
||||
################################################################################
|
||||
# Install targets
|
||||
@@ -882,6 +885,8 @@ else
|
||||
|
||||
product-bundles: product-images
|
||||
|
||||
legacy-bundles: legacy-images
|
||||
|
||||
test-bundles: test-image
|
||||
|
||||
docs-bundles: docs-image
|
||||
@@ -982,6 +987,9 @@ mac-bundles: mac-jdk-bundle
|
||||
# (and possibly other, more specific versions)
|
||||
product-images: jdk-image symbols-image exploded-image
|
||||
|
||||
# This target builds the legacy images, e.g. the legacy JRE image
|
||||
legacy-images: legacy-jre-image
|
||||
|
||||
# zip-security is actually a bundle, but for now it needs to be considered
|
||||
# an image until this can be cleaned up properly.
|
||||
product-images: zip-security
|
||||
@@ -998,6 +1006,8 @@ endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
product-images: mac-jdk-bundle
|
||||
|
||||
legacy-images: mac-legacy-jre-bundle
|
||||
endif
|
||||
|
||||
# This target builds the documentation image
|
||||
@@ -1028,7 +1038,7 @@ ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
|
||||
jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
|
||||
exploded-image-base exploded-image \
|
||||
create-buildjdk docs-jdk-api docs-javase-api docs-reference-api docs-jdk \
|
||||
docs-javase docs-reference docs-javadoc mac-bundles product-images \
|
||||
docs-javase docs-reference docs-javadoc mac-bundles product-images legacy-images \
|
||||
docs-image test-image all-images \
|
||||
all-bundles
|
||||
|
||||
@@ -1130,11 +1140,6 @@ ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS)
|
||||
|
||||
################################################################################
|
||||
|
||||
# Include JPRT targets
|
||||
include $(TOPDIR)/make/Jprt.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
# The following targets are intentionally not added to ALL_TARGETS since they
|
||||
# are internal only, to support Init.gmk.
|
||||
|
||||
|
||||
@@ -32,6 +32,31 @@ include FindTests.gmk
|
||||
# We will always run multiple tests serially
|
||||
.NOTPARALLEL:
|
||||
|
||||
################################################################################
|
||||
# Setup global test running parameters
|
||||
################################################################################
|
||||
|
||||
# Each factor variable comes in 3 variants. The first one is reserved for users
|
||||
# to use on command line. The other two are for predifined configurations in JDL
|
||||
# and for machine specific configurations respectively.
|
||||
TEST_JOBS_FACTOR ?= 1
|
||||
TEST_JOBS_FACTOR_JDL ?= 1
|
||||
TEST_JOBS_FACTOR_MACHINE ?= 1
|
||||
|
||||
ifeq ($(TEST_JOBS), 0)
|
||||
# Concurrency based on min(cores / 2, 12) * TEST_JOBS_FACTOR
|
||||
TEST_JOBS := $(shell $(AWK) \
|
||||
'BEGIN { \
|
||||
c = $(NUM_CORES) / 2; \
|
||||
if (c > 12) c = 12; \
|
||||
c = c * $(TEST_JOBS_FACTOR); \
|
||||
c = c * $(TEST_JOBS_FACTOR_JDL); \
|
||||
c = c * $(TEST_JOBS_FACTOR_MACHINE); \
|
||||
if (c < 1) c = 1; \
|
||||
printf "%.0f", c; \
|
||||
}')
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Parse global control variables
|
||||
################################################################################
|
||||
@@ -143,17 +168,6 @@ endif
|
||||
# Component-specific Jtreg settings
|
||||
################################################################################
|
||||
|
||||
ifeq ($(TEST_JOBS), 0)
|
||||
# If TEST_JOBS is not specified, hotspot fallback default is
|
||||
# min(num_cores / 2, 12).
|
||||
hotspot_JTREG_JOBS := $(shell $(EXPR) $(NUM_CORES) / 2)
|
||||
ifeq ($(hotspot_JTREG_JOBS), 0)
|
||||
hotspot_JTREG_JOBS := 1
|
||||
else ifeq ($(shell $(EXPR) $(hotspot_JTREG_JOBS) \> 12), 1)
|
||||
hotspot_JTREG_JOBS := 12
|
||||
endif
|
||||
endif
|
||||
|
||||
hotspot_JTREG_MAX_MEM := 0
|
||||
hotspot_JTREG_ASSERT := false
|
||||
hotspot_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/hotspot/jtreg/native
|
||||
@@ -165,6 +179,8 @@ langtools_JTREG_PROBLEM_LIST += $(TOPDIR)/test/langtools/ProblemList.txt
|
||||
nashorn_JTREG_PROBLEM_LIST += $(TOPDIR)/test/nashorn/ProblemList.txt
|
||||
hotspot_JTREG_PROBLEM_LIST += $(TOPDIR)/test/hotspot/jtreg/ProblemList.txt
|
||||
|
||||
langtools_JTREG_MAX_MEM := 768m
|
||||
|
||||
################################################################################
|
||||
# Parse test selection
|
||||
#
|
||||
@@ -476,10 +492,8 @@ define SetupRunJtregTestBody
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_PROBLEM_LIST))
|
||||
|
||||
ifneq ($(TEST_JOBS), 0)
|
||||
# User has specified TEST_JOBS, use that as fallback default
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(TEST_JOBS)))
|
||||
else
|
||||
# Use JOBS as default (except for hotspot)
|
||||
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(JOBS)))
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -23,33 +23,43 @@
|
||||
# questions.
|
||||
#
|
||||
|
||||
default: all
|
||||
|
||||
include $(SPEC)
|
||||
include MakeBase.gmk
|
||||
|
||||
$(eval $(call IncludeCustomExtension, SourceRevision.gmk))
|
||||
$(eval $(call IncludeCustomExtension, SourceRevision-pre.gmk))
|
||||
|
||||
################################################################################
|
||||
# Keep track of what source revision is used to create the build, by creating
|
||||
# a tracker file in the output directory. This tracker file is included in the
|
||||
# image, and can be used to recreate the source revision used.
|
||||
# source image, and can be used to recreate the source revision used.
|
||||
#
|
||||
# We're either building directly from a mercurial forest, and if so, use the
|
||||
# current revision from mercurial. Otherwise, we are building from a source
|
||||
# bundle. As a part of creating this source bundle, the current mercurial
|
||||
# revisions of all repos will be stored in a file in the top dir, which is then
|
||||
# used when creating the tracker file.
|
||||
# We're either building directly from an SCM repository, and if so, use the
|
||||
# current revision from that SCM. Otherwise, we are building from a source
|
||||
# bundle. As a part of creating this source bundle, the current SCM revisions of
|
||||
# all repos will be stored in a file in the top dir, which is then used when
|
||||
# creating the tracker file.
|
||||
|
||||
STORED_SOURCE_REVISION := $(TOPDIR)/.src-rev
|
||||
|
||||
# Are we using mercurial?
|
||||
USE_SCM := false
|
||||
ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
||||
USE_SCM := true
|
||||
SCM_DIR := .hg
|
||||
ID_COMMAND := $(PRINTF) "hg:%s" "$$($(HG) id -i)"
|
||||
else ifneq ($(and $(GIT), $(wildcard $(TOPDIR)/.git)), )
|
||||
USE_SCM := true
|
||||
SCM_DIR := .git
|
||||
ID_COMMAND := $(PRINTF) "git:%s%s\n" \
|
||||
"$$(git log -n1 --format=%H | cut -c1-12)" \
|
||||
"$$(if test -n "$$(git status --porcelain)"; then printf '+'; fi)"
|
||||
endif
|
||||
|
||||
ifeq ($(USE_SCM), true)
|
||||
|
||||
# Verify that the entire forest is consistent
|
||||
$(foreach repo, $(call FindAllReposRel), \
|
||||
$(if $(wildcard $(TOPDIR)/$(repo)/.hg),, \
|
||||
$(error Inconsistent revision control: $(repo) is missing .hg directory)) \
|
||||
$(if $(wildcard $(TOPDIR)/$(repo)/$(SCM_DIR)),, \
|
||||
$(error Inconsistent revision control: $(repo) is missing $(SCM_DIR) directory)) \
|
||||
)
|
||||
|
||||
# Replace "." with "_top" and "/" with "-"
|
||||
@@ -58,7 +68,9 @@ ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
||||
|
||||
################################################################################
|
||||
# SetupGetRevisionForRepo defines a make rule for creating a file containing
|
||||
# the name of the repository and the output of "hg id" for that repository.
|
||||
# the name of the repository and the output of the scm command for that
|
||||
# repository.
|
||||
#
|
||||
# Argument 1 is the relative path to the repository from the top dir.
|
||||
#
|
||||
SetupGetRevisionForRepo = $(NamedParamsMacroTemplate)
|
||||
@@ -68,7 +80,7 @@ ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
||||
|
||||
$$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME): FRC
|
||||
$$(call MakeDir, $$(@D))
|
||||
$$(ECHO) $$(strip $1):`$$(HG) id -i --repository $$($1_REPO_PATH)` > $$@
|
||||
$$(ECHO) $$(strip $1):`$$(CD) $$($1_REPO_PATH) && $$(ID_COMMAND)` > $$@
|
||||
|
||||
REPO_REVISIONS += $$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME)
|
||||
endef
|
||||
@@ -94,40 +106,58 @@ ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
|
||||
|
||||
$(eval $(call CreateSourceRevisionFile, $(STORED_SOURCE_REVISION)))
|
||||
|
||||
store-source-revision: $(STORED_SOURCE_REVISION)
|
||||
scm-store-source-revision: $(STORED_SOURCE_REVISION)
|
||||
|
||||
$(eval $(call CreateSourceRevisionFile, $(SOURCE_REVISION_TRACKER)))
|
||||
|
||||
create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
|
||||
scm-create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
|
||||
|
||||
STORE_SOURCE_REVISION_TARGET := scm-store-source-revision
|
||||
CREATE_SOURCE_REVISION_TRACKER_TARGET := scm-create-source-revision-tracker
|
||||
|
||||
.PHONY: scm-store-source-revision scm-create-source-revision-tracker
|
||||
|
||||
else
|
||||
# Not using HG
|
||||
# Not using any SCM
|
||||
|
||||
ifneq ($(wildcard $(STORED_SOURCE_REVISION)), )
|
||||
# We have a stored source revision (.src-rev)
|
||||
|
||||
store-source-revision:
|
||||
$(call LogInfo, No mercurial configuration present$(COMMA) not updating .src-rev)
|
||||
src-store-source-revision:
|
||||
$(call LogInfo, No SCM configuration present$(COMMA) not updating .src-rev)
|
||||
|
||||
$(SOURCE_REVISION_TRACKER): $(STORED_SOURCE_REVISION)
|
||||
$(install-file)
|
||||
|
||||
create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
|
||||
src-create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
|
||||
else
|
||||
# We don't have a stored source revision. Can't do anything, really.
|
||||
|
||||
store-source-revision:
|
||||
$(call LogWarn, Error: No mercurial configuration present$(COMMA) cannot create .src-rev)
|
||||
src-store-source-revision:
|
||||
$(call LogWarn, Error: No SCM configuration present$(COMMA) cannot create .src-rev)
|
||||
exit 2
|
||||
|
||||
create-source-revision-tracker:
|
||||
$(call LogWarn, Warning: No mercurial configuration present and no .src-rev)
|
||||
src-create-source-revision-tracker:
|
||||
$(call LogWarn, Warning: No SCM configuration present and no .src-rev)
|
||||
endif
|
||||
|
||||
STORE_SOURCE_REVISION_TARGET := src-store-source-revision
|
||||
CREATE_SOURCE_REVISION_TRACKER_TARGET := src-create-source-revision-tracker
|
||||
|
||||
.PHONY: src-store-source-revision src-create-source-revision-tracker
|
||||
|
||||
endif
|
||||
|
||||
all: store-source-revision create-source-revision-tracker
|
||||
################################################################################
|
||||
|
||||
$(eval $(call IncludeCustomExtension, SourceRevision-post.gmk))
|
||||
|
||||
################################################################################
|
||||
|
||||
store-source-revision: $(STORE_SOURCE_REVISION_TARGET)
|
||||
|
||||
create-source-revision-tracker: $(CREATE_SOURCE_REVISION_TRACKER_TARGET)
|
||||
|
||||
FRC: # Force target
|
||||
|
||||
.PHONY: all store-source-revision create-source-revision-tracker
|
||||
.PHONY: store-source-revision create-source-revision-tracker
|
||||
|
||||
@@ -1190,6 +1190,7 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
||||
BASIC_PATH_PROGS(READELF, [greadelf readelf])
|
||||
BASIC_PATH_PROGS(DOT, dot)
|
||||
BASIC_PATH_PROGS(HG, hg)
|
||||
BASIC_PATH_PROGS(GIT, git)
|
||||
BASIC_PATH_PROGS(STAT, stat)
|
||||
BASIC_PATH_PROGS(TIME, time)
|
||||
BASIC_PATH_PROGS(FLOCK, flock)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -42,8 +42,11 @@ AC_DEFUN([BPERF_CHECK_CORES],
|
||||
NUM_CORES=`/usr/sbin/sysctl -n hw.ncpu`
|
||||
FOUND_CORES=yes
|
||||
elif test "x$OPENJDK_BUILD_OS" = xaix ; then
|
||||
NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'`
|
||||
FOUND_CORES=yes
|
||||
NUM_LCPU=`lparstat -m 2> /dev/null | $GREP -o "lcpu=[[0-9]]*" | $CUT -d "=" -f 2`
|
||||
if test -n "$NUM_LCPU"; then
|
||||
NUM_CORES=$NUM_LCPU
|
||||
FOUND_CORES=yes
|
||||
fi
|
||||
elif test -n "$NUMBER_OF_PROCESSORS"; then
|
||||
# On windows, look in the env
|
||||
NUM_CORES=$NUMBER_OF_PROCESSORS
|
||||
|
||||
@@ -106,11 +106,17 @@ AC_DEFUN([FLAGS_SETUP_SHARED_LIBS],
|
||||
|
||||
AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
|
||||
[
|
||||
# By default don't set any specific assembler debug
|
||||
# info flags for toolchains unless we know they work.
|
||||
# See JDK-8207057.
|
||||
ASFLAGS_DEBUG_SYMBOLS=""
|
||||
# Debug symbols
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
CFLAGS_DEBUG_SYMBOLS="-g"
|
||||
ASFLAGS_DEBUG_SYMBOLS="-g"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
CFLAGS_DEBUG_SYMBOLS="-g"
|
||||
ASFLAGS_DEBUG_SYMBOLS="-g"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||
# -g0 enables debug symbols without disabling inlining.
|
||||
CFLAGS_DEBUG_SYMBOLS="-g0 -xs"
|
||||
@@ -121,6 +127,7 @@ AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
|
||||
fi
|
||||
|
||||
AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
|
||||
AC_SUBST(ASFLAGS_DEBUG_SYMBOLS)
|
||||
])
|
||||
|
||||
AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
@@ -366,6 +373,20 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS],
|
||||
|
||||
FLAGS_SETUP_CFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
|
||||
|
||||
COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
|
||||
# Check that the compiler supports -ffp-contract=off flag
|
||||
# Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
|
||||
# otherwise.
|
||||
# These flags are required for GCC-based builds of
|
||||
# fdlibm with optimization without losing precision.
|
||||
# Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
||||
IF_TRUE: [FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
|
||||
IF_FALSE: [FDLIBM_CFLAGS=""])
|
||||
fi
|
||||
AC_SUBST(FDLIBM_CFLAGS)
|
||||
|
||||
# Tests are only ever compiled for TARGET
|
||||
CFLAGS_TESTLIB="$CFLAGS_JDKLIB"
|
||||
CXXFLAGS_TESTLIB="$CXXFLAGS_JDKLIB"
|
||||
@@ -473,8 +494,8 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
fi
|
||||
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new"
|
||||
TOOLCHAIN_CFLAGS_JDK="-pipe"
|
||||
TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM -fcheck-new -fstack-protector"
|
||||
TOOLCHAIN_CFLAGS_JDK="-pipe -fstack-protector"
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" # technically NOT for CXX (but since this gives *worse* performance, use no-strict-aliasing everywhere!)
|
||||
|
||||
CXXSTD_CXXFLAG="-std=gnu++98"
|
||||
@@ -503,7 +524,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
fi
|
||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||
TOOLCHAIN_CFLAGS_JDK="-mt"
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-xc99=%none -xCC -Xa -v -W0,-noglobal" # C only
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-xCC -Xa -v -W0,-noglobal" # C only
|
||||
TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
|
||||
TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
|
||||
-library=stlport4 -mt -features=no%except"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -31,9 +31,7 @@
|
||||
AC_DEFUN([FLAGS_SETUP_ARFLAGS],
|
||||
[
|
||||
# FIXME: figure out if we should select AR flags depending on OS or toolchain.
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
ARFLAGS="-r -mmacosx-version-min=$MACOSX_VERSION_MIN"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
ARFLAGS="-X64"
|
||||
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
|
||||
# lib.exe is used as AR to create static libraries.
|
||||
@@ -83,10 +81,10 @@ AC_DEFUN([FLAGS_SETUP_RCFLAGS],
|
||||
RC_FLAGS="$RC_FLAGS \
|
||||
-D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
|
||||
-D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
|
||||
-D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
|
||||
-D\"JDK_COMPONENT=\$(JDK_RC_NAME) binary\" \
|
||||
-D\"JDK_VER=\$(VERSION_NUMBER)\" \
|
||||
-D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
|
||||
-D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_FEATURE)\" \
|
||||
-D\"JDK_NAME=\$(JDK_RC_NAME) \$(VERSION_FEATURE)\" \
|
||||
-D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
|
||||
|
||||
JVM_RCFLAGS="$JVM_RCFLAGS \
|
||||
|
||||
@@ -335,8 +335,12 @@ AC_DEFUN([FLAGS_SETUP_TOOLCHAIN_CONTROL],
|
||||
CC_OUT_OPTION='-o$(SPACE)'
|
||||
# When linking, how to specify the output
|
||||
LD_OUT_OPTION='-o$(SPACE)'
|
||||
# When archiving, how to specify the to be create static archive for object files.
|
||||
AR_OUT_OPTION='rcs$(SPACE)'
|
||||
# When archiving, how to specify the destination static archive.
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
AR_OUT_OPTION='-r -cs$(SPACE)'
|
||||
else
|
||||
AR_OUT_OPTION='-rcs$(SPACE)'
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CC_OUT_OPTION)
|
||||
AC_SUBST(LD_OUT_OPTION)
|
||||
|
||||
@@ -102,7 +102,7 @@ apt_help() {
|
||||
ffi)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
|
||||
x11)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev" ;;
|
||||
ccache)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
|
||||
dtrace)
|
||||
@@ -125,7 +125,7 @@ yum_help() {
|
||||
freetype)
|
||||
PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
|
||||
x11)
|
||||
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel" ;;
|
||||
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;;
|
||||
ccache)
|
||||
PKGHANDLER_COMMAND="sudo yum install ccache" ;;
|
||||
esac
|
||||
|
||||
@@ -338,17 +338,18 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only enable ZGC on Linux x86_64
|
||||
AC_MSG_CHECKING([if zgc should be built])
|
||||
if HOTSPOT_CHECK_JVM_FEATURE(zgc); then
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES zgc"
|
||||
AC_MSG_RESULT([no, platform not supported])
|
||||
fi
|
||||
# Only enable ZGC on supported platforms
|
||||
AC_MSG_CHECKING([if zgc can be built])
|
||||
if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES zgc"
|
||||
AC_MSG_RESULT([no, platform not supported])
|
||||
fi
|
||||
|
||||
# Disable unsupported GCs for Zero
|
||||
if HOTSPOT_CHECK_JVM_VARIANT(zero); then
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES epsilongc g1gc zgc"
|
||||
fi
|
||||
|
||||
# Turn on additional features based on other parts of configure
|
||||
@@ -482,7 +483,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
fi
|
||||
|
||||
# All variants but minimal (and custom) get these features
|
||||
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs"
|
||||
NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES cmsgc g1gc parallelgc serialgc epsilongc jni-check jvmti management nmt services vm-structs zgc"
|
||||
|
||||
AC_MSG_CHECKING([if cds should be enabled])
|
||||
if test "x$ENABLE_CDS" = "xtrue"; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -75,9 +75,52 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_SUBST(PRODUCT_SUFFIX)
|
||||
AC_SUBST(JDK_RC_PLATFORM_NAME)
|
||||
AC_SUBST(HOTSPOT_VM_DISTRO)
|
||||
|
||||
# Set the MACOSX Bundle Name base
|
||||
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
|
||||
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])
|
||||
elif test "x$with_macosx_bundle_name_base" != x; then
|
||||
# Set MACOSX_BUNDLE_NAME_BASE to the configured value.
|
||||
MACOSX_BUNDLE_NAME_BASE="$with_macosx_bundle_name_base"
|
||||
fi
|
||||
AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
|
||||
|
||||
# Set the MACOSX Bundle ID base
|
||||
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
|
||||
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])
|
||||
elif test "x$with_macosx_bundle_id_base" != x; then
|
||||
# Set MACOSX_BUNDLE_ID_BASE to the configured value.
|
||||
MACOSX_BUNDLE_ID_BASE="$with_macosx_bundle_id_base"
|
||||
fi
|
||||
AC_SUBST(MACOSX_BUNDLE_ID_BASE)
|
||||
|
||||
# Set the JDK RC name
|
||||
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
|
||||
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])
|
||||
elif test "x$with_jdk_rc_name" != x; then
|
||||
# Set JDK_RC_NAME to a custom value if '--with-jdk-rc-name' was used and is not empty.
|
||||
JDK_RC_NAME="$with_jdk_rc_name"
|
||||
else
|
||||
# Otherwise calculate from "version-numbers" included above.
|
||||
JDK_RC_NAME="$PRODUCT_NAME $JDK_RC_PLATFORM_NAME"
|
||||
fi
|
||||
AC_SUBST(JDK_RC_NAME)
|
||||
|
||||
# The vendor name, if any
|
||||
AC_ARG_WITH(vendor-name, [AS_HELP_STRING([--with-vendor-name],
|
||||
[Set vendor name. Among others, used to set the 'java.vendor'
|
||||
@@ -139,15 +182,18 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
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.
|
||||
if [ [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ]; then
|
||||
if [ [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ]; then
|
||||
VERSION_FEATURE=${BASH_REMATCH[[1]]}
|
||||
VERSION_INTERIM=${BASH_REMATCH[[3]]}
|
||||
VERSION_UPDATE=${BASH_REMATCH[[5]]}
|
||||
VERSION_PATCH=${BASH_REMATCH[[7]]}
|
||||
VERSION_PRE=${BASH_REMATCH[[9]]}
|
||||
version_plus_separator=${BASH_REMATCH[[11]]}
|
||||
VERSION_BUILD=${BASH_REMATCH[[12]]}
|
||||
VERSION_OPT=${BASH_REMATCH[[14]]}
|
||||
VERSION_EXTRA1=${BASH_REMATCH[[9]]}
|
||||
VERSION_EXTRA2=${BASH_REMATCH[[11]]}
|
||||
VERSION_EXTRA3=${BASH_REMATCH[[13]]}
|
||||
VERSION_PRE=${BASH_REMATCH[[15]]}
|
||||
version_plus_separator=${BASH_REMATCH[[17]]}
|
||||
VERSION_BUILD=${BASH_REMATCH[[18]]}
|
||||
VERSION_OPT=${BASH_REMATCH[[20]]}
|
||||
# Unspecified numerical fields are interpreted as 0.
|
||||
if test "x$VERSION_INTERIM" = x; then
|
||||
VERSION_INTERIM=0
|
||||
@@ -158,6 +204,15 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
if test "x$VERSION_PATCH" = x; then
|
||||
VERSION_PATCH=0
|
||||
fi
|
||||
if test "x$VERSION_EXTRA1" = x; then
|
||||
VERSION_EXTRA1=0
|
||||
fi
|
||||
if test "x$VERSION_EXTRA2" = x; then
|
||||
VERSION_EXTRA2=0
|
||||
fi
|
||||
if test "x$VERSION_EXTRA3" = x; then
|
||||
VERSION_EXTRA3=0
|
||||
fi
|
||||
if test "x$version_plus_separator" != x \
|
||||
&& test "x$VERSION_BUILD$VERSION_OPT" = x; then
|
||||
AC_MSG_ERROR([Version string contains + but both 'BUILD' and 'OPT' are missing])
|
||||
@@ -327,6 +382,72 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
fi
|
||||
fi
|
||||
|
||||
# The 1st version extra number, if any
|
||||
AC_ARG_WITH(version-extra1, [AS_HELP_STRING([--with-version-extra1],
|
||||
[Set 1st version extra number @<:@not specified@:>@])],
|
||||
[with_version_extra1_present=true], [with_version_extra1_present=false])
|
||||
|
||||
if test "x$with_version_extra1_present" = xtrue; then
|
||||
if test "x$with_version_extra1" = xyes; then
|
||||
AC_MSG_ERROR([--with-version-extra1 must have a value])
|
||||
elif test "x$with_version_extra1" = xno; then
|
||||
# Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
|
||||
VERSION_EXTRA1=0
|
||||
elif test "x$with_version_extra1" = x; then
|
||||
VERSION_EXTRA1=0
|
||||
else
|
||||
JDKVER_CHECK_AND_SET_NUMBER(VERSION_EXTRA1, $with_version_extra1)
|
||||
fi
|
||||
else
|
||||
if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
|
||||
VERSION_EXTRA1=$DEFAULT_VERSION_EXTRA1
|
||||
fi
|
||||
fi
|
||||
|
||||
# The 2nd version extra number, if any
|
||||
AC_ARG_WITH(version-extra2, [AS_HELP_STRING([--with-version-extra2],
|
||||
[Set 2nd version extra number @<:@not specified@:>@])],
|
||||
[with_version_extra2_present=true], [with_version_extra2_present=false])
|
||||
|
||||
if test "x$with_version_extra2_present" = xtrue; then
|
||||
if test "x$with_version_extra2" = xyes; then
|
||||
AC_MSG_ERROR([--with-version-extra2 must have a value])
|
||||
elif test "x$with_version_extra2" = xno; then
|
||||
# Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
|
||||
VERSION_EXTRA2=0
|
||||
elif test "x$with_version_extra2" = x; then
|
||||
VERSION_EXTRA2=0
|
||||
else
|
||||
JDKVER_CHECK_AND_SET_NUMBER(VERSION_EXTRA2, $with_version_extra2)
|
||||
fi
|
||||
else
|
||||
if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
|
||||
VERSION_EXTRA2=$DEFAULT_VERSION_EXTRA2
|
||||
fi
|
||||
fi
|
||||
|
||||
# The 3rd version extra number, if any
|
||||
AC_ARG_WITH(version-extra3, [AS_HELP_STRING([--with-version-extra3],
|
||||
[Set 3rd version extra number @<:@not specified@:>@])],
|
||||
[with_version_extra3_present=true], [with_version_extra3_present=false])
|
||||
|
||||
if test "x$with_version_extra3_present" = xtrue; then
|
||||
if test "x$with_version_extra3" = xyes; then
|
||||
AC_MSG_ERROR([--with-version-extra3 must have a value])
|
||||
elif test "x$with_version_extra3" = xno; then
|
||||
# Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
|
||||
VERSION_EXTRA3=0
|
||||
elif test "x$with_version_extra3" = x; then
|
||||
VERSION_EXTRA3=0
|
||||
else
|
||||
JDKVER_CHECK_AND_SET_NUMBER(VERSION_EXTRA3, $with_version_extra3)
|
||||
fi
|
||||
else
|
||||
if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
|
||||
VERSION_EXTRA3=$DEFAULT_VERSION_EXTRA3
|
||||
fi
|
||||
fi
|
||||
|
||||
# Calculate derived version properties
|
||||
|
||||
# Set VERSION_IS_GA based on if VERSION_PRE has a value
|
||||
@@ -339,9 +460,12 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
# VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
|
||||
VERSION_NUMBER_FOUR_POSITIONS=$VERSION_FEATURE.$VERSION_INTERIM.$VERSION_UPDATE.$VERSION_PATCH
|
||||
|
||||
stripped_version_number=$VERSION_NUMBER_FOUR_POSITIONS
|
||||
# VERSION_NUMBER but always with all positions, with 0 for empty positions.
|
||||
VERSION_NUMBER_ALL_POSITIONS=$VERSION_NUMBER_FOUR_POSITIONS.$VERSION_EXTRA1.$VERSION_EXTRA2.$VERSION_EXTRA3
|
||||
|
||||
stripped_version_number=$VERSION_NUMBER_ALL_POSITIONS
|
||||
# Strip trailing zeroes from stripped_version_number
|
||||
for i in 1 2 3 ; do stripped_version_number=${stripped_version_number%.0} ; done
|
||||
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
|
||||
@@ -392,6 +516,9 @@ AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
|
||||
AC_SUBST(VERSION_INTERIM)
|
||||
AC_SUBST(VERSION_UPDATE)
|
||||
AC_SUBST(VERSION_PATCH)
|
||||
AC_SUBST(VERSION_EXTRA1)
|
||||
AC_SUBST(VERSION_EXTRA2)
|
||||
AC_SUBST(VERSION_EXTRA3)
|
||||
AC_SUBST(VERSION_PRE)
|
||||
AC_SUBST(VERSION_BUILD)
|
||||
AC_SUBST(VERSION_OPT)
|
||||
|
||||
@@ -186,6 +186,9 @@ AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
|
||||
FREETYPE_BASE_DIR="$SYSROOT/usr"
|
||||
if (test "x$OPENJDK_TARGET_CPU_BITS" = "x64"); then
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/$OPENJDK_TARGET_CPU-linux-gnu], [well-known location])
|
||||
if (test "x$FOUND_FREETYPE" != "xyes"); then
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib64], [well-known location])
|
||||
fi
|
||||
else
|
||||
LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/i386-linux-gnu], [well-known location])
|
||||
if (test "x$FOUND_FREETYPE" != "xyes"); then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -99,8 +99,14 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $SYSROOT_CFLAGS $X_CFLAGS"
|
||||
|
||||
HEADERS_TO_CHECK="X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h"
|
||||
# There is no Xrandr extension on AIX
|
||||
if test "x$OPENJDK_TARGET_OS" != xaix; then
|
||||
HEADERS_TO_CHECK="$HEADERS_TO_CHECK X11/extensions/Xrandr.h"
|
||||
fi
|
||||
|
||||
# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
|
||||
AC_CHECK_HEADERS([X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h],
|
||||
AC_CHECK_HEADERS([$HEADERS_TO_CHECK],
|
||||
[X11_HEADERS_OK=yes],
|
||||
[X11_HEADERS_OK=no; break],
|
||||
[
|
||||
@@ -111,7 +117,7 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
|
||||
|
||||
if test "x$X11_HEADERS_OK" = xno; then
|
||||
HELP_MSG_MISSING_DEPENDENCY([x11])
|
||||
AC_MSG_ERROR([Could not find all X11 headers (shape.h Xrender.h XTest.h Intrinsic.h). $HELP_MSG])
|
||||
AC_MSG_ERROR([Could not find all X11 headers (shape.h Xrender.h Xrandr.h XTest.h Intrinsic.h). $HELP_MSG])
|
||||
fi
|
||||
|
||||
# If XLinearGradient isn't available in Xrender.h, signal that it needs to be
|
||||
|
||||
@@ -130,6 +130,11 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lthread"
|
||||
fi
|
||||
|
||||
# perfstat lib
|
||||
if test "x$OPENJDK_TARGET_OS" = xaix; then
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lperfstat"
|
||||
fi
|
||||
|
||||
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
|
||||
BASIC_JVM_LIBS="$BASIC_JVM_LIBS -lsocket -lsched -ldoor -ldemangle -lnsl \
|
||||
-lrt -lkstat"
|
||||
|
||||
@@ -148,6 +148,7 @@ LAUNCHER_NAME:=@LAUNCHER_NAME@
|
||||
PRODUCT_NAME:=@PRODUCT_NAME@
|
||||
PRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
|
||||
JDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
|
||||
JDK_RC_NAME:=@JDK_RC_NAME@
|
||||
COMPANY_NAME:=@COMPANY_NAME@
|
||||
HOTSPOT_VM_DISTRO:=@HOTSPOT_VM_DISTRO@
|
||||
MACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
|
||||
@@ -165,6 +166,9 @@ VERSION_FEATURE := @VERSION_FEATURE@
|
||||
VERSION_INTERIM := @VERSION_INTERIM@
|
||||
VERSION_UPDATE := @VERSION_UPDATE@
|
||||
VERSION_PATCH := @VERSION_PATCH@
|
||||
VERSION_EXTRA1 := @VERSION_EXTRA1@
|
||||
VERSION_EXTRA2 := @VERSION_EXTRA2@
|
||||
VERSION_EXTRA3 := @VERSION_EXTRA3@
|
||||
# The pre-release identifier (string)
|
||||
VERSION_PRE := @VERSION_PRE@
|
||||
# The build number (numerical)
|
||||
@@ -203,6 +207,9 @@ VERSION_CFLAGS := \
|
||||
-DVERSION_INTERIM=$(VERSION_INTERIM) \
|
||||
-DVERSION_UPDATE=$(VERSION_UPDATE) \
|
||||
-DVERSION_PATCH=$(VERSION_PATCH) \
|
||||
-DVERSION_EXTRA1=$(VERSION_EXTRA1) \
|
||||
-DVERSION_EXTRA2=$(VERSION_EXTRA2) \
|
||||
-DVERSION_EXTRA3=$(VERSION_EXTRA3) \
|
||||
-DVERSION_PRE='"$(VERSION_PRE)"' \
|
||||
-DVERSION_BUILD=$(VERSION_BUILD) \
|
||||
-DVERSION_OPT='"$(VERSION_OPT)"' \
|
||||
@@ -444,6 +451,7 @@ CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
|
||||
LIBJSIG_HASHSTYLE_LDFLAGS := @LIBJSIG_HASHSTYLE_LDFLAGS@
|
||||
LIBJSIG_NOEXECSTACK_LDFLAGS := @LIBJSIG_NOEXECSTACK_LDFLAGS@
|
||||
|
||||
FDLIBM_CFLAGS := @FDLIBM_CFLAGS@
|
||||
JVM_CFLAGS := @JVM_CFLAGS@
|
||||
JVM_LDFLAGS := @JVM_LDFLAGS@
|
||||
JVM_ASFLAGS := @JVM_ASFLAGS@
|
||||
@@ -534,6 +542,7 @@ COPY_DEBUG_SYMBOLS := @COPY_DEBUG_SYMBOLS@
|
||||
ZIP_EXTERNAL_DEBUG_SYMBOLS := @ZIP_EXTERNAL_DEBUG_SYMBOLS@
|
||||
|
||||
CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
|
||||
ASFLAGS_DEBUG_SYMBOLS:=@ASFLAGS_DEBUG_SYMBOLS@
|
||||
|
||||
#
|
||||
# Compress (or not) jars
|
||||
@@ -716,6 +725,7 @@ EXPR:=@EXPR@
|
||||
FILE:=@FILE@
|
||||
DOT:=@DOT@
|
||||
HG:=@HG@
|
||||
GIT:=@GIT@
|
||||
OBJCOPY:=@OBJCOPY@
|
||||
SETFILE:=@SETFILE@
|
||||
XATTR:=@XATTR@
|
||||
@@ -871,12 +881,14 @@ else
|
||||
JDK_BUNDLE_EXTENSION := tar.gz
|
||||
endif
|
||||
JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION)
|
||||
JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).$(JDK_BUNDLE_EXTENSION)
|
||||
JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
|
||||
TEST_DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests-demos$(DEBUG_PART).tar.gz
|
||||
TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
|
||||
DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
|
||||
|
||||
JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
|
||||
JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
|
||||
JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME)
|
||||
TEST_DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_DEMOS_BUNDLE_NAME)
|
||||
TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -27,9 +27,12 @@
|
||||
|
||||
DEFAULT_VERSION_FEATURE=11
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=0
|
||||
DEFAULT_VERSION_UPDATE=5
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_DATE=2018-09-25
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2019-10-15
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||
|
||||
@@ -347,6 +347,7 @@ SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker
|
||||
FindAllReposAbs = \
|
||||
$(strip $(sort $(dir $(filter-out $(TOPDIR)/build/%, $(wildcard \
|
||||
$(addprefix $(TOPDIR)/, .hg */.hg */*/.hg */*/*/.hg */*/*/*/.hg) \
|
||||
$(addprefix $(TOPDIR)/, .git */.git */*/.git */*/*/.git */*/*/*/.git) \
|
||||
)))))
|
||||
|
||||
# Locate all hg repositories included in the forest, as relative paths
|
||||
|
||||
@@ -251,6 +251,7 @@ define SetupCompileNativeFileBody
|
||||
$$($$($1_BASE)_SYSROOT_CFLAGS)
|
||||
$1_BASE_CXXFLAGS := $$($$($1_BASE)_CXXFLAGS) $$($$($1_BASE)_EXTRA_CXXFLAGS) \
|
||||
$$($$($1_BASE)_SYSROOT_CFLAGS) $$($1_EXTRA_CXXFLAGS)
|
||||
$1_BASE_ASFLAGS := $$($$($1_BASE)_ASFLAGS) $$($$($1_BASE)_EXTRA_ASFLAGS)
|
||||
|
||||
ifneq ($$(filter %.c, $$($1_FILENAME)), )
|
||||
# Compile as a C file
|
||||
@@ -266,7 +267,7 @@ define SetupCompileNativeFileBody
|
||||
$1_DEP_FLAG := $(C_FLAG_DEPS)
|
||||
else ifneq ($$(filter %.s %.S, $$($1_FILENAME)), )
|
||||
# Compile as assembler file
|
||||
$1_FLAGS := $$($$($1_BASE)_ASFLAGS)
|
||||
$1_FLAGS := $$($1_BASE_ASFLAGS)
|
||||
$1_COMPILER := $(AS)
|
||||
$1_DEP_FLAG :=
|
||||
else ifneq ($$(filter %.cpp %.cc %.mm, $$($1_FILENAME)), )
|
||||
@@ -576,6 +577,7 @@ define SetupNativeCompilationBody
|
||||
ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
|
||||
$1_EXTRA_CFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
|
||||
$1_EXTRA_CXXFLAGS += $$(CFLAGS_DEBUG_SYMBOLS)
|
||||
$1_EXTRA_ASFLAGS += $$(ASFLAGS_DEBUG_SYMBOLS)
|
||||
endif
|
||||
|
||||
ifneq ($$($1_REORDER), )
|
||||
|
||||
@@ -94,7 +94,7 @@ define SetupTestFilesCompilationBody
|
||||
CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \
|
||||
LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \
|
||||
LIBS := $$($1_LIBS_$$(name)), \
|
||||
OPTIMIZATION := LOW, \
|
||||
OPTIMIZATION := $$(if $$($1_OPTIMIZATION_$$(name)),$$($1_OPTIMIZATION_$$(name)),LOW), \
|
||||
COPY_DEBUG_SYMBOLS := false, \
|
||||
STRIP_SYMBOLS := false, \
|
||||
)) \
|
||||
|
||||
@@ -525,8 +525,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
profiles[maketestName].default_make_targets = [ "test-make" ];
|
||||
});
|
||||
|
||||
// Profiles for building the zero jvm variant. These are used for verification
|
||||
// in JPRT.
|
||||
// Profiles for building the zero jvm variant. These are used for verification.
|
||||
var zeroProfiles = {
|
||||
"linux-x64-zero": {
|
||||
target_os: "linux",
|
||||
@@ -709,14 +708,6 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
profiles[openName].artifacts["jdk"].remote));
|
||||
});
|
||||
|
||||
// Enable ZGC in linux-x64-open builds
|
||||
[ "linux-x64-open" ].forEach(function (name) {
|
||||
var configureArgs = { configure_args: [ "--with-jvm-features=zgc" ] };
|
||||
var debugName = name + common.debug_suffix;
|
||||
profiles[name] = concatObjects(profiles[name], configureArgs);
|
||||
profiles[debugName] = concatObjects(profiles[debugName], configureArgs);
|
||||
});
|
||||
|
||||
// Generate cmp-baseline profiles for each main profile and their
|
||||
// corresponding debug profile. This profile does a compare build run with no
|
||||
// changes to verify that the compare script has a clean baseline
|
||||
@@ -733,18 +724,8 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
});
|
||||
});
|
||||
|
||||
// Profiles used to run tests. Used in JPRT and Mach 5.
|
||||
// Profiles used to run tests.
|
||||
var testOnlyProfiles = {
|
||||
"run-test-jprt": {
|
||||
target_os: input.build_os,
|
||||
target_cpu: input.build_cpu,
|
||||
dependencies: [ "jtreg", "gnumake", "boot_jdk", "devkit", "jib" ],
|
||||
labels: "test",
|
||||
environment: {
|
||||
"JT_JAVA": common.boot_jdk_home
|
||||
}
|
||||
},
|
||||
|
||||
"run-test": {
|
||||
target_os: input.build_os,
|
||||
target_cpu: input.build_cpu,
|
||||
@@ -806,7 +787,6 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
+ "/Xcode.app/Contents/Developer/usr/bin"
|
||||
};
|
||||
profiles["run-test"] = concatObjects(profiles["run-test"], macosxRunTestExtra);
|
||||
profiles["run-test-jprt"] = concatObjects(profiles["run-test-jprt"], macosxRunTestExtra);
|
||||
profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"], macosxRunTestExtra);
|
||||
}
|
||||
// On windows we want the debug symbols available at test time
|
||||
@@ -837,7 +817,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||
var getJibProfilesDependencies = function (input, common) {
|
||||
|
||||
var devkit_platform_revisions = {
|
||||
linux_x64: "gcc7.3.0-OEL6.4+1.0",
|
||||
linux_x64: "gcc7.3.0-OEL6.4+1.1",
|
||||
macosx_x64: "Xcode9.4-MacOSX10.13+1.0",
|
||||
solaris_x64: "SS12u4-Solaris11u1+1.0",
|
||||
solaris_sparcv9: "SS12u4-Solaris11u1+1.1",
|
||||
@@ -901,7 +881,7 @@ var getJibProfilesDependencies = function (input, common) {
|
||||
jtreg: {
|
||||
server: "javare",
|
||||
revision: "4.2",
|
||||
build_number: "b12",
|
||||
build_number: "b13",
|
||||
checksum_file: "MD5_VALUES",
|
||||
file: "jtreg_bin-4.2.zip",
|
||||
environment_name: "JT_HOME",
|
||||
@@ -1154,7 +1134,10 @@ var getVersion = function (feature, interim, update, patch) {
|
||||
var version = (feature != null ? feature : version_numbers.get("DEFAULT_VERSION_FEATURE"))
|
||||
+ "." + (interim != null ? interim : version_numbers.get("DEFAULT_VERSION_INTERIM"))
|
||||
+ "." + (update != null ? update : version_numbers.get("DEFAULT_VERSION_UPDATE"))
|
||||
+ "." + (patch != null ? patch : version_numbers.get("DEFAULT_VERSION_PATCH"));
|
||||
+ "." + (patch != null ? patch : version_numbers.get("DEFAULT_VERSION_PATCH"))
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA1")
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA2")
|
||||
+ "." + version_numbers.get("DEFAULT_VERSION_EXTRA3");
|
||||
while (version.match(".*\\.0$")) {
|
||||
version = version.substring(0, version.length - 2);
|
||||
}
|
||||
|
||||
@@ -105,11 +105,21 @@ class CharacterData00 extends CharacterData {
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierStart(int ch) {
|
||||
// isJavaIdentifierStart strictly conforms to code points assigned
|
||||
// in Unicode 10.0. Since code point {32FF} is not from Unicode 10.0,
|
||||
// return false.
|
||||
if(ch == 0x32FF)
|
||||
return false;
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) >= $$lowJavaStart);
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierPart(int ch) {
|
||||
// isJavaIdentifierPart strictly conforms to code points assigned
|
||||
// in Unicode 10.0. Since code point {32FF} is not from Unicode 10.0,
|
||||
// return false.
|
||||
if(ch == 0x32FF)
|
||||
return false;
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$nonzeroJavaPart) != 0);
|
||||
}
|
||||
@@ -653,6 +663,21 @@ class CharacterData00 extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.DECIMAL_DIGIT_NUMBER;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
|
||||
|
||||
@@ -418,6 +418,21 @@ class CharacterData01 extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.DECIMAL_DIGIT_NUMBER;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -217,6 +217,21 @@ class CharacterData02 extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.DECIMAL_DIGIT_NUMBER;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
return (getProperties(ch) & $$maskIdentifierInfo) == $$valueJavaWhitespace;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -217,6 +217,21 @@ class CharacterData0E extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.DECIMAL_DIGIT_NUMBER;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
package java.lang;
|
||||
|
||||
import jdk.internal.HotSpotIntrinsicCandidate;
|
||||
|
||||
/** The CharacterData class encapsulates the large tables found in
|
||||
Java.lang.Character. */
|
||||
|
||||
@@ -78,6 +80,23 @@ class CharacterDataLatin1 extends CharacterData {
|
||||
return props;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
boolean isDigit(int ch) {
|
||||
return '0' <= ch && ch <= '9';
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
boolean isLowerCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.LOWERCASE_LETTER;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
boolean isUpperCase(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return (props & $$maskType) == Character.UPPERCASE_LETTER;
|
||||
}
|
||||
|
||||
boolean isOtherLowercase(int ch) {
|
||||
int props = getPropertiesEx(ch);
|
||||
return (props & $$maskOtherLowercase) != 0;
|
||||
@@ -214,6 +233,7 @@ class CharacterDataLatin1 extends CharacterData {
|
||||
return retval;
|
||||
}
|
||||
|
||||
@HotSpotIntrinsicCandidate
|
||||
boolean isWhitespace(int ch) {
|
||||
int props = getProperties(ch);
|
||||
return ((props & $$maskIdentifierInfo) == $$valueJavaWhitespace);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -41,47 +41,59 @@ class CharacterDataPrivateUse extends CharacterData {
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierStart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierPart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUnicodeIdentifierStart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUnicodeIdentifierPart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isIdentifierIgnorable(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
int toLowerCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int toUpperCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int toTitleCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int digit(int ch, int radix) {
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int getNumericValue(int ch) {
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
byte getDirectionality(int ch) {
|
||||
@@ -91,7 +103,7 @@ class CharacterDataPrivateUse extends CharacterData {
|
||||
}
|
||||
|
||||
boolean isMirrored(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
static final CharacterData instance = new CharacterDataPrivateUse();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -35,59 +35,71 @@ class CharacterDataUndefined extends CharacterData {
|
||||
}
|
||||
|
||||
int getType(int ch) {
|
||||
return Character.UNASSIGNED;
|
||||
return Character.UNASSIGNED;
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierStart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isJavaIdentifierPart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUnicodeIdentifierStart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUnicodeIdentifierPart(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isIdentifierIgnorable(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
int toLowerCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int toUpperCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int toTitleCase(int ch) {
|
||||
return ch;
|
||||
return ch;
|
||||
}
|
||||
|
||||
int digit(int ch, int radix) {
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int getNumericValue(int ch) {
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
boolean isDigit(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isLowerCase(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isUpperCase(int ch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isWhitespace(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
byte getDirectionality(int ch) {
|
||||
return Character.DIRECTIONALITY_UNDEFINED;
|
||||
return Character.DIRECTIONALITY_UNDEFINED;
|
||||
}
|
||||
|
||||
boolean isMirrored(int ch) {
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
static final CharacterData instance = new CharacterDataUndefined();
|
||||
|
||||
94
make/data/charsetmapping/IBM1129.c2b
Normal file
94
make/data/charsetmapping/IBM1129.c2b
Normal file
@@ -0,0 +1,94 @@
|
||||
0x21 U+ff01
|
||||
0x22 U+ff02
|
||||
0x23 U+ff03
|
||||
0x24 U+ff04
|
||||
0x25 U+ff05
|
||||
0x26 U+ff06
|
||||
0x27 U+ff07
|
||||
0x28 U+ff08
|
||||
0x29 U+ff09
|
||||
0x2a U+ff0a
|
||||
0x2b U+ff0b
|
||||
0x2c U+ff0c
|
||||
0x2d U+ff0d
|
||||
0x2e U+ff0e
|
||||
0x2f U+ff0f
|
||||
0x30 U+ff10
|
||||
0x31 U+ff11
|
||||
0x32 U+ff12
|
||||
0x33 U+ff13
|
||||
0x34 U+ff14
|
||||
0x35 U+ff15
|
||||
0x36 U+ff16
|
||||
0x37 U+ff17
|
||||
0x38 U+ff18
|
||||
0x39 U+ff19
|
||||
0x3a U+ff1a
|
||||
0x3b U+ff1b
|
||||
0x3c U+ff1c
|
||||
0x3d U+ff1d
|
||||
0x3e U+ff1e
|
||||
0x3f U+ff1f
|
||||
0x40 U+ff20
|
||||
0x41 U+ff21
|
||||
0x42 U+ff22
|
||||
0x43 U+ff23
|
||||
0x44 U+ff24
|
||||
0x45 U+ff25
|
||||
0x46 U+ff26
|
||||
0x47 U+ff27
|
||||
0x48 U+ff28
|
||||
0x49 U+ff29
|
||||
0x4a U+ff2a
|
||||
0x4b U+ff2b
|
||||
0x4c U+ff2c
|
||||
0x4d U+ff2d
|
||||
0x4e U+ff2e
|
||||
0x4f U+ff2f
|
||||
0x50 U+ff30
|
||||
0x51 U+ff31
|
||||
0x52 U+ff32
|
||||
0x53 U+ff33
|
||||
0x54 U+ff34
|
||||
0x55 U+ff35
|
||||
0x56 U+ff36
|
||||
0x57 U+ff37
|
||||
0x58 U+ff38
|
||||
0x59 U+ff39
|
||||
0x5a U+ff3a
|
||||
0x5b U+ff3b
|
||||
0x5c U+ff3c
|
||||
0x5d U+ff3d
|
||||
0x5e U+ff3e
|
||||
0x5f U+ff3f
|
||||
0x60 U+ff40
|
||||
0x61 U+ff41
|
||||
0x62 U+ff42
|
||||
0x63 U+ff43
|
||||
0x64 U+ff44
|
||||
0x65 U+ff45
|
||||
0x66 U+ff46
|
||||
0x67 U+ff47
|
||||
0x68 U+ff48
|
||||
0x69 U+ff49
|
||||
0x6a U+ff4a
|
||||
0x6b U+ff4b
|
||||
0x6c U+ff4c
|
||||
0x6d U+ff4d
|
||||
0x6e U+ff4e
|
||||
0x6f U+ff4f
|
||||
0x70 U+ff50
|
||||
0x71 U+ff51
|
||||
0x72 U+ff52
|
||||
0x73 U+ff53
|
||||
0x74 U+ff54
|
||||
0x75 U+ff55
|
||||
0x76 U+ff56
|
||||
0x77 U+ff57
|
||||
0x78 U+ff58
|
||||
0x79 U+ff59
|
||||
0x7a U+ff5a
|
||||
0x7b U+ff5b
|
||||
0x7c U+ff5c
|
||||
0x7d U+ff5d
|
||||
0x7e U+ff5e
|
||||
256
make/data/charsetmapping/IBM1129.map
Normal file
256
make/data/charsetmapping/IBM1129.map
Normal file
@@ -0,0 +1,256 @@
|
||||
0x00 U+0000
|
||||
0x01 U+0001
|
||||
0x02 U+0002
|
||||
0x03 U+0003
|
||||
0x04 U+0004
|
||||
0x05 U+0005
|
||||
0x06 U+0006
|
||||
0x07 U+0007
|
||||
0x08 U+0008
|
||||
0x09 U+0009
|
||||
0x0a U+000a
|
||||
0x0b U+000b
|
||||
0x0c U+000c
|
||||
0x0d U+000d
|
||||
0x0e U+000e
|
||||
0x0f U+000f
|
||||
0x10 U+0010
|
||||
0x11 U+0011
|
||||
0x12 U+0012
|
||||
0x13 U+0013
|
||||
0x14 U+0014
|
||||
0x15 U+0015
|
||||
0x16 U+0016
|
||||
0x17 U+0017
|
||||
0x18 U+0018
|
||||
0x19 U+0019
|
||||
0x1a U+001a
|
||||
0x1b U+001b
|
||||
0x1c U+001c
|
||||
0x1d U+001d
|
||||
0x1e U+001e
|
||||
0x1f U+001f
|
||||
0x20 U+0020
|
||||
0x21 U+0021
|
||||
0x22 U+0022
|
||||
0x23 U+0023
|
||||
0x24 U+0024
|
||||
0x25 U+0025
|
||||
0x26 U+0026
|
||||
0x27 U+0027
|
||||
0x28 U+0028
|
||||
0x29 U+0029
|
||||
0x2a U+002a
|
||||
0x2b U+002b
|
||||
0x2c U+002c
|
||||
0x2d U+002d
|
||||
0x2e U+002e
|
||||
0x2f U+002f
|
||||
0x30 U+0030
|
||||
0x31 U+0031
|
||||
0x32 U+0032
|
||||
0x33 U+0033
|
||||
0x34 U+0034
|
||||
0x35 U+0035
|
||||
0x36 U+0036
|
||||
0x37 U+0037
|
||||
0x38 U+0038
|
||||
0x39 U+0039
|
||||
0x3a U+003a
|
||||
0x3b U+003b
|
||||
0x3c U+003c
|
||||
0x3d U+003d
|
||||
0x3e U+003e
|
||||
0x3f U+003f
|
||||
0x40 U+0040
|
||||
0x41 U+0041
|
||||
0x42 U+0042
|
||||
0x43 U+0043
|
||||
0x44 U+0044
|
||||
0x45 U+0045
|
||||
0x46 U+0046
|
||||
0x47 U+0047
|
||||
0x48 U+0048
|
||||
0x49 U+0049
|
||||
0x4a U+004a
|
||||
0x4b U+004b
|
||||
0x4c U+004c
|
||||
0x4d U+004d
|
||||
0x4e U+004e
|
||||
0x4f U+004f
|
||||
0x50 U+0050
|
||||
0x51 U+0051
|
||||
0x52 U+0052
|
||||
0x53 U+0053
|
||||
0x54 U+0054
|
||||
0x55 U+0055
|
||||
0x56 U+0056
|
||||
0x57 U+0057
|
||||
0x58 U+0058
|
||||
0x59 U+0059
|
||||
0x5a U+005a
|
||||
0x5b U+005b
|
||||
0x5c U+005c
|
||||
0x5d U+005d
|
||||
0x5e U+005e
|
||||
0x5f U+005f
|
||||
0x60 U+0060
|
||||
0x61 U+0061
|
||||
0x62 U+0062
|
||||
0x63 U+0063
|
||||
0x64 U+0064
|
||||
0x65 U+0065
|
||||
0x66 U+0066
|
||||
0x67 U+0067
|
||||
0x68 U+0068
|
||||
0x69 U+0069
|
||||
0x6a U+006a
|
||||
0x6b U+006b
|
||||
0x6c U+006c
|
||||
0x6d U+006d
|
||||
0x6e U+006e
|
||||
0x6f U+006f
|
||||
0x70 U+0070
|
||||
0x71 U+0071
|
||||
0x72 U+0072
|
||||
0x73 U+0073
|
||||
0x74 U+0074
|
||||
0x75 U+0075
|
||||
0x76 U+0076
|
||||
0x77 U+0077
|
||||
0x78 U+0078
|
||||
0x79 U+0079
|
||||
0x7a U+007a
|
||||
0x7b U+007b
|
||||
0x7c U+007c
|
||||
0x7d U+007d
|
||||
0x7e U+007e
|
||||
0x7f U+007f
|
||||
0x80 U+0080
|
||||
0x81 U+0081
|
||||
0x82 U+0082
|
||||
0x83 U+0083
|
||||
0x84 U+0084
|
||||
0x85 U+0085
|
||||
0x86 U+0086
|
||||
0x87 U+0087
|
||||
0x88 U+0088
|
||||
0x89 U+0089
|
||||
0x8a U+008a
|
||||
0x8b U+008b
|
||||
0x8c U+008c
|
||||
0x8d U+008d
|
||||
0x8e U+008e
|
||||
0x8f U+008f
|
||||
0x90 U+0090
|
||||
0x91 U+0091
|
||||
0x92 U+0092
|
||||
0x93 U+0093
|
||||
0x94 U+0094
|
||||
0x95 U+0095
|
||||
0x96 U+0096
|
||||
0x97 U+0097
|
||||
0x98 U+0098
|
||||
0x99 U+0099
|
||||
0x9a U+009a
|
||||
0x9b U+009b
|
||||
0x9c U+009c
|
||||
0x9d U+009d
|
||||
0x9e U+009e
|
||||
0x9f U+009f
|
||||
0xa0 U+00a0
|
||||
0xa1 U+00a1
|
||||
0xa2 U+00a2
|
||||
0xa3 U+00a3
|
||||
0xa4 U+00a4
|
||||
0xa5 U+00a5
|
||||
0xa6 U+00a6
|
||||
0xa7 U+00a7
|
||||
0xa8 U+0153
|
||||
0xa9 U+00a9
|
||||
0xaa U+00aa
|
||||
0xab U+00ab
|
||||
0xac U+00ac
|
||||
0xad U+00ad
|
||||
0xae U+00ae
|
||||
0xaf U+00af
|
||||
0xb0 U+00b0
|
||||
0xb1 U+00b1
|
||||
0xb2 U+00b2
|
||||
0xb3 U+00b3
|
||||
0xb4 U+0178
|
||||
0xb5 U+00b5
|
||||
0xb6 U+00b6
|
||||
0xb7 U+00b7
|
||||
0xb8 U+0152
|
||||
0xb9 U+00b9
|
||||
0xba U+00ba
|
||||
0xbb U+00bb
|
||||
0xbc U+00bc
|
||||
0xbd U+00bd
|
||||
0xbe U+00be
|
||||
0xbf U+00bf
|
||||
0xc0 U+00c0
|
||||
0xc1 U+00c1
|
||||
0xc2 U+00c2
|
||||
0xc3 U+0102
|
||||
0xc4 U+00c4
|
||||
0xc5 U+00c5
|
||||
0xc6 U+00c6
|
||||
0xc7 U+00c7
|
||||
0xc8 U+00c8
|
||||
0xc9 U+00c9
|
||||
0xca U+00ca
|
||||
0xcb U+00cb
|
||||
0xcc U+0300
|
||||
0xcd U+00cd
|
||||
0xce U+00ce
|
||||
0xcf U+00cf
|
||||
0xd0 U+0110
|
||||
0xd1 U+00d1
|
||||
0xd2 U+0309
|
||||
0xd3 U+00d3
|
||||
0xd4 U+00d4
|
||||
0xd5 U+01a0
|
||||
0xd6 U+00d6
|
||||
0xd7 U+00d7
|
||||
0xd8 U+00d8
|
||||
0xd9 U+00d9
|
||||
0xda U+00da
|
||||
0xdb U+00db
|
||||
0xdc U+00dc
|
||||
0xdd U+01af
|
||||
0xde U+0303
|
||||
0xdf U+00df
|
||||
0xe0 U+00e0
|
||||
0xe1 U+00e1
|
||||
0xe2 U+00e2
|
||||
0xe3 U+0103
|
||||
0xe4 U+00e4
|
||||
0xe5 U+00e5
|
||||
0xe6 U+00e6
|
||||
0xe7 U+00e7
|
||||
0xe8 U+00e8
|
||||
0xe9 U+00e9
|
||||
0xea U+00ea
|
||||
0xeb U+00eb
|
||||
0xec U+0301
|
||||
0xed U+00ed
|
||||
0xee U+00ee
|
||||
0xef U+00ef
|
||||
0xf0 U+0111
|
||||
0xf1 U+00f1
|
||||
0xf2 U+0323
|
||||
0xf3 U+00f3
|
||||
0xf4 U+00f4
|
||||
0xf5 U+01a1
|
||||
0xf6 U+00f6
|
||||
0xf7 U+00f7
|
||||
0xf8 U+00f8
|
||||
0xf9 U+00f9
|
||||
0xfa U+00fa
|
||||
0xfb U+00fb
|
||||
0xfc U+00fc
|
||||
0xfd U+01b0
|
||||
0xfe U+20ab
|
||||
0xff U+00ff
|
||||
@@ -5,14 +5,3 @@ A1AD 223C
|
||||
A2A6 FF5E
|
||||
A2C1 2299
|
||||
A3DC 20A9
|
||||
#
|
||||
# see .map file for the info regarding following 3 entries
|
||||
#
|
||||
a1aa 6950
|
||||
a1a9 84f1
|
||||
a1ad cf7f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
#
|
||||
# source: Cp970.b2c, which is identical(?) to 03CA34B0.TPMAP100
|
||||
#
|
||||
# Warning:
|
||||
# following 3 c->b only entries exist in the "old" implementation,
|
||||
# they don't appear existing in any of of the cdc 970 tables. Added
|
||||
# them into c2b for "compatibility
|
||||
# 6950 -> a1aa 2014
|
||||
# 84f1 -> a1a9 2010
|
||||
# cf7f -> a1ad 301c
|
||||
#
|
||||
#
|
||||
00 0000
|
||||
01 0001
|
||||
02 0002
|
||||
@@ -294,6 +285,7 @@ A2BD 2661
|
||||
A2BE 2665
|
||||
A2BF 2667
|
||||
A2C0 2663
|
||||
A2C1 25C9
|
||||
A2C2 25C8
|
||||
A2C3 25A3
|
||||
A2C4 25D0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -440,6 +440,8 @@ charset IBM00858 IBM858
|
||||
alias cp00858
|
||||
alias 858
|
||||
alias PC-Multilingual-850+euro
|
||||
alias ibm858
|
||||
alias ibm-858
|
||||
|
||||
charset IBM862 IBM862
|
||||
package sun.nio.cs
|
||||
@@ -1241,6 +1243,16 @@ charset x-IBM1124 IBM1124
|
||||
alias ibm-1124
|
||||
alias 1124
|
||||
|
||||
charset x-IBM1129 IBM1129
|
||||
package sun.nio.cs.ext
|
||||
type sbcs
|
||||
hisname Cp1129
|
||||
ascii false
|
||||
alias cp1129 # JDK historical
|
||||
alias ibm1129
|
||||
alias ibm-1129
|
||||
alias 1129
|
||||
|
||||
charset x-IBM1364 IBM1364
|
||||
package sun.nio.cs.ext
|
||||
type ebcdic
|
||||
@@ -1379,6 +1391,7 @@ charset x-IBM833 IBM833
|
||||
alias cp833
|
||||
alias ibm833
|
||||
alias ibm-833
|
||||
alias 833
|
||||
|
||||
|
||||
charset x-IBM834 IBM834 # EBCDIC DBCS-only Korean
|
||||
@@ -1544,12 +1557,22 @@ charset x-IBM970 IBM970
|
||||
|
||||
charset x-IBM964 IBM964
|
||||
package sun.nio.cs.ext
|
||||
type source
|
||||
type template
|
||||
alias cp964 # JDK historical
|
||||
alias ibm964
|
||||
alias ibm-964
|
||||
alias ibm-euctw
|
||||
alias 964
|
||||
|
||||
charset x-IBM29626C IBM29626C
|
||||
package sun.nio.cs.ext
|
||||
type template
|
||||
alias cp29626c # JDK historical
|
||||
alias ibm29626c
|
||||
alias ibm-29626c
|
||||
alias 29626c
|
||||
alias ibm-eucjp
|
||||
|
||||
charset x-IBM33722 IBM33722
|
||||
package sun.nio.cs.ext
|
||||
type source
|
||||
@@ -1570,6 +1593,8 @@ charset IBM01140 IBM1140
|
||||
alias cp01140
|
||||
alias 1140
|
||||
alias ebcdic-us-037+euro
|
||||
alias ibm1140
|
||||
alias ibm-1140
|
||||
|
||||
charset IBM01141 IBM1141
|
||||
package sun.nio.cs.ext
|
||||
@@ -1581,6 +1606,8 @@ charset IBM01141 IBM1141
|
||||
alias cp01141
|
||||
alias 1141
|
||||
alias ebcdic-de-273+euro
|
||||
alias ibm1141
|
||||
alias ibm-1141
|
||||
|
||||
charset IBM01142 IBM1142
|
||||
package sun.nio.cs.ext
|
||||
@@ -1593,6 +1620,8 @@ charset IBM01142 IBM1142
|
||||
alias 1142
|
||||
alias ebcdic-no-277+euro
|
||||
alias ebcdic-dk-277+euro
|
||||
alias ibm1142
|
||||
alias ibm-1142
|
||||
|
||||
charset IBM01143 IBM1143
|
||||
package sun.nio.cs.ext
|
||||
@@ -1605,6 +1634,8 @@ charset IBM01143 IBM1143
|
||||
alias 1143
|
||||
alias ebcdic-fi-278+euro
|
||||
alias ebcdic-se-278+euro
|
||||
alias ibm1143
|
||||
alias ibm-1143
|
||||
|
||||
charset IBM01144 IBM1144
|
||||
package sun.nio.cs.ext
|
||||
@@ -1616,6 +1647,8 @@ charset IBM01144 IBM1144
|
||||
alias cp01144
|
||||
alias 1144
|
||||
alias ebcdic-it-280+euro
|
||||
alias ibm1144
|
||||
alias ibm-1144
|
||||
|
||||
charset IBM01145 IBM1145
|
||||
package sun.nio.cs.ext
|
||||
@@ -1627,6 +1660,8 @@ charset IBM01145 IBM1145
|
||||
alias cp01145
|
||||
alias 1145
|
||||
alias ebcdic-es-284+euro
|
||||
alias ibm1145
|
||||
alias ibm-1145
|
||||
|
||||
charset IBM01146 IBM1146
|
||||
package sun.nio.cs.ext
|
||||
@@ -1638,6 +1673,8 @@ charset IBM01146 IBM1146
|
||||
alias cp01146
|
||||
alias 1146
|
||||
alias ebcdic-gb-285+euro
|
||||
alias ibm1146
|
||||
alias ibm-1146
|
||||
|
||||
charset IBM01147 IBM1147
|
||||
package sun.nio.cs.ext
|
||||
@@ -1649,6 +1686,8 @@ charset IBM01147 IBM1147
|
||||
alias cp01147
|
||||
alias 1147
|
||||
alias ebcdic-fr-277+euro
|
||||
alias ibm1147
|
||||
alias ibm-1147
|
||||
|
||||
charset IBM01148 IBM1148
|
||||
package sun.nio.cs.ext
|
||||
@@ -1660,6 +1699,8 @@ charset IBM01148 IBM1148
|
||||
alias cp01148
|
||||
alias 1148
|
||||
alias ebcdic-international-500+euro
|
||||
alias ibm1148
|
||||
alias ibm-1148
|
||||
|
||||
charset IBM01149 IBM1149
|
||||
package sun.nio.cs.ext
|
||||
@@ -1671,6 +1712,8 @@ charset IBM01149 IBM1149
|
||||
alias cp01149
|
||||
alias 1149
|
||||
alias ebcdic-s-871+euro
|
||||
alias ibm1149
|
||||
alias ibm-1149
|
||||
|
||||
charset IBM290 IBM290
|
||||
package sun.nio.cs.ext
|
||||
@@ -1851,6 +1894,11 @@ charset x-JIS0212_MS5022X JIS_X_0212_MS5022X
|
||||
minmax 0x21 0x7e 0x21 0x7e
|
||||
internal true # "internal implementation
|
||||
|
||||
charset SimpleEUCEncoder SimpleEUCEncoder
|
||||
package sun.nio.cs.ext
|
||||
type template
|
||||
internal true
|
||||
|
||||
########################################################
|
||||
#
|
||||
# platform specific charsets, to be registered into spi
|
||||
|
||||
@@ -16,11 +16,18 @@ IBM942C
|
||||
IBM943
|
||||
IBM943C
|
||||
IBM950
|
||||
IBM964
|
||||
IBM970
|
||||
IBM1046
|
||||
IBM1124
|
||||
IBM1129
|
||||
IBM1383
|
||||
IBM29626C
|
||||
ISO_8859_6
|
||||
ISO_8859_8
|
||||
JIS_X_0201
|
||||
JIS_X_0208
|
||||
JIS_X_0212
|
||||
MS1252
|
||||
TIS_620
|
||||
SimpleEUCEncoder
|
||||
|
||||
@@ -32,7 +32,7 @@ formatVersion=3
|
||||
# Version of the currency code information in this class.
|
||||
# It is a serial number that accompanies with each amendment.
|
||||
|
||||
dataVersion=167
|
||||
dataVersion=169
|
||||
|
||||
# List of all valid ISO 4217 currency codes.
|
||||
# To ensure compatibility, do not remove codes.
|
||||
@@ -54,7 +54,7 @@ all=ADP020-AED784-AFA004-AFN971-ALL008-AMD051-ANG532-AOA973-ARS032-ATS040-AUD036
|
||||
SBD090-SCR690-SDD736-SDG938-SEK752-SGD702-SHP654-SIT705-SKK703-SLL694-SOS706-\
|
||||
SRD968-SRG740-SSP728-STD678-STN930-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\
|
||||
TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\
|
||||
UYU858-UZS860-VEB862-VEF937-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
|
||||
UYU858-UZS860-VEB862-VEF937-VES928-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
|
||||
XBB956-XBC957-XBD958-XCD951-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
|
||||
XPT962-XSU994-XTS963-XUA965-XXX999-YER886-YUM891-ZAR710-ZMK894-ZMW967-ZWD716-ZWL932-\
|
||||
ZWN942-ZWR935
|
||||
@@ -509,7 +509,7 @@ SR=SRD
|
||||
SJ=NOK
|
||||
# Sint Maarten (Dutch part)
|
||||
SX=ANG
|
||||
# SWAZILAND
|
||||
# ESWATINI
|
||||
SZ=SZL
|
||||
# SWEDEN
|
||||
SE=SEK
|
||||
@@ -564,7 +564,7 @@ UZ=UZS
|
||||
# VANUATU
|
||||
VU=VUV
|
||||
# VENEZUELA (BOLIVARIAN REPUBLIC OF)
|
||||
VE=VEF
|
||||
VE=VES
|
||||
# VIET NAM
|
||||
VN=VND
|
||||
# VIRGIN ISLANDS, BRITISH
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
File-Date: 2018-04-23
|
||||
File-Date: 2019-04-03
|
||||
%%
|
||||
Type: language
|
||||
Subtag: aa
|
||||
@@ -593,6 +593,7 @@ Suppress-Script: Latn
|
||||
Type: language
|
||||
Subtag: lg
|
||||
Description: Ganda
|
||||
Description: Luganda
|
||||
Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
@@ -3351,7 +3352,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: aue
|
||||
Description: =/Kx'au//'ein
|
||||
Description: ǂKxʼauǁʼein
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2015-02-12
|
||||
Preferred-Value: ktz
|
||||
@@ -9812,6 +9813,12 @@ Description: Dzùùngoo
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dno
|
||||
Description: Ndrulo
|
||||
Description: Northern Lendu
|
||||
Added: 2018-10-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dnr
|
||||
Description: Danaru
|
||||
Added: 2009-07-29
|
||||
@@ -10338,6 +10345,11 @@ Description: Dhuwaya
|
||||
Added: 2016-05-30
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dwz
|
||||
Description: Dewas Rai
|
||||
Added: 2018-10-28
|
||||
%%
|
||||
Type: language
|
||||
Subtag: dya
|
||||
Description: Dyan
|
||||
Added: 2009-07-29
|
||||
@@ -12022,7 +12034,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gfx
|
||||
Description: Mangetti Dune !Xung
|
||||
Description: Mangetti Dune ǃXung
|
||||
Added: 2012-08-12
|
||||
Deprecated: 2015-02-12
|
||||
Preferred-Value: vaj
|
||||
@@ -12328,7 +12340,6 @@ Macrolanguage: kpe
|
||||
Type: language
|
||||
Subtag: gku
|
||||
Description: ǂUngkue
|
||||
Description: =/Ungkue
|
||||
Added: 2015-02-12
|
||||
%%
|
||||
Type: language
|
||||
@@ -12523,7 +12534,6 @@ Added: 2018-03-08
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gnk
|
||||
Description: //Gana
|
||||
Description: ǁGana
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -13156,7 +13166,6 @@ Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
Subtag: gwj
|
||||
Description: /Gwi
|
||||
Description: ǀGwi
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -13489,7 +13498,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: hgm
|
||||
Description: Hai//om
|
||||
Description: Haiǁom
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -13833,7 +13841,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: hnh
|
||||
Description: //Ani
|
||||
Description: ǁAni
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -14113,7 +14120,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: huc
|
||||
Description: =/Hua
|
||||
Description: ǂHua
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -18425,7 +18431,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ktz
|
||||
Description: Ju/'hoan
|
||||
Description: Juǀʼhoan
|
||||
Description: Juǀʼhoansi
|
||||
Added: 2009-07-29
|
||||
@@ -24926,7 +24931,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: ngh
|
||||
Description: N/u
|
||||
Description: Nǀu
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -25641,7 +25645,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: nmn
|
||||
Description: !Xóõ
|
||||
Description: ǃXóõ
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -27613,7 +27616,7 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: oun
|
||||
Description: !O!ung
|
||||
Description: ǃOǃung
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2015-02-12
|
||||
Preferred-Value: vaj
|
||||
@@ -36667,7 +36670,6 @@ Added: 2005-10-16
|
||||
Type: language
|
||||
Subtag: vaj
|
||||
Description: Sekele
|
||||
Description: Northwestern !Kung
|
||||
Description: Northwestern ǃKung
|
||||
Description: Vasekele
|
||||
Added: 2009-07-29
|
||||
@@ -38299,7 +38301,6 @@ Added: 2005-10-16
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xam
|
||||
Description: /Xam
|
||||
Description: ǀXam
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -38559,7 +38560,6 @@ Added: 2009-07-29
|
||||
%%
|
||||
Type: language
|
||||
Subtag: xeg
|
||||
Description: //Xegwi
|
||||
Description: ǁXegwi
|
||||
Added: 2009-07-29
|
||||
%%
|
||||
@@ -43008,6 +43008,7 @@ Subtag: lsg
|
||||
Description: Lyons Sign Language
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2018-03-08
|
||||
Preferred-Value: lsg
|
||||
Prefix: sgn
|
||||
%%
|
||||
Type: extlang
|
||||
@@ -43406,6 +43407,7 @@ Subtag: rsi
|
||||
Description: Rennellese Sign Language
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2017-02-23
|
||||
Preferred-Value: rsi
|
||||
Prefix: sgn
|
||||
%%
|
||||
Type: extlang
|
||||
@@ -43760,6 +43762,7 @@ Subtag: yds
|
||||
Description: Yiddish Sign Language
|
||||
Added: 2009-07-29
|
||||
Deprecated: 2015-02-12
|
||||
Preferred-Value: yds
|
||||
Prefix: sgn
|
||||
%%
|
||||
Type: extlang
|
||||
@@ -44036,6 +44039,11 @@ Description: Elbasan
|
||||
Added: 2010-08-16
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Elym
|
||||
Description: Elymaic
|
||||
Added: 2018-10-28
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Ethi
|
||||
Description: Ethiopic
|
||||
Description: Geʻez
|
||||
@@ -44432,6 +44440,11 @@ Description: Burmese
|
||||
Added: 2005-10-16
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Nand
|
||||
Description: Nandinagari
|
||||
Added: 2018-10-28
|
||||
%%
|
||||
Type: script
|
||||
Subtag: Narb
|
||||
Description: Old North Arabian
|
||||
Description: Ancient North Arabian
|
||||
@@ -46032,6 +46045,8 @@ Added: 2005-10-16
|
||||
%%
|
||||
Type: region
|
||||
Subtag: SZ
|
||||
Description: Eswatini
|
||||
Description: eSwatini
|
||||
Description: Swaziland
|
||||
Added: 2005-10-16
|
||||
%%
|
||||
@@ -46525,16 +46540,16 @@ Subtag: arevela
|
||||
Description: Eastern Armenian
|
||||
Added: 2006-09-18
|
||||
Deprecated: 2018-03-24
|
||||
Preferred-Value: hy
|
||||
Prefix: hy
|
||||
Comments: Preferred tag is hy
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: arevmda
|
||||
Description: Western Armenian
|
||||
Added: 2006-09-18
|
||||
Deprecated: 2018-03-24
|
||||
Preferred-Value: hyw
|
||||
Prefix: hy
|
||||
Comments: Preferred tag is hyw
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: asante
|
||||
@@ -46630,6 +46645,12 @@ Prefix: en
|
||||
Comments: Jargon embedded in American English
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: bornholm
|
||||
Description: Bornholmsk
|
||||
Added: 2019-03-27
|
||||
Prefix: da
|
||||
%%
|
||||
Type: variant
|
||||
Subtag: cisaup
|
||||
Description: Cisalpine
|
||||
Added: 2018-04-22
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
Github: https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat
|
||||
Date: 2018-05-24
|
||||
Github: https://raw.githubusercontent.com/publicsuffix/list/ce0d1a5fba657e55adea3abde4b7f1e50636ff10/public_suffix_list.dat
|
||||
Date: 2019-01-28
|
||||
|
||||
@@ -381,8 +381,13 @@ gov.bm
|
||||
net.bm
|
||||
org.bm
|
||||
|
||||
// bn : https://en.wikipedia.org/wiki/.bn
|
||||
*.bn
|
||||
// bn : http://www.bnnic.bn/faqs
|
||||
bn
|
||||
com.bn
|
||||
edu.bn
|
||||
gov.bn
|
||||
net.bn
|
||||
org.bn
|
||||
|
||||
// bo : https://nic.bo/delegacion2015.php#h-1.10
|
||||
bo
|
||||
@@ -546,6 +551,7 @@ niteroi.br
|
||||
not.br
|
||||
ntr.br
|
||||
odo.br
|
||||
ong.br
|
||||
org.br
|
||||
osasco.br
|
||||
palmas.br
|
||||
@@ -1239,7 +1245,7 @@ tozsde.hu
|
||||
utazas.hu
|
||||
video.hu
|
||||
|
||||
// id : https://register.pandi.or.id/
|
||||
// id : https://pandi.id/en/domain/registration-requirements/
|
||||
id
|
||||
ac.id
|
||||
biz.id
|
||||
@@ -1250,6 +1256,7 @@ mil.id
|
||||
my.id
|
||||
net.id
|
||||
or.id
|
||||
ponpes.id
|
||||
sch.id
|
||||
web.id
|
||||
|
||||
@@ -1407,9 +1414,9 @@ taa.it
|
||||
tos.it
|
||||
toscana.it
|
||||
trentin-sud-tirol.it
|
||||
trentin-süd-tirol.it
|
||||
trentin-süd-tirol.it
|
||||
trentin-sudtirol.it
|
||||
trentin-südtirol.it
|
||||
trentin-südtirol.it
|
||||
trentin-sued-tirol.it
|
||||
trentin-suedtirol.it
|
||||
trentino-a-adige.it
|
||||
@@ -1419,9 +1426,9 @@ trentino-altoadige.it
|
||||
trentino-s-tirol.it
|
||||
trentino-stirol.it
|
||||
trentino-sud-tirol.it
|
||||
trentino-süd-tirol.it
|
||||
trentino-süd-tirol.it
|
||||
trentino-sudtirol.it
|
||||
trentino-südtirol.it
|
||||
trentino-südtirol.it
|
||||
trentino-sued-tirol.it
|
||||
trentino-suedtirol.it
|
||||
trentino.it
|
||||
@@ -1432,15 +1439,15 @@ trentinoaltoadige.it
|
||||
trentinos-tirol.it
|
||||
trentinostirol.it
|
||||
trentinosud-tirol.it
|
||||
trentinosüd-tirol.it
|
||||
trentinosüd-tirol.it
|
||||
trentinosudtirol.it
|
||||
trentinosüdtirol.it
|
||||
trentinosüdtirol.it
|
||||
trentinosued-tirol.it
|
||||
trentinosuedtirol.it
|
||||
trentinsud-tirol.it
|
||||
trentinsüd-tirol.it
|
||||
trentinsüd-tirol.it
|
||||
trentinsudtirol.it
|
||||
trentinsüdtirol.it
|
||||
trentinsüdtirol.it
|
||||
trentinsued-tirol.it
|
||||
trentinsuedtirol.it
|
||||
tuscany.it
|
||||
@@ -1457,13 +1464,13 @@ valleaosta.it
|
||||
valled-aosta.it
|
||||
valledaosta.it
|
||||
vallee-aoste.it
|
||||
vallée-aoste.it
|
||||
vallée-aoste.it
|
||||
vallee-d-aoste.it
|
||||
vallée-d-aoste.it
|
||||
vallée-d-aoste.it
|
||||
valleeaoste.it
|
||||
valléeaoste.it
|
||||
valléeaoste.it
|
||||
valleedaoste.it
|
||||
valléedaoste.it
|
||||
valléedaoste.it
|
||||
vao.it
|
||||
vda.it
|
||||
ven.it
|
||||
@@ -1497,7 +1504,7 @@ av.it
|
||||
avellino.it
|
||||
ba.it
|
||||
balsan-sudtirol.it
|
||||
balsan-südtirol.it
|
||||
balsan-südtirol.it
|
||||
balsan-suedtirol.it
|
||||
balsan.it
|
||||
bari.it
|
||||
@@ -1516,7 +1523,7 @@ bologna.it
|
||||
bolzano-altoadige.it
|
||||
bolzano.it
|
||||
bozen-sudtirol.it
|
||||
bozen-südtirol.it
|
||||
bozen-südtirol.it
|
||||
bozen-suedtirol.it
|
||||
bozen.it
|
||||
br.it
|
||||
@@ -1525,7 +1532,7 @@ brindisi.it
|
||||
bs.it
|
||||
bt.it
|
||||
bulsan-sudtirol.it
|
||||
bulsan-südtirol.it
|
||||
bulsan-südtirol.it
|
||||
bulsan-suedtirol.it
|
||||
bulsan.it
|
||||
bz.it
|
||||
@@ -1545,9 +1552,9 @@ catanzaro.it
|
||||
cb.it
|
||||
ce.it
|
||||
cesena-forli.it
|
||||
cesena-forlì.it
|
||||
cesena-forlì.it
|
||||
cesenaforli.it
|
||||
cesenaforlì.it
|
||||
cesenaforlì.it
|
||||
ch.it
|
||||
chieti.it
|
||||
ci.it
|
||||
@@ -1578,9 +1585,9 @@ florence.it
|
||||
fm.it
|
||||
foggia.it
|
||||
forli-cesena.it
|
||||
forlì-cesena.it
|
||||
forlì-cesena.it
|
||||
forlicesena.it
|
||||
forlìcesena.it
|
||||
forlìcesena.it
|
||||
fr.it
|
||||
frosinone.it
|
||||
ge.it
|
||||
@@ -1711,7 +1718,7 @@ sp.it
|
||||
sr.it
|
||||
ss.it
|
||||
suedtirol.it
|
||||
südtirol.it
|
||||
südtirol.it
|
||||
sv.it
|
||||
ta.it
|
||||
taranto.it
|
||||
@@ -3692,8 +3699,16 @@ jeonnam.kr
|
||||
seoul.kr
|
||||
ulsan.kr
|
||||
|
||||
// kw : https://en.wikipedia.org/wiki/.kw
|
||||
*.kw
|
||||
// kw : https://www.nic.kw/policies/
|
||||
// Confirmed by registry <nic.tech@citra.gov.kw>
|
||||
kw
|
||||
com.kw
|
||||
edu.kw
|
||||
emb.kw
|
||||
gov.kw
|
||||
ind.kw
|
||||
net.kw
|
||||
org.kw
|
||||
|
||||
// ky : http://www.icta.ky/da_ky_reg_dom.php
|
||||
// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17
|
||||
@@ -3775,10 +3790,18 @@ gov.lr
|
||||
org.lr
|
||||
net.lr
|
||||
|
||||
// ls : https://en.wikipedia.org/wiki/.ls
|
||||
// ls : http://www.nic.ls/
|
||||
// Confirmed by registry <lsadmin@nic.ls>
|
||||
ls
|
||||
ac.ls
|
||||
biz.ls
|
||||
co.ls
|
||||
edu.ls
|
||||
gov.ls
|
||||
info.ls
|
||||
net.ls
|
||||
org.ls
|
||||
sc.ls
|
||||
|
||||
// lt : https://en.wikipedia.org/wiki/.lt
|
||||
lt
|
||||
@@ -4636,9 +4659,6 @@ web.ni
|
||||
// ccTLD for the Netherlands
|
||||
nl
|
||||
|
||||
// BV.nl will be a registry for dutch BV's (besloten vennootschap)
|
||||
bv.nl
|
||||
|
||||
// no : http://www.norid.no/regelverk/index.en.html
|
||||
// The Norwegian registry has declined to notify us of updates. The web pages
|
||||
// referenced below are the official source of the data. There is also an
|
||||
@@ -8329,9 +8349,6 @@ golf
|
||||
// goo : 2014-12-18 NTT Resonant Inc.
|
||||
goo
|
||||
|
||||
// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company
|
||||
goodhands
|
||||
|
||||
// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company
|
||||
goodyear
|
||||
|
||||
@@ -8608,9 +8625,6 @@ itv
|
||||
// iveco : 2015-09-03 CNH Industrial N.V.
|
||||
iveco
|
||||
|
||||
// iwc : 2014-06-23 Richemont DNS Inc.
|
||||
iwc
|
||||
|
||||
// jaguar : 2014-11-13 Jaguar Land Rover Ltd
|
||||
jaguar
|
||||
|
||||
@@ -8635,9 +8649,6 @@ jewelry
|
||||
// jio : 2015-04-02 Reliance Industries Limited
|
||||
jio
|
||||
|
||||
// jlc : 2014-12-04 Richemont DNS Inc.
|
||||
jlc
|
||||
|
||||
// jll : 2015-04-02 Jones Lang LaSalle Incorporated
|
||||
jll
|
||||
|
||||
@@ -8989,9 +9000,6 @@ men
|
||||
// menu : 2013-09-11 Wedding TLD2, LLC
|
||||
menu
|
||||
|
||||
// meo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A.
|
||||
meo
|
||||
|
||||
// merckmsd : 2016-07-14 MSD Registry Holdings, Inc.
|
||||
merckmsd
|
||||
|
||||
@@ -9283,9 +9291,6 @@ page
|
||||
// panasonic : 2015-07-30 Panasonic Corporation
|
||||
panasonic
|
||||
|
||||
// panerai : 2014-11-07 Richemont DNS Inc.
|
||||
panerai
|
||||
|
||||
// paris : 2014-01-30 City of Paris
|
||||
paris
|
||||
|
||||
@@ -9634,9 +9639,6 @@ sanofi
|
||||
// sap : 2014-03-27 SAP AG
|
||||
sap
|
||||
|
||||
// sapo : 2014-11-07 MEO Servicos de Comunicacoes e Multimedia, S.A.
|
||||
sapo
|
||||
|
||||
// sarl : 2014-07-03 Binky Moon, LLC
|
||||
sarl
|
||||
|
||||
@@ -9877,9 +9879,6 @@ statebank
|
||||
// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company
|
||||
statefarm
|
||||
|
||||
// statoil : 2014-12-04 Statoil ASA
|
||||
statoil
|
||||
|
||||
// stc : 2014-10-09 Saudi Telecom Company
|
||||
stc
|
||||
|
||||
@@ -9991,9 +9990,6 @@ tech
|
||||
// technology : 2013-09-13 Binky Moon, LLC
|
||||
technology
|
||||
|
||||
// telecity : 2015-02-19 TelecityGroup International Limited
|
||||
telecity
|
||||
|
||||
// telefonica : 2014-10-16 Telefónica S.A.
|
||||
telefonica
|
||||
|
||||
@@ -10201,9 +10197,6 @@ visa
|
||||
// vision : 2013-12-05 Binky Moon, LLC
|
||||
vision
|
||||
|
||||
// vista : 2014-09-18 Vistaprint Limited
|
||||
vista
|
||||
|
||||
// vistaprint : 2014-09-18 Vistaprint Limited
|
||||
vistaprint
|
||||
|
||||
@@ -10642,9 +10635,6 @@ vermögensberatung
|
||||
// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
|
||||
政务
|
||||
|
||||
// xperia : 2015-05-14 Sony Mobile Communications AB
|
||||
xperia
|
||||
|
||||
// xyz : 2013-12-05 XYZ.COM LLC
|
||||
xyz
|
||||
|
||||
@@ -10737,6 +10727,7 @@ us-east-1.amazonaws.com
|
||||
// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
|
||||
// Submitted by Luke Wells <psl-maintainers@amazon.com>
|
||||
cn-north-1.eb.amazonaws.com.cn
|
||||
cn-northwest-1.eb.amazonaws.com.cn
|
||||
elasticbeanstalk.com
|
||||
ap-northeast-1.elasticbeanstalk.com
|
||||
ap-northeast-2.elasticbeanstalk.com
|
||||
@@ -10823,6 +10814,10 @@ s3-website.us-east-2.amazonaws.com
|
||||
t3l3p0rt.net
|
||||
tele.amune.org
|
||||
|
||||
// Apigee : https://apigee.com/
|
||||
// Submitted by Apigee Security Team <security@apigee.com>
|
||||
apigee.io
|
||||
|
||||
// Aptible : https://www.aptible.com/
|
||||
// Submitted by Thomas Orozco <thomas@aptible.com>
|
||||
on-aptible.com
|
||||
@@ -10842,6 +10837,11 @@ sweetpepper.org
|
||||
// Submitted by Vincent Tseng <vincenttseng@asustor.com>
|
||||
myasustor.com
|
||||
|
||||
// Automattic Inc. : https://automattic.com/
|
||||
// Submitted by Alex Concha <alex.concha@automattic.com>
|
||||
go-vip.co
|
||||
wpcomstaging.com
|
||||
|
||||
// AVM : https://avm.de
|
||||
// Submitted by Andreas Weise <a.weise@avm.de>
|
||||
myfritz.net
|
||||
@@ -10888,6 +10888,11 @@ square7.net
|
||||
// Submitted by Dave Tharp <browsersafetymark.io@quicinc.com>
|
||||
browsersafetymark.io
|
||||
|
||||
// Bytemark Hosting : https://www.bytemark.co.uk
|
||||
// Submitted by Paul Cammish <paul.cammish@bytemark.co.uk>
|
||||
dh.bytemark.co.uk
|
||||
vm.bytemark.co.uk
|
||||
|
||||
// callidomus : https://www.callidomus.com/
|
||||
// Submitted by Marcus Popp <admin@callidomus.com>
|
||||
mycd.eu
|
||||
@@ -11080,6 +11085,11 @@ firm.dk
|
||||
reg.dk
|
||||
store.dk
|
||||
|
||||
// dapps.earth : https://dapps.earth/
|
||||
// Submitted by Daniil Burdakov <icqkill@gmail.com>
|
||||
*.dapps.earth
|
||||
*.bzz.dapps.earth
|
||||
|
||||
// Debian : https://www.debian.org/
|
||||
// Submitted by Peter Palfrader / Debian Sysadmin Team <dsa-publicsuffixlist@debian.org>
|
||||
debian.net
|
||||
@@ -11092,6 +11102,11 @@ dedyn.io
|
||||
// Submitted by Norbert Auler <mail@dnshome.de>
|
||||
dnshome.de
|
||||
|
||||
// DotArai : https://www.dotarai.com/
|
||||
// Submitted by Atsadawat Netcharadsang <atsadawat@dotarai.co.th>
|
||||
online.th
|
||||
shop.th
|
||||
|
||||
// DrayTek Corp. : https://www.draytek.com/
|
||||
// Submitted by Paul Fang <mis@draytek.com>
|
||||
drayddns.com
|
||||
@@ -11648,6 +11663,10 @@ cloud.fedoraproject.org
|
||||
app.os.fedoraproject.org
|
||||
app.os.stg.fedoraproject.org
|
||||
|
||||
// Fermax : https://fermax.com/
|
||||
// submitted by Koen Van Isterdael <k.vanisterdael@fermax.be>
|
||||
mydobiss.com
|
||||
|
||||
// Filegear Inc. : https://www.filegear.com
|
||||
// Submitted by Jason Zhu <jason@owtware.com>
|
||||
filegear.me
|
||||
@@ -11713,6 +11732,8 @@ goip.de
|
||||
|
||||
// Google, Inc.
|
||||
// Submitted by Eduardo Vela <evn@google.com>
|
||||
run.app
|
||||
a.run.app
|
||||
*.0emm.com
|
||||
appspot.com
|
||||
blogspot.ae
|
||||
@@ -11918,6 +11939,12 @@ git-repos.de
|
||||
lcube-server.de
|
||||
svn-repos.de
|
||||
|
||||
// Leadpages : https://www.leadpages.net
|
||||
// Submitted by Greg Dallavalle <domains@leadpages.net>
|
||||
leadpages.co
|
||||
lpages.co
|
||||
lpusercontent.com
|
||||
|
||||
// Lightmaker Property Manager, Inc. : https://app.lmpm.com/
|
||||
// Submitted by Greg Holland <greg.holland@lmpm.com>
|
||||
app.lmpm.com
|
||||
@@ -11935,6 +11962,15 @@ linkyard-cloud.ch
|
||||
// Submitted by Victor Velchev <admin@liquidnetlimited.com>
|
||||
we.bs
|
||||
|
||||
// LubMAN UMCS Sp. z o.o : https://lubman.pl/
|
||||
// Submitted by Ireneusz Maliszewski <ireneusz.maliszewski@lubman.pl>
|
||||
krasnik.pl
|
||||
leczna.pl
|
||||
lubartow.pl
|
||||
lublin.pl
|
||||
poniatowa.pl
|
||||
swidnik.pl
|
||||
|
||||
// Lug.org.uk : https://lug.org.uk
|
||||
// Submitted by Jon Spriggs <admin@lug.org.uk>
|
||||
uklugs.org
|
||||
@@ -12322,6 +12358,10 @@ protonet.io
|
||||
chirurgiens-dentistes-en-france.fr
|
||||
byen.site
|
||||
|
||||
// Redstar Consultants : https://www.redstarconsultants.com/
|
||||
// Submitted by Jons Slemmer <jons@redstarconsultants.com>
|
||||
instantcloud.cn
|
||||
|
||||
// Russian Academy of Sciences
|
||||
// Submitted by Tech Support <support@rasnet.ru>
|
||||
ras.ru
|
||||
@@ -12350,6 +12390,10 @@ vaporcloud.io
|
||||
rackmaze.com
|
||||
rackmaze.net
|
||||
|
||||
// Read The Docs, Inc : https://www.readthedocs.org
|
||||
// Submitted by David Fischer <team@readthedocs.org>
|
||||
readthedocs.io
|
||||
|
||||
// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
|
||||
// Submitted by Tim Kramer <tkramer@rhcloud.com>
|
||||
rhcloud.com
|
||||
@@ -12426,6 +12470,10 @@ applinzi.com
|
||||
sinaapp.com
|
||||
vipsinaapp.com
|
||||
|
||||
// Siteleaf : https://www.siteleaf.com/
|
||||
// Submitted by Skylar Challand <support@siteleaf.com>
|
||||
siteleaf.net
|
||||
|
||||
// Skyhat : http://www.skyhat.io
|
||||
// Submitted by Shante Adam <shante@skyhat.io>
|
||||
bounty-full.com
|
||||
@@ -12451,10 +12499,6 @@ spacekit.io
|
||||
// Submitted by Stefan Neufeind <info@speedpartner.de>
|
||||
customer.speedpartner.de
|
||||
|
||||
// Stackspace : https://www.stackspace.io/
|
||||
// Submitted by Lina He <info@stackspace.io>
|
||||
stackspace.space
|
||||
|
||||
// Storj Labs Inc. : https://storj.io/
|
||||
// Submitted by Philip Hutchins <hostmaster@storj.io>
|
||||
storj.farm
|
||||
@@ -12495,6 +12539,12 @@ gdynia.pl
|
||||
med.pl
|
||||
sopot.pl
|
||||
|
||||
// Telebit : https://telebit.cloud
|
||||
// Submitted by AJ ONeal <aj@telebit.cloud>
|
||||
telebit.app
|
||||
telebit.io
|
||||
*.telebit.xyz
|
||||
|
||||
// The Gwiddle Foundation : https://gwiddlefoundation.org.uk
|
||||
// Submitted by Joshua Bayfield <joshua.bayfield@gwiddlefoundation.org.uk>
|
||||
gwiddle.co.uk
|
||||
@@ -12533,7 +12583,7 @@ lima-city.rocks
|
||||
webspace.rocks
|
||||
lima.zone
|
||||
|
||||
// TransIP : htts://www.transip.nl
|
||||
// TransIP : https://www.transip.nl
|
||||
// Submitted by Rory Breuk <rbreuk@transip.nl>
|
||||
*.transurl.be
|
||||
*.transurl.eu
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2018e
|
||||
tzdata2019a
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for Africa and environs
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -29,7 +31,7 @@
|
||||
# tz@iana.org for general use in the future). For more, please see
|
||||
# the file CONTRIBUTING in the tz distribution.
|
||||
|
||||
# From Paul Eggert (2017-04-09):
|
||||
# From Paul Eggert (2018-05-27):
|
||||
#
|
||||
# Unless otherwise specified, the source for data through 1990 is:
|
||||
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
|
||||
@@ -74,13 +76,15 @@
|
||||
# I vaguely recall 'WAT' also being used for -01 in the past but
|
||||
# cannot now come up with solid citations.
|
||||
#
|
||||
# I invented the following abbreviations; corrections are welcome!
|
||||
# +02 WAST West Africa Summer Time (no longer used)
|
||||
# +03 CAST Central Africa Summer Time (no longer used)
|
||||
# +03 SAST South Africa Summer Time (no longer used)
|
||||
# I invented the following abbreviations in the 1990s:
|
||||
# +02 WAST West Africa Summer Time
|
||||
# +03 CAST Central Africa Summer Time
|
||||
# +03 SAST South Africa Summer Time
|
||||
# +03 EAT East Africa Time
|
||||
# 'EAT' also seems to have caught on; the others are rare but are paired
|
||||
# with better-attested non-DST abbreviations.
|
||||
# 'EAT' seems to have caught on and is in current timestamps, and though
|
||||
# the other abbreviations are rarer and are only in past timestamps,
|
||||
# they are paired with better-attested non-DST abbreviations.
|
||||
# Corrections are welcome.
|
||||
|
||||
# Algeria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
@@ -383,8 +387,20 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
# See Africa/Lagos.
|
||||
|
||||
# Eritrea
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# Eswatini (formerly Swaziland)
|
||||
# See Africa/Johannesburg.
|
||||
|
||||
# Ethiopia
|
||||
# See Africa/Nairobi.
|
||||
#
|
||||
# Unfortunately tzdb records only Western clock time in use in Ethiopia,
|
||||
# as the tzdb format is not up to properly recording a common Ethiopian
|
||||
# timekeeping practice that is based on solar time. See:
|
||||
# Mortada D. If you have a meeting in Ethiopia, you'd better double
|
||||
# check the time. PRI's The World. 2015-01-30 15:15 -05.
|
||||
# https://www.pri.org/stories/2015-01-30/if-you-have-meeting-ethiopia-you-better-double-check-time
|
||||
|
||||
# Gabon
|
||||
# See Africa/Lagos.
|
||||
@@ -856,14 +872,27 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# <https://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
|
||||
# with the patch.
|
||||
|
||||
# From Paul Eggert (2015-06-08):
|
||||
# For now, guess that later spring and fall transitions will use 2015's rules,
|
||||
# and guess that Morocco will switch to standard time at 03:00 the last
|
||||
# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
|
||||
# Ramadan. To implement this, transition dates for 2016 through 2037 were
|
||||
# determined by running the following program under GNU Emacs 24.3, with the
|
||||
# results integrated by hand into the table below.
|
||||
# (let ((islamic-year 1437))
|
||||
# From Mohamed Essedik Najd (2018-10-26):
|
||||
# Today, a Moroccan government council approved the perpetual addition
|
||||
# of 60 minutes to the regular Moroccan timezone.
|
||||
# From Matt Johnson (2018-10-28):
|
||||
# http://www.sgg.gov.ma/Portals/1/BO/2018/BO_6720-bis_Ar.pdf
|
||||
#
|
||||
# From Maamar Abdelkader (2018-11-01):
|
||||
# We usually move clocks back the previous week end and come back to the +1
|
||||
# the week end after.... The government does not announce yet the decision
|
||||
# about this temporary change. But it s 99% sure that it will be the case,
|
||||
# as in previous years. An unofficial survey was done these days, showing
|
||||
# that 64% of asked peopke are ok for moving from +1 to +0 during Ramadan.
|
||||
# https://leconomiste.com/article/1035870-enquete-l-economiste-sunergia-64-des-marocains-plebiscitent-le-gmt-pendant-ramadan
|
||||
#
|
||||
# From Paul Eggert (2018-11-01):
|
||||
# For now, guess that Morocco will fall back at 03:00 the last Sunday
|
||||
# before Ramadan, and spring forward at 02:00 the first Sunday after
|
||||
# Ramadan, as this has been the practice since 2012. To implement this,
|
||||
# transition dates for 2019 through 2037 were determined by running the
|
||||
# following program under GNU Emacs 26.1.
|
||||
# (let ((islamic-year 1440))
|
||||
# (require 'cal-islam)
|
||||
# (while (< islamic-year 1460)
|
||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||
@@ -876,74 +905,101 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# (setq b (calendar-gregorian-from-absolute b))
|
||||
# (insert
|
||||
# (format
|
||||
# (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t0\t-\n"
|
||||
# "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t1:00\tS\n")
|
||||
# (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 3:00\t-1:00\t-\n"
|
||||
# "Rule\tMorocco\t%d\tonly\t-\t%s\t%2d\t 2:00\t0\t-\n")
|
||||
# (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
|
||||
# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
|
||||
# (setq islamic-year (+ 1 islamic-year))))
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
|
||||
Rule Morocco 1939 only - Sep 12 0:00 1:00 S
|
||||
Rule Morocco 1939 only - Sep 12 0:00 1:00 -
|
||||
Rule Morocco 1939 only - Nov 19 0:00 0 -
|
||||
Rule Morocco 1940 only - Feb 25 0:00 1:00 S
|
||||
Rule Morocco 1940 only - Feb 25 0:00 1:00 -
|
||||
Rule Morocco 1945 only - Nov 18 0:00 0 -
|
||||
Rule Morocco 1950 only - Jun 11 0:00 1:00 S
|
||||
Rule Morocco 1950 only - Jun 11 0:00 1:00 -
|
||||
Rule Morocco 1950 only - Oct 29 0:00 0 -
|
||||
Rule Morocco 1967 only - Jun 3 12:00 1:00 S
|
||||
Rule Morocco 1967 only - Jun 3 12:00 1:00 -
|
||||
Rule Morocco 1967 only - Oct 1 0:00 0 -
|
||||
Rule Morocco 1974 only - Jun 24 0:00 1:00 S
|
||||
Rule Morocco 1974 only - Jun 24 0:00 1:00 -
|
||||
Rule Morocco 1974 only - Sep 1 0:00 0 -
|
||||
Rule Morocco 1976 1977 - May 1 0:00 1:00 S
|
||||
Rule Morocco 1976 1977 - May 1 0:00 1:00 -
|
||||
Rule Morocco 1976 only - Aug 1 0:00 0 -
|
||||
Rule Morocco 1977 only - Sep 28 0:00 0 -
|
||||
Rule Morocco 1978 only - Jun 1 0:00 1:00 S
|
||||
Rule Morocco 1978 only - Jun 1 0:00 1:00 -
|
||||
Rule Morocco 1978 only - Aug 4 0:00 0 -
|
||||
Rule Morocco 2008 only - Jun 1 0:00 1:00 S
|
||||
Rule Morocco 2008 only - Jun 1 0:00 1:00 -
|
||||
Rule Morocco 2008 only - Sep 1 0:00 0 -
|
||||
Rule Morocco 2009 only - Jun 1 0:00 1:00 S
|
||||
Rule Morocco 2009 only - Jun 1 0:00 1:00 -
|
||||
Rule Morocco 2009 only - Aug 21 0:00 0 -
|
||||
Rule Morocco 2010 only - May 2 0:00 1:00 S
|
||||
Rule Morocco 2010 only - May 2 0:00 1:00 -
|
||||
Rule Morocco 2010 only - Aug 8 0:00 0 -
|
||||
Rule Morocco 2011 only - Apr 3 0:00 1:00 S
|
||||
Rule Morocco 2011 only - Apr 3 0:00 1:00 -
|
||||
Rule Morocco 2011 only - Jul 31 0:00 0 -
|
||||
Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 S
|
||||
Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
|
||||
Rule Morocco 2012 only - Jul 20 3:00 0 -
|
||||
Rule Morocco 2012 only - Aug 20 2:00 1:00 S
|
||||
Rule Morocco 2012 only - Aug 20 2:00 1:00 -
|
||||
Rule Morocco 2012 only - Sep 30 3:00 0 -
|
||||
Rule Morocco 2013 only - Jul 7 3:00 0 -
|
||||
Rule Morocco 2013 only - Aug 10 2:00 1:00 S
|
||||
Rule Morocco 2013 max - Oct lastSun 3:00 0 -
|
||||
Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
|
||||
Rule Morocco 2013 only - Aug 10 2:00 1:00 -
|
||||
Rule Morocco 2013 2017 - Oct lastSun 3:00 0 -
|
||||
Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
|
||||
Rule Morocco 2014 only - Jun 28 3:00 0 -
|
||||
Rule Morocco 2014 only - Aug 2 2:00 1:00 S
|
||||
Rule Morocco 2014 only - Aug 2 2:00 1:00 -
|
||||
Rule Morocco 2015 only - Jun 14 3:00 0 -
|
||||
Rule Morocco 2015 only - Jul 19 2:00 1:00 S
|
||||
Rule Morocco 2015 only - Jul 19 2:00 1:00 -
|
||||
Rule Morocco 2016 only - Jun 5 3:00 0 -
|
||||
Rule Morocco 2016 only - Jul 10 2:00 1:00 S
|
||||
Rule Morocco 2016 only - Jul 10 2:00 1:00 -
|
||||
Rule Morocco 2017 only - May 21 3:00 0 -
|
||||
Rule Morocco 2017 only - Jul 2 2:00 1:00 S
|
||||
Rule Morocco 2017 only - Jul 2 2:00 1:00 -
|
||||
Rule Morocco 2018 only - May 13 3:00 0 -
|
||||
Rule Morocco 2018 only - Jun 17 2:00 1:00 S
|
||||
Rule Morocco 2018 only - Jun 17 2:00 1:00 -
|
||||
Rule Morocco 2019 only - May 5 3:00 0 -
|
||||
Rule Morocco 2019 only - Jun 9 2:00 1:00 S
|
||||
Rule Morocco 2019 only - Jun 9 2:00 1:00 -
|
||||
Rule Morocco 2020 only - Apr 19 3:00 0 -
|
||||
Rule Morocco 2020 only - May 24 2:00 1:00 S
|
||||
Rule Morocco 2020 only - May 24 2:00 1:00 -
|
||||
Rule Morocco 2021 only - Apr 11 3:00 0 -
|
||||
Rule Morocco 2021 only - May 16 2:00 1:00 S
|
||||
Rule Morocco 2022 only - May 8 2:00 1:00 S
|
||||
Rule Morocco 2023 only - Apr 23 2:00 1:00 S
|
||||
Rule Morocco 2024 only - Apr 14 2:00 1:00 S
|
||||
Rule Morocco 2025 only - Apr 6 2:00 1:00 S
|
||||
Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
|
||||
Rule Morocco 2021 only - May 16 2:00 1:00 -
|
||||
Rule Morocco 2022 only - Mar 27 3:00 0 -
|
||||
Rule Morocco 2022 only - May 8 2:00 1:00 -
|
||||
Rule Morocco 2023 only - Mar 19 3:00 0 -
|
||||
Rule Morocco 2023 only - Apr 23 2:00 1:00 -
|
||||
Rule Morocco 2024 only - Mar 10 3:00 0 -
|
||||
Rule Morocco 2024 only - Apr 14 2:00 1:00 -
|
||||
Rule Morocco 2025 only - Feb 23 3:00 0 -
|
||||
Rule Morocco 2025 only - Apr 6 2:00 1:00 -
|
||||
Rule Morocco 2026 only - Feb 15 3:00 0 -
|
||||
Rule Morocco 2026 only - Mar 22 2:00 1:00 -
|
||||
Rule Morocco 2027 only - Feb 7 3:00 0 -
|
||||
Rule Morocco 2027 only - Mar 14 2:00 1:00 -
|
||||
Rule Morocco 2028 only - Jan 23 3:00 0 -
|
||||
Rule Morocco 2028 only - Feb 27 2:00 1:00 -
|
||||
Rule Morocco 2029 only - Jan 14 3:00 0 -
|
||||
Rule Morocco 2029 only - Feb 18 2:00 1:00 -
|
||||
Rule Morocco 2029 only - Dec 30 3:00 0 -
|
||||
Rule Morocco 2030 only - Feb 10 2:00 1:00 -
|
||||
Rule Morocco 2030 only - Dec 22 3:00 0 -
|
||||
Rule Morocco 2031 only - Jan 26 2:00 1:00 -
|
||||
Rule Morocco 2031 only - Dec 14 3:00 0 -
|
||||
Rule Morocco 2032 only - Jan 18 2:00 1:00 -
|
||||
Rule Morocco 2032 only - Nov 28 3:00 0 -
|
||||
Rule Morocco 2033 only - Jan 9 2:00 1:00 -
|
||||
Rule Morocco 2033 only - Nov 20 3:00 0 -
|
||||
Rule Morocco 2033 only - Dec 25 2:00 1:00 -
|
||||
Rule Morocco 2034 only - Nov 5 3:00 0 -
|
||||
Rule Morocco 2034 only - Dec 17 2:00 1:00 -
|
||||
Rule Morocco 2035 only - Oct 28 3:00 0 -
|
||||
Rule Morocco 2035 only - Dec 2 2:00 1:00 -
|
||||
Rule Morocco 2036 only - Oct 19 3:00 0 -
|
||||
Rule Morocco 2036 only - Nov 23 2:00 1:00 -
|
||||
Rule Morocco 2037 only - Oct 4 3:00 0 -
|
||||
Rule Morocco 2037 only - Nov 15 2:00 1:00 -
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
||||
0:00 Morocco WE%sT 1984 Mar 16
|
||||
1:00 - CET 1986
|
||||
0:00 Morocco WE%sT
|
||||
0:00 Morocco +00/+01 1984 Mar 16
|
||||
1:00 - +01 1986
|
||||
0:00 Morocco +00/+01 2018 Oct 28 3:00
|
||||
0:00 Morocco +00/+01
|
||||
|
||||
# Western Sahara
|
||||
#
|
||||
@@ -958,7 +1014,8 @@ Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
||||
|
||||
Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan # El Aaiún
|
||||
-1:00 - -01 1976 Apr 14
|
||||
0:00 Morocco WE%sT
|
||||
0:00 Morocco +00/+01 2018 Oct 28 3:00
|
||||
0:00 Morocco +00/+01
|
||||
|
||||
# Mozambique
|
||||
#
|
||||
@@ -1115,10 +1172,20 @@ Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
|
||||
# the switch is from 01:00 to 02:00 ... [Decree No. 25/2017]
|
||||
# http://www.mnec.gov.st/index.php/publicacoes/documentos/file/90-decreto-lei-n-25-2017
|
||||
|
||||
# From Vadim Nasardinov (2018-12-29):
|
||||
# São Tomé and Príncipe is about to do the following on Jan 1, 2019:
|
||||
# https://www.stp-press.st/2018/12/05/governo-jesus-ja-decidiu-repor-hora-legal-sao-tomense/
|
||||
#
|
||||
# From Michael Deckers (2018-12-30):
|
||||
# https://www.legis-palop.org/download.jsp?idFile=102818
|
||||
# ... [The legal time of the country, which coincides with universal
|
||||
# coordinated time, will be restituted at 2 o'clock on day 1 of January, 2019.]
|
||||
|
||||
Zone Africa/Sao_Tome 0:26:56 - LMT 1884
|
||||
-0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT
|
||||
0:00 - GMT 2018 Jan 1 01:00
|
||||
1:00 - WAT
|
||||
1:00 - WAT 2019 Jan 1 02:00
|
||||
0:00 - GMT
|
||||
|
||||
# Senegal
|
||||
# See Africa/Abidjan.
|
||||
@@ -1149,7 +1216,7 @@ Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
|
||||
1:30 - SAST 1903 Mar
|
||||
2:00 SA SAST
|
||||
Link Africa/Johannesburg Africa/Maseru # Lesotho
|
||||
Link Africa/Johannesburg Africa/Mbabane # Swaziland
|
||||
Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
#
|
||||
# Marion and Prince Edward Is
|
||||
# scientific station since 1947
|
||||
@@ -1191,9 +1258,6 @@ Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
2:00 Sudan CA%sT 2000 Jan 15 12:00
|
||||
3:00 - EAT
|
||||
|
||||
# Swaziland
|
||||
# See Africa/Johannesburg.
|
||||
|
||||
# Tanzania
|
||||
# See Africa/Nairobi.
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for Antarctica and environs
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for Australasia and environs, and for much of the Pacific
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -384,8 +386,15 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# Dominic Fok writes (2017-08-20) that DST ends 2018-01-14, citing
|
||||
# Extraordinary Government of Fiji Gazette Supplement No. 21 (2017-08-27),
|
||||
# [Legal Notice No. 41] of an order of the previous day by J Usamate.
|
||||
|
||||
# From Raymond Kumar (2018-07-13):
|
||||
# http://www.fijitimes.com/government-approves-2018-daylight-saving/
|
||||
# ... The daylight saving period will end at 3am on Sunday January 13, 2019.
|
||||
#
|
||||
# From Paul Eggert (2018-07-15):
|
||||
# For now, guess DST from 02:00 the first Sunday in November to 03:00
|
||||
# the first Sunday on or after January 14. Although ad hoc, it matches
|
||||
# the first Sunday on or after January 13. January transitions reportedly
|
||||
# depend on when school terms start. Although the guess is ad hoc, it matches
|
||||
# transitions since late 2014 and seems more likely to match future
|
||||
# practice than guessing no DST.
|
||||
|
||||
@@ -399,7 +408,7 @@ Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
|
||||
Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 2015 max - Jan Sun>=14 3:00 0 -
|
||||
Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji +12/+13
|
||||
@@ -416,10 +425,44 @@ Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
|
||||
# it is uninhabited.
|
||||
|
||||
# Guam
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
|
||||
Rule Guam 1959 only - Jun 27 2:00 1:00 D
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-61-5-Revocation-of-Daylight-Saving-Time-and-Restoratio.pdf
|
||||
Rule Guam 1961 only - Jan 29 2:00 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-67-13-Guam-Daylight-Savings-Time.pdf
|
||||
Rule Guam 1967 only - Sep 1 2:00 1:00 D
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-69-2-Repeal-of-Guam-Daylight-Saving-Time.pdf
|
||||
Rule Guam 1969 only - Jan 26 0:01 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-69-10-Guam-Daylight-Saving-Time.pdf
|
||||
Rule Guam 1969 only - Jun 22 2:00 1:00 D
|
||||
Rule Guam 1969 only - Aug 31 2:00 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-70-10-Guam-Daylight-Saving-Time.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-70-30-End-of-Guam-Daylight-Saving-Time.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-71-5-Guam-Daylight-Savings-Time.pdf
|
||||
Rule Guam 1970 1971 - Apr lastSun 2:00 1:00 D
|
||||
Rule Guam 1970 1971 - Sep Sun>=1 2:00 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-73-28.-Guam-Day-light-Saving-Time.pdf
|
||||
Rule Guam 1973 only - Dec 16 2:00 1:00 D
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-74-7-Guam-Daylight-Savings-Time-Rescinded.pdf
|
||||
Rule Guam 1974 only - Feb 24 2:00 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-76-13-Daylight-Savings-Time.pdf
|
||||
Rule Guam 1976 only - May 26 2:00 1:00 D
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-76-25-Revocation-of-E.O.-76-13.pdf
|
||||
Rule Guam 1976 only - Aug 22 2:01 0 S
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-77-4-Daylight-Savings-Time.pdf
|
||||
Rule Guam 1977 only - Apr 24 2:00 1:00 D
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-77-18-Guam-Standard-Time.pdf
|
||||
Rule Guam 1977 only - Aug 28 2:00 0 S
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
|
||||
9:39:00 - LMT 1901 # Agana
|
||||
10:00 - GST 2000 Dec 23 # Guam
|
||||
10:00 - GST 1941 Dec 10 # Guam
|
||||
9:00 - +09 1944 Jul 31
|
||||
10:00 Guam G%sT 2000 Dec 23
|
||||
10:00 - ChST # Chamorro Standard Time
|
||||
Link Pacific/Guam Pacific/Saipan # N Mariana Is
|
||||
|
||||
@@ -441,31 +484,56 @@ Zone Pacific/Kiritimati -10:29:20 - LMT 1901
|
||||
|
||||
# Marshall Is
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Majuro 11:24:48 - LMT 1901
|
||||
11:00 - +11 1969 Oct
|
||||
12:00 - +12
|
||||
Zone Pacific/Kwajalein 11:09:20 - LMT 1901
|
||||
11:00 - +11 1969 Oct
|
||||
-12:00 - -12 1993 Aug 20
|
||||
12:00 - +12
|
||||
Zone Pacific/Majuro 11:24:48 - LMT 1901
|
||||
11:00 - +11 1914 Oct
|
||||
9:00 - +09 1919 Feb 1
|
||||
11:00 - +11 1937
|
||||
10:00 - +10 1941 Apr 1
|
||||
9:00 - +09 1944 Jan 30
|
||||
11:00 - +11 1969 Oct
|
||||
12:00 - +12
|
||||
Zone Pacific/Kwajalein 11:09:20 - LMT 1901
|
||||
11:00 - +11 1937
|
||||
10:00 - +10 1941 Apr 1
|
||||
9:00 - +09 1944 Feb 6
|
||||
11:00 - +11 1969 Oct
|
||||
-12:00 - -12 1993 Aug 20 24:00
|
||||
12:00 - +12
|
||||
|
||||
# Micronesia
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Chuuk 10:07:08 - LMT 1901
|
||||
10:00 - +10
|
||||
Zone Pacific/Pohnpei 10:32:52 - LMT 1901 # Kolonia
|
||||
11:00 - +11
|
||||
Zone Pacific/Kosrae 10:51:56 - LMT 1901
|
||||
11:00 - +11 1969 Oct
|
||||
12:00 - +12 1999
|
||||
11:00 - +11
|
||||
Zone Pacific/Chuuk -13:52:52 - LMT 1844 Dec 31
|
||||
10:07:08 - LMT 1901
|
||||
10:00 - +10 1914 Oct
|
||||
9:00 - +09 1919 Feb 1
|
||||
10:00 - +10 1941 Apr 1
|
||||
9:00 - +09 1945 Aug
|
||||
10:00 - +10
|
||||
Zone Pacific/Pohnpei -13:27:08 - LMT 1844 Dec 31 # Kolonia
|
||||
10:32:52 - LMT 1901
|
||||
11:00 - +11 1914 Oct
|
||||
9:00 - +09 1919 Feb 1
|
||||
11:00 - +11 1937
|
||||
10:00 - +10 1941 Apr 1
|
||||
9:00 - +09 1945 Aug
|
||||
11:00 - +11
|
||||
Zone Pacific/Kosrae -13:08:04 - LMT 1844 Dec 31
|
||||
10:51:56 - LMT 1901
|
||||
11:00 - +11 1914 Oct
|
||||
9:00 - +09 1919 Feb 1
|
||||
11:00 - +11 1937
|
||||
10:00 - +10 1941 Apr 1
|
||||
9:00 - +09 1945 Aug
|
||||
11:00 - +11 1969 Oct
|
||||
12:00 - +12 1999
|
||||
11:00 - +11
|
||||
|
||||
# Nauru
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
||||
11:30 - +1130 1942 Mar 15
|
||||
9:00 - +09 1944 Aug 15
|
||||
11:30 - +1130 1979 May
|
||||
11:30 - +1130 1942 Aug 29
|
||||
9:00 - +09 1945 Sep 8
|
||||
11:30 - +1130 1979 Feb 10 2:00
|
||||
12:00 - +12
|
||||
|
||||
# New Caledonia
|
||||
@@ -566,8 +634,9 @@ Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston
|
||||
|
||||
# Palau (Belau)
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror
|
||||
9:00 - +09
|
||||
Zone Pacific/Palau -15:02:04 - LMT 1844 Dec 31 # Koror
|
||||
8:57:56 - LMT 1901
|
||||
9:00 - +09
|
||||
|
||||
# Papua New Guinea
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@@ -829,7 +898,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# tz@iana.org for general use in the future). For more, please see
|
||||
# the file CONTRIBUTING in the tz distribution.
|
||||
|
||||
# From Paul Eggert (2017-02-10):
|
||||
# From Paul Eggert (2018-11-18):
|
||||
#
|
||||
# Unless otherwise specified, the source for data through 1990 is:
|
||||
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
|
||||
@@ -854,6 +923,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# A reliable and entertaining source about time zones is
|
||||
# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
|
||||
#
|
||||
# I invented the abbreviation marked "*".
|
||||
# The following abbreviations are from other sources.
|
||||
# Corrections are welcome!
|
||||
# std dst
|
||||
@@ -861,7 +931,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# 8:00 AWST AWDT Western Australia
|
||||
# 9:30 ACST ACDT Central Australia
|
||||
# 10:00 AEST AEDT Eastern Australia
|
||||
# 10:00 GST Guam through 2000
|
||||
# 10:00 GST GDT* Guam through 2000
|
||||
# 10:00 ChST Chamorro
|
||||
# 11:30 NZMT NZST New Zealand through 1945
|
||||
# 12:00 NZST NZDT New Zealand 1946-present
|
||||
@@ -1560,28 +1630,70 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
|
||||
# Kwajalein
|
||||
|
||||
# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
|
||||
# I wonder what happened in Kwajalein, where there was NO Friday,
|
||||
# 1993-08-20. Thursday night at midnight Kwajalein switched sides with
|
||||
# respect to the International Date Line, to rejoin its fellow islands,
|
||||
# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
|
||||
# From an AP article (1993-08-22):
|
||||
# "The nearly 3,000 Americans living on this remote Pacific atoll have a good
|
||||
# excuse for not remembering Saturday night: there wasn't one. Residents were
|
||||
# going to bed Friday night and waking up Sunday morning because at midnight
|
||||
# -- 8 A.M. Eastern daylight time on Saturday -- Kwajalein was jumping from
|
||||
# one side of the international date line to the other."
|
||||
# "In Marshall Islands, Friday is followed by Sunday", NY Times. 1993-08-22.
|
||||
# https://www.nytimes.com/1993/08/22/world/in-marshall-islands-friday-is-followed-by-sunday.html
|
||||
|
||||
# From Phake Nick (2018-10-27):
|
||||
# <https://wiki.suikawiki.org/n/南洋群島の標準時> ... pointed out that
|
||||
# currently tzdata say Pacific/Kwajalein switched from GMT+11 to GMT-12 in
|
||||
# 1969 October without explanation, however an 1993 article from NYT say it
|
||||
# synchorized its day with US mainland about 40 years ago and thus the switch
|
||||
# should occur at around 1950s instead.
|
||||
#
|
||||
# From Paul Eggert (2018-11-18):
|
||||
# The NYT (actually, AP) article is vague and possibly wrong about this.
|
||||
# The article says the earlier switch was "40 years ago when the United States
|
||||
# Army established a missile test range here". However, the Kwajalein Test
|
||||
# Center was established on 1960-10-01 and was run by the US Navy. It was
|
||||
# transferred to the US Army on 1964-07-01. See "Seize the High Ground"
|
||||
# <https://history.army.mil/html/books/070/70-88-1/cmhPub_70-88-1.pdf>.
|
||||
# Given that Shanks was right on the money about the 1993 change, I'm inclined
|
||||
# to take Shanks's word for the 1969 change unless we find better evidence.
|
||||
|
||||
|
||||
# N Mariana Is, Guam
|
||||
|
||||
# From Phake Nick (2018-10-27):
|
||||
# Guam Island was briefly annexed by Japan during ... year 1941-1944 ...
|
||||
# however there are no detailed information about what time it use during that
|
||||
# period. It would probably be reasonable to assume Guam use GMT+9 during
|
||||
# that period of time like the surrounding area.
|
||||
|
||||
# From Paul Eggert (2018-11-18):
|
||||
# Howse writes (p 153) "The Spaniards, on the other hand, reached the
|
||||
# Philippines and the Ladrones from America," and implies that the Ladrones
|
||||
# (now called the Marianas) kept American date for quite some time.
|
||||
# For now, we assume the Ladrones switched at the same time as the Philippines;
|
||||
# see Asia/Manila.
|
||||
|
||||
#
|
||||
# Use 1941-12-10 and 1944-07-31 for Guam WWII transitions, as the rough start
|
||||
# and end of Japanese control of Agana. We don't know whether the Northern
|
||||
# Marianas followed Guam's DST rules from 1959 through 1977; for now, assume
|
||||
# they did as that avoids the need for a separate zone due to our 1970 cutoff.
|
||||
#
|
||||
# US Public Law 106-564 (2000-12-23) made UT +10 the official standard time,
|
||||
# under the name "Chamorro Standard Time". There is no official abbreviation,
|
||||
# but Congressman Robert A. Underwood, author of the bill that became law,
|
||||
# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
|
||||
|
||||
# See also the commentary for Micronesia.
|
||||
|
||||
# Micronesia
|
||||
|
||||
# Marshall Is
|
||||
# See the commentary for Micronesia.
|
||||
|
||||
|
||||
# Micronesia (and nearby)
|
||||
|
||||
# From Paul Eggert (2018-11-18):
|
||||
# Like the Ladrones (see Guam commentary), assume the Spanish East Indies
|
||||
# kept American time until the Philippines switched at the end of 1844.
|
||||
|
||||
# Alan Eugene Davis writes (1996-03-16),
|
||||
# "I am certain, having lived there for the past decade, that 'Truk'
|
||||
@@ -1597,6 +1709,95 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# that Truk and Yap are UT +10, and Ponape and Kosrae are +11.
|
||||
# We don't know when Kosrae switched from +12; assume January 1 for now.
|
||||
|
||||
# From Phake Nick (2018-10-27):
|
||||
#
|
||||
# From a Japanese wiki site https://wiki.suikawiki.org/n/南洋群島の標準時
|
||||
# ...
|
||||
# For "Southern Islands" (modern region of Mariana + Palau + Federation of
|
||||
# Micronesia + Marshall Islands):
|
||||
#
|
||||
# A 1906 Japanese magazine shown the Caroline Islands and Mariana Islands
|
||||
# who was occupied by Germany at the time as GMT+10, together with the like
|
||||
# of German New Guinea. However there is a marking saying it have not been
|
||||
# implemented (yet). No further information after that were found.
|
||||
#
|
||||
# Japan invaded those islands in 1914, and records shows that they were
|
||||
# instructed to use JST at the time.
|
||||
#
|
||||
# 1915 January telecommunication record on the Jaluit Atoll shows they use
|
||||
# the meridian of 170E as standard time (GMT+11:20), which is similar to the
|
||||
# longitude of the atoll.
|
||||
# 1915 February record say the 170E standard time is to be used until
|
||||
# February 9 noon, and after February 9 noon they are to use JST.
|
||||
# However these are time used within the Japanese Military at the time and
|
||||
# probably does not reflect the time used by local resident at the time (that
|
||||
# is if they keep their own time back then)
|
||||
#
|
||||
# In January 1919 the occupying force issued a command that split the area
|
||||
# into three different timezone with meridian of 135E, 150E, 165E (JST+0, +1,
|
||||
# +2), and the command was to become effective from February 1 of the same
|
||||
# year. Despite the target of the command is still only for the occupying
|
||||
# force itself, further publication have described the time as the standard
|
||||
# time for the occupied area and thus it can probably be seen as such.
|
||||
# * Area that use meridian of 135E: Palau and Yap civil administration area
|
||||
# (Southern Islands Western Standard Time)
|
||||
# * Area that use meridian of 150E: Truk (Chuuk) and Saipan civil
|
||||
# administration area (Southern Islands Central Standard Time)
|
||||
# * Area that use meridian of 165E: Ponape (Pohnpei) and Jaluit civil
|
||||
# administration area (Southern Islands Eastern Standard Time).
|
||||
# * In the next few years Japanese occupation of those islands have been
|
||||
# formalized via League of Nation Mandate (South Pacific Mandate) and formal
|
||||
# governance structure have been established, these district [become
|
||||
# subprefectures] and timezone classification have been inherited as standard
|
||||
# time of the area.
|
||||
# * Saipan subprefecture include Mariana islands (exclude Guam which was
|
||||
# occupied by America at the time), Palau and Yap subprefecture rule the
|
||||
# Western Caroline Islands with 137E longitude as border, Truk and Ponape
|
||||
# subprefecture rule the Eastern Caroline Islands with 154E as border, Ponape
|
||||
# subprefecture also rule part of Marshall Islands to the west of 164E
|
||||
# starting from (1918?) and Jaluit subprefecture rule the rest of the
|
||||
# Marshall Islands.
|
||||
#
|
||||
# And then in year 1937, an announcement was made to change the time in the
|
||||
# area into 2 timezones:
|
||||
# * Area that use meridian of 135E: area administered by Palau, Yap and
|
||||
# Saipan subprefecture (Southern Islands Western Standard Time)
|
||||
# * Area that use meridian of 150E: area administered by Truk (Chuuk),
|
||||
# Ponape (Pohnpei) and Jaluit subprefecture (Southern Islands Eastern
|
||||
# Standard Time)
|
||||
#
|
||||
# Another announcement issued in 1941 say that on April 1 that year,
|
||||
# standard time of the Southern Islands would be changed to use the meridian
|
||||
# of 135E (GMT+9), and thus abolishing timezone different within the area.
|
||||
#
|
||||
# Then Pacific theater of WWII started and Japan slowly lose control on the
|
||||
# island. The webpage I linked above contain no information during this
|
||||
# period of time....
|
||||
#
|
||||
# After the end of WWII, in 1946 February, a document written by the
|
||||
# (former?) Japanese military personnel describe there are 3 hours time
|
||||
# different between Caroline islands time/Wake island time and the Chungking
|
||||
# time, which would mean the time being used there at the time was GMT+10.
|
||||
#
|
||||
# After that, the area become Trust Territories of the Pacific Islands
|
||||
# under American administration from year 1947. The site listed some
|
||||
# American/International books/maps/publications about time used in those
|
||||
# area during this period of time but they doesn't seems to be reliable
|
||||
# information so it would be the best if someone know where can more reliable
|
||||
# information can be found.
|
||||
#
|
||||
#
|
||||
# From Paul Eggert (2018-11-18):
|
||||
#
|
||||
# For the above, use vague dates like "1914" and "1945" for transitions that
|
||||
# plausibly exist but for which the details are not known. The information
|
||||
# for Wake is too sketchy to act on.
|
||||
#
|
||||
# The 1906 GMT+10 info about German-controlled islands might not have been
|
||||
# done, so omit it from the data for now.
|
||||
#
|
||||
# The Jaluit info governs Kwajalein.
|
||||
|
||||
|
||||
# Midway
|
||||
|
||||
@@ -1614,6 +1815,29 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# started DST on June 3. Possibly DST was observed other years
|
||||
# in Midway, but we have no record of it.
|
||||
|
||||
# Nauru
|
||||
|
||||
# From Phake Nick (2018-10-31):
|
||||
# Currently, the tz database say Nauru use LMT until 1921, and then
|
||||
# switched to GMT+11:30 for the next two decades.
|
||||
# However, a number of timezone map published in America/Japan back then
|
||||
# showed its timezone as GMT+11 per https://wiki.suikawiki.org/n/ナウルの標準時
|
||||
# And it would also be nice if the 1921 transition date could be sourced.
|
||||
# ...
|
||||
# The "Nauru Standard Time Act 1978 Time Change"
|
||||
# http://ronlaw.gov.nr/nauru_lpms/files/gazettes/4b23a17d2030150404db7a5fa5872f52.pdf#page=3
|
||||
# based on "Nauru Standard Time Act 1978 Time Change"
|
||||
# http://www.paclii.org/nr/legis/num_act/nsta1978207/ defined that "Nauru
|
||||
# Alternative Time" (GMT+12) should be in effect from 1979 Feb.
|
||||
#
|
||||
# From Paul Eggert (2018-11-19):
|
||||
# The 1921-01-15 introduction of standard time is in Shanks; it is also in
|
||||
# "Standard Time Throughout the World", US National Bureau of Standards (1935),
|
||||
# page 3, which does not give the UT offset. In response to a comment by
|
||||
# Phake Nick I set the Nauru time of occupation by Japan to
|
||||
# 1942-08-29/1945-09-08 by using dates from:
|
||||
# https://en.wikipedia.org/wiki/Japanese_occupation_of_Nauru
|
||||
|
||||
# Norfolk
|
||||
|
||||
# From Alexander Krivenyshev (2015-09-23):
|
||||
@@ -1629,6 +1853,9 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# other than in 1974/5. See:
|
||||
# https://www.timeanddate.com/time/australia/norfolk-island.html
|
||||
|
||||
# Palau
|
||||
# See commentary for Micronesia.
|
||||
|
||||
# Pitcairn
|
||||
|
||||
# From Rives McDow (1999-11-08):
|
||||
@@ -1793,6 +2020,9 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901
|
||||
# From Paul Eggert (2003-03-23):
|
||||
# We have no other report of DST in Wake Island, so omit this info for now.
|
||||
|
||||
# See also the commentary for Micronesia.
|
||||
|
||||
|
||||
###############################################################################
|
||||
|
||||
# The International Date Line
|
||||
|
||||
@@ -21,10 +21,12 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb links for backward compatibility
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# This file provides links between current names for time zones
|
||||
# This file provides links between current names for timezones
|
||||
# and their old names. Many names changed in late 1993.
|
||||
|
||||
# Link TARGET LINK-NAME
|
||||
@@ -98,6 +100,7 @@ Link Pacific/Easter Chile/EasterIsland
|
||||
Link America/Havana Cuba
|
||||
Link Africa/Cairo Egypt
|
||||
Link Europe/Dublin Eire
|
||||
Link Etc/UTC Etc/UCT
|
||||
Link Europe/London Europe/Belfast
|
||||
Link Europe/Chisinau Europe/Tiraspol
|
||||
Link Europe/London GB
|
||||
@@ -132,7 +135,7 @@ Link Asia/Taipei ROC
|
||||
Link Asia/Seoul ROK
|
||||
Link Asia/Singapore Singapore
|
||||
Link Europe/Istanbul Turkey
|
||||
Link Etc/UCT UCT
|
||||
Link Etc/UTC UCT
|
||||
Link America/Anchorage US/Alaska
|
||||
Link America/Adak US/Aleutian
|
||||
Link America/Phoenix US/Arizona
|
||||
|
||||
@@ -21,12 +21,14 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for ships at sea and other miscellany
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# These entries are mostly present for historical reasons, so that
|
||||
# people in areas not otherwise covered by the tz files could "zic -l"
|
||||
# to a time zone that was right for their area. These days, the
|
||||
# to a timezone that was right for their area. These days, the
|
||||
# tz files cover almost all the inhabited world, and the only practical
|
||||
# need now for the entries that are not on UTC are for ships at sea
|
||||
# that cannot use POSIX TZ settings.
|
||||
@@ -40,7 +42,6 @@
|
||||
|
||||
Zone Etc/GMT 0 - GMT
|
||||
Zone Etc/UTC 0 - UTC
|
||||
Zone Etc/UCT 0 - UCT
|
||||
|
||||
# The following link uses older naming conventions,
|
||||
# but it belongs here, not in the file 'backward',
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for Europe and environs
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -540,7 +542,7 @@ Link Europe/London Europe/Isle_of_Man
|
||||
#
|
||||
# To work around this problem, the build procedure can translate the
|
||||
# following data into two forms, one with negative SAVE values and the
|
||||
# other form with a traditional approximation for Irish time stamps
|
||||
# other form with a traditional approximation for Irish timestamps
|
||||
# after 1971-10-31 02:00 UTC; although this approximation has tm_isdst
|
||||
# flags that are reversed, its UTC offsets are correct and this often
|
||||
# suffices. This source file currently uses only nonnegative SAVE
|
||||
@@ -1876,7 +1878,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
|
||||
1:00 Belgium CE%sT 1977
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Macedonia
|
||||
# North Macedonia
|
||||
# See Europe/Belgrade.
|
||||
|
||||
# Malta
|
||||
@@ -2450,6 +2452,33 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
|
||||
# administratively part of Sakhalin oblast', they appear to have
|
||||
# remained on UTC+11 along with Magadan.
|
||||
|
||||
# From Marat Nigametzianov (2018-07-16):
|
||||
# this is link to order from 1956 about timezone in USSR
|
||||
# http://astro.uni-altai.ru/~orion/blog/2011/11/novyie-granitsyi-chasovyih-poyasov-v-sssr/
|
||||
#
|
||||
# From Paul Eggert (2018-07-16):
|
||||
# Perhaps someone could translate the above-mentioned link and use it
|
||||
# to correct our data for the ex-Soviet Union. It cites the following:
|
||||
# «Поясное время и новые границы часовых поясов» / сост. П.Н. Долгов,
|
||||
# отв. ред. Г.Д. Бурдун - М: Комитет стандартов, мер и измерительных
|
||||
# приборов при Совете Министров СССР, Междуведомственная комиссия
|
||||
# единой службы времени, 1956 г.
|
||||
# This book looks like it would be a helpful resource for the Soviet
|
||||
# Union through 1956. Although a copy was in the Scientific Library
|
||||
# of Tomsk State University, I have not been able to track down a copy nearby.
|
||||
#
|
||||
# From Stepan Golosunov (2018-07-21):
|
||||
# http://astro.uni-altai.ru/~orion/blog/2015/05/center-reforma-ischisleniya-vremeni-br-na-territorii-sssr-v-1957-godu-center/
|
||||
# says that the 1956 decision to change time belts' borders was not
|
||||
# implemented as planned in 1956 and the change happened in 1957.
|
||||
# There is also the problem that actual time zones were different from
|
||||
# the official time belts (and from many time belts' maps) as there were
|
||||
# numerous exceptions to application of time belt rules. For example,
|
||||
# https://ru.wikipedia.org/wiki/Московское_время#Перемещение_границы_применения_московского_времени_на_восток
|
||||
# says that by 1962 there were many regions in the 3rd time belt that
|
||||
# were on Moscow time, referring to a 1962 map. By 1989 number of such
|
||||
# exceptions grew considerably.
|
||||
|
||||
# From Tim Parenti (2014-07-06):
|
||||
# The comments detailing the coverage of each Russian zone are meant to assist
|
||||
# with maintenance only and represent our best guesses as to which regions
|
||||
@@ -2460,9 +2489,6 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
|
||||
# future stability. ISO 3166-2:RU codes are also listed for first-level
|
||||
# divisions where available.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
|
||||
|
||||
# From Tim Parenti (2014-07-03):
|
||||
# Europe/Kaliningrad covers...
|
||||
# 39 RU-KGD Kaliningrad Oblast
|
||||
@@ -2730,6 +2756,15 @@ Zone Europe/Astrakhan 3:12:12 - LMT 1924 May
|
||||
# 34 RU-VGG Volgograd Oblast
|
||||
# The 1988 transition is from USSR act No. 5 (1988-01-04).
|
||||
|
||||
# From Alexander Fetisov (2018-09-20):
|
||||
# Volgograd region in southern Russia (Europe/Volgograd) change
|
||||
# timezone from UTC+3 to UTC+4 from 28oct2018.
|
||||
# http://sozd.parliament.gov.ru/bill/452878-7
|
||||
#
|
||||
# From Stepan Golosunov (2018-10-11):
|
||||
# The law has been published today on
|
||||
# http://publication.pravo.gov.ru/Document/View/0001201810110037
|
||||
|
||||
Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
3:00 - +03 1930 Jun 21
|
||||
4:00 - +04 1961 Nov 11
|
||||
@@ -2738,7 +2773,8 @@ Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
|
||||
4:00 - +04 1992 Mar 29 2:00s
|
||||
3:00 Russia +03/+04 2011 Mar 27 2:00s
|
||||
4:00 - +04 2014 Oct 26 2:00s
|
||||
3:00 - +03
|
||||
3:00 - +03 2018 Oct 28 2:00s
|
||||
4:00 - +04
|
||||
|
||||
# From Paul Eggert (2016-11-11):
|
||||
# Europe/Saratov covers:
|
||||
@@ -3346,7 +3382,7 @@ Zone Europe/Belgrade 1:22:00 - LMT 1884
|
||||
Link Europe/Belgrade Europe/Ljubljana # Slovenia
|
||||
Link Europe/Belgrade Europe/Podgorica # Montenegro
|
||||
Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
|
||||
Link Europe/Belgrade Europe/Skopje # Macedonia
|
||||
Link Europe/Belgrade Europe/Skopje # North Macedonia
|
||||
Link Europe/Belgrade Europe/Zagreb # Croatia
|
||||
|
||||
# Slovakia
|
||||
@@ -3427,7 +3463,8 @@ Rule Spain 1978 only - Oct 1 2:00s 0 -
|
||||
#Rule NatSpain 1937 only - May 22 23:00 1:00 S
|
||||
#Rule NatSpain 1937 1938 - Oct Sat>=1 24:00s 0 -
|
||||
#Rule NatSpain 1938 only - Mar 26 23:00 1:00 S
|
||||
# The following rules are copied from Morocco from 1967 through 1978.
|
||||
# The following rules are copied from Morocco from 1967 through 1978,
|
||||
# except with "S" letters.
|
||||
Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
|
||||
Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
|
||||
Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
|
||||
@@ -3447,6 +3484,7 @@ Zone Africa/Ceuta -0:21:16 - LMT 1900 Dec 31 23:38:44
|
||||
0:00 1:00 WEST 1918 Oct 7 23:00
|
||||
0:00 - WET 1924
|
||||
0:00 Spain WE%sT 1929
|
||||
0:00 - WET 1967 # Help zishrink.awk.
|
||||
0:00 SpainAfrica WE%sT 1984 Mar 16
|
||||
1:00 - CET 1986
|
||||
1:00 EU CE%sT
|
||||
@@ -3632,7 +3670,7 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
||||
# http://www.resmigazete.gov.tr/eskiler/2001/03/20010324.htm#2 - for 2001
|
||||
# http://www.resmigazete.gov.tr/eskiler/2002/03/20020316.htm#2 - for 2002-2006
|
||||
# From Paul Eggert (2016-09-25):
|
||||
# Prefer the above sources to Shanks & Pottenger for time stamps after 1985.
|
||||
# Prefer the above sources to Shanks & Pottenger for timestamps after 1985.
|
||||
|
||||
# From Steffen Thorsen (2007-03-09):
|
||||
# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
|
||||
@@ -3842,10 +3880,29 @@ Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
|
||||
# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
|
||||
# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
|
||||
|
||||
# From Paul Eggert (2018-10-03):
|
||||
# As is usual in tzdb, Ukrainian zones use the most common English spellings.
|
||||
# For example, tzdb uses Europe/Kiev, as "Kiev" is the most common spelling in
|
||||
# English for Ukraine's capital, even though it is certainly wrong as a
|
||||
# transliteration of the Ukrainian "Київ". This is similar to tzdb's use of
|
||||
# Europe/Prague, which is certainly wrong as a transliteration of the Czech
|
||||
# "Praha". ("Kiev" came from old Slavic via Russian to English, and "Prague"
|
||||
# came from old Slavic via French to English, so the two cases have something
|
||||
# in common.) Admittedly English-language spelling of Ukrainian names is
|
||||
# controversial, and some day "Kyiv" may become substantially more popular in
|
||||
# English; in the meantime, stick with the traditional English "Kiev" as that
|
||||
# means less disruption for our users.
|
||||
#
|
||||
# Anyway, none of the common English-language spellings (Kiev, Kyiv, Kieff,
|
||||
# Kijeff, Kijev, Kiyef, Kiyeff) do justice to the common pronunciation in
|
||||
# Ukrainian, namely [ˈkɪjiu̯] (IPA). This pronunciation has nothing like an
|
||||
# English "v" or "f", and instead trails off with what an English-speaker
|
||||
# would call a demure "oo" sound, and it would would be better anglicized as
|
||||
# "Kuiyu". Here's a sound file, if you would like to do as the Kuiyuvians do:
|
||||
# https://commons.wikimedia.org/wiki/File:Uk-Київ.ogg
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
# Most of Ukraine since 1970 has been like Kiev.
|
||||
# "Kyiv" is the transliteration of the Ukrainian name, but
|
||||
# "Kiev" is more common in English.
|
||||
# This represents most of Ukraine. See above for the spelling of "Kiev".
|
||||
Zone Europe/Kiev 2:02:04 - LMT 1880
|
||||
2:02:04 - KMT 1924 May 2 # Kiev Mean Time
|
||||
2:00 - EET 1930 Jun 21
|
||||
|
||||
@@ -21,11 +21,13 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for noncommittal factory settings
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# For distributors who don't want to put time zone specification in
|
||||
# their installation procedures. Users that run 'date' will get the
|
||||
# For distributors who don't want to specify a timezone in their
|
||||
# installation procedures. Users who run 'date' will get the
|
||||
# time zone abbreviation "-00", indicating that the actual time zone
|
||||
# is unknown.
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
# All text uses UTF-8 encoding. The columns of the table are as follows:
|
||||
#
|
||||
# 1. ISO 3166-1 alpha-2 country code, current as of
|
||||
# ISO 3166-1 N905 (2016-11-15). See: Updates on ISO 3166-1
|
||||
# http://isotc.iso.org/livelink/livelink/Open/16944257
|
||||
# ISO 3166-1 N976 (2018-11-06). See: Updates on ISO 3166-1
|
||||
# https://isotc.iso.org/livelink/livelink/Open/16944257
|
||||
# 2. The usual English name for the coded region,
|
||||
# chosen so that alphabetic sorting of subsets produces helpful lists.
|
||||
# This is not the same as the English name in the ISO 3166 tables.
|
||||
@@ -189,7 +189,7 @@ ME Montenegro
|
||||
MF St Martin (French)
|
||||
MG Madagascar
|
||||
MH Marshall Islands
|
||||
MK Macedonia
|
||||
MK North Macedonia
|
||||
ML Mali
|
||||
MM Myanmar (Burma)
|
||||
MN Mongolia
|
||||
@@ -258,7 +258,7 @@ ST Sao Tome & Principe
|
||||
SV El Salvador
|
||||
SX St Maarten (Dutch)
|
||||
SY Syria
|
||||
SZ Swaziland
|
||||
SZ Eswatini (Swaziland)
|
||||
TC Turks & Caicos Is
|
||||
TD Chad
|
||||
TF French Southern & Antarctic Lands
|
||||
|
||||
@@ -26,21 +26,28 @@
|
||||
# This file is in the public domain.
|
||||
|
||||
# This file is generated automatically from the data in the public-domain
|
||||
# leap-seconds.list file, which is copied from:
|
||||
# ftp://ftp.nist.gov/pub/time/leap-seconds.list
|
||||
# leap-seconds.list file, which can be copied from
|
||||
# <ftp://ftp.nist.gov/pub/time/leap-seconds.list>
|
||||
# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>
|
||||
# or <ftp://tycho.usno.navy.mil/pub/ntp/leap-seconds.list>.
|
||||
# For more about leap-seconds.list, please see
|
||||
# The NTP Timescale and Leap Seconds
|
||||
# https://www.eecis.udel.edu/~mills/leap.html
|
||||
# <https://www.eecis.udel.edu/~mills/leap.html>.
|
||||
|
||||
# The International Earth Rotation and Reference Systems Service
|
||||
# periodically uses leap seconds to keep UTC to within 0.9 s of UT1
|
||||
# (which measures the true angular orientation of the earth in space); see
|
||||
# Levine J. Coordinated Universal Time and the leap second.
|
||||
# (which measures the true angular orientation of the earth in space)
|
||||
# and publishes leap second data in a copyrighted file
|
||||
# <https://hpiers.obspm.fr/iers/bul/bulc/Leap_Second.dat>.
|
||||
# See: Levine J. Coordinated Universal Time and the leap second.
|
||||
# URSI Radio Sci Bull. 2016;89(4):30-6. doi:10.23919/URSIRSB.2016.7909995
|
||||
# http://ieeexplore.ieee.org/document/7909995/
|
||||
# <https://ieeexplore.ieee.org/document/7909995>.
|
||||
|
||||
# There were no leap seconds before 1972, because the official mechanism
|
||||
# accounting for the discrepancy between atomic time and the earth's rotation
|
||||
# did not exist until the early 1970s.
|
||||
# did not exist. The first ("1 Jan 1972") data line in leap-seconds.list
|
||||
# does not denote a leap second; it denotes the start of the current definition
|
||||
# of UTC.
|
||||
|
||||
# The correction (+ or -) is made at the given time, so lines
|
||||
# will typically look like:
|
||||
@@ -48,10 +55,7 @@
|
||||
# or
|
||||
# Leap YEAR MON DAY 23:59:59 - R/S
|
||||
|
||||
# If the leapsecond is Rolling (R) the given time is local time.
|
||||
# If the leapsecond is Stationary (S) the given time is UTC.
|
||||
|
||||
# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
|
||||
# If the leap second is Rolling (R) the given time is local time (unused here).
|
||||
Leap 1972 Jun 30 23:59:60 + S
|
||||
Leap 1972 Dec 31 23:59:60 + S
|
||||
Leap 1973 Dec 31 23:59:60 + S
|
||||
@@ -80,5 +84,9 @@ Leap 2012 Jun 30 23:59:60 + S
|
||||
Leap 2015 Jun 30 23:59:60 + S
|
||||
Leap 2016 Dec 31 23:59:60 + S
|
||||
|
||||
# Updated through IERS Bulletin C55
|
||||
# File expires on: 28 December 2018
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000
|
||||
#expires 1577491200
|
||||
|
||||
# Updated through IERS Bulletin C57
|
||||
# File expires on: 28 December 2019
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for North and Central America and environs
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -71,7 +73,7 @@
|
||||
#
|
||||
# Most of the US soon followed suit. See:
|
||||
# Bartky IR. The adoption of standard time. Technol Cult 1989 Jan;30(1):25-56.
|
||||
# http://dx.doi.org/10.2307/3105430
|
||||
# https://dx.doi.org/10.2307/3105430
|
||||
|
||||
# From Paul Eggert (2005-04-16):
|
||||
# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
|
||||
@@ -460,6 +462,19 @@ Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
|
||||
# western South Dakota, far western Texas (El Paso County, Hudspeth County,
|
||||
# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
|
||||
#
|
||||
# From Paul Eggert (2018-10-25):
|
||||
# On 1921-03-04 federal law placed all of Texas into the central time zone.
|
||||
# However, El Paso ignored the law for decades and continued to observe
|
||||
# mountain time, on the grounds that that's what they had always done
|
||||
# and they weren't about to let the federal government tell them what to do.
|
||||
# Eventually the federal government gave in and changed the law on
|
||||
# 1970-04-10 to match what El Paso was actually doing. Although
|
||||
# that's slightly after our 1970 cutoff, there is no need to create a
|
||||
# separate zone for El Paso since they were ignoring the law anyway. See:
|
||||
# Long T. El Pasoans were time rebels, fought to stay in Mountain zone.
|
||||
# El Paso Times. 2018-10-24 06:40 -06.
|
||||
# https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
|
||||
Rule Denver 1920 only - Oct lastSun 2:00 0 S
|
||||
@@ -607,6 +622,26 @@ Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
|
||||
# between AKST and AKDT from now on....
|
||||
# https://www.krbd.org/2015/10/30/annette-island-times-they-are-a-changing/
|
||||
|
||||
# From Ryan Stanley (2018-11-06):
|
||||
# The Metlakatla community in Alaska has decided not to change its
|
||||
# clock back an hour starting on November 4th, 2018 (day before yesterday).
|
||||
# They will be gmtoff=-28800 year-round.
|
||||
# https://www.facebook.com/141055983004923/photos/pb.141055983004923.-2207520000.1541465673./569081370202380/
|
||||
|
||||
# From Paul Eggert (2018-12-16):
|
||||
# In a 2018-12-11 special election, Metlakatla voted to go back to
|
||||
# Alaska time (including daylight saving time) starting next year.
|
||||
# https://www.krbd.org/2018/12/12/metlakatla-to-follow-alaska-standard-time-allow-liquor-sales/
|
||||
#
|
||||
# From Ryan Stanley (2019-01-11):
|
||||
# The community will be changing back on the 20th of this month...
|
||||
# From Tim Parenti (2019-01-11):
|
||||
# Per an announcement on the Metlakatla community's official Facebook page, the
|
||||
# "fall back" will be on Sunday 2019-01-20 at 02:00:
|
||||
# https://www.facebook.com/141055983004923/photos/607150969728753/
|
||||
# So they won't be waiting for Alaska to join them on 2019-03-10, but will
|
||||
# rather change their clocks twice in seven weeks.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone America/Juneau 15:02:19 - LMT 1867 Oct 19 15:33:32
|
||||
-8:57:41 - LMT 1900 Aug 20 12:00
|
||||
@@ -633,6 +668,8 @@ Zone America/Metlakatla 15:13:42 - LMT 1867 Oct 19 15:44:55
|
||||
-8:00 - PST 1969
|
||||
-8:00 US P%sT 1983 Oct 30 2:00
|
||||
-8:00 - PST 2015 Nov 1 2:00
|
||||
-9:00 US AK%sT 2018 Nov 4 2:00
|
||||
-8:00 - PST 2019 Jan 20 2:00
|
||||
-9:00 US AK%sT
|
||||
Zone America/Yakutat 14:41:05 - LMT 1867 Oct 19 15:12:18
|
||||
-9:18:55 - LMT 1900 Aug 20 12:00
|
||||
@@ -729,9 +766,7 @@ Zone America/Adak 12:13:22 - LMT 1867 Oct 19 12:44:35
|
||||
Zone Pacific/Honolulu -10:31:26 - LMT 1896 Jan 13 12:00
|
||||
-10:30 - HST 1933 Apr 30 2:00
|
||||
-10:30 1:00 HDT 1933 May 21 12:00
|
||||
-10:30 - HST 1942 Feb 9 2:00
|
||||
-10:30 1:00 HDT 1945 Sep 30 2:00
|
||||
-10:30 - HST 1947 Jun 8 2:00
|
||||
-10:30 US H%sT 1947 Jun 8 2:00
|
||||
-10:00 - HST
|
||||
|
||||
# Now we turn to US areas that have diverged from the consensus since 1970.
|
||||
@@ -795,6 +830,22 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
|
||||
# For a map of Indiana's time zone regions, see:
|
||||
# https://en.wikipedia.org/wiki/Time_in_Indiana
|
||||
#
|
||||
# From Paul Eggert (2018-11-30):
|
||||
# A brief but entertaining history of time in Indiana describes a 1949 debate
|
||||
# in the Indiana House where city legislators (who favored "fast time")
|
||||
# tussled with farm legislators (who didn't) over a bill to outlaw DST:
|
||||
# "Lacking enough votes, the city faction tries to filibuster until time runs
|
||||
# out on the session at midnight, but rural champion Rep. Herbert Copeland,
|
||||
# R-Madison, leans over the gallery railing and forces the official clock
|
||||
# back to 9 p.m., breaking it in the process. The clock sticks on 9 as the
|
||||
# debate rages on into the night. The filibuster finally dies out and the
|
||||
# bill passes, while outside the chamber, clocks read 3:30 a.m. In the end,
|
||||
# it doesn't matter which side won. The law has no enforcement powers and
|
||||
# is simply ignored by fast-time communities."
|
||||
# How Indiana went from 'God's time' to split zones and daylight-saving.
|
||||
# Indianapolis Star. 2018-11-27 14:58 -05.
|
||||
# https://www.indystar.com/story/news/politics/2018/11/27/indianapolis-indiana-time-zone-history-central-eastern-daylight-savings-time/2126300002/
|
||||
#
|
||||
# From Paul Eggert (2007-08-17):
|
||||
# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
|
||||
# with the following exceptions:
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for proposed US election time (this file is obsolete)
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for South America and environs
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -415,7 +417,7 @@ Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
|
||||
# standard time, so let's do that here too. This does not change UTC
|
||||
# offsets, only tm_isdst and the time zone abbreviations. One minor
|
||||
# plus is that this silences a zic complaint that there's no POSIX TZ
|
||||
# setting for time stamps past 2038.
|
||||
# setting for timestamps past 2038.
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
#
|
||||
@@ -948,6 +950,14 @@ Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
|
||||
# ... https://www.timeanddate.com/news/time/brazil-delays-dst-2018.html
|
||||
# From Steffen Thorsen (2017-12-20):
|
||||
# http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2017/decreto/D9242.htm
|
||||
#
|
||||
# From Fábio Gomes (2018-10-04):
|
||||
# The Brazilian president just announced a new change on this year DST.
|
||||
# It was scheduled to start on November 4th and it was changed to November 18th.
|
||||
# From Rodrigo Brüning Wessler (2018-10-15):
|
||||
# The Brazilian government just announced that the change in DST was
|
||||
# canceled.... Maybe the president Michel Temer also woke up one hour
|
||||
# earlier today. :)
|
||||
Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
|
||||
Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
|
||||
Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
|
||||
@@ -1254,6 +1264,24 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# they will switch from -03 to -04 one hour after Santiago does that day.
|
||||
# For now, assume that they will not revert.
|
||||
|
||||
# From Juan Correa (2018-08-13):
|
||||
# As of moments ago, the Ministry of Energy in Chile has announced the new
|
||||
# schema for DST. ... Announcement in video (in Spanish):
|
||||
# https://twitter.com/MinEnergia/status/1029000399129374720
|
||||
# From Yonathan Dossow (2018-08-13):
|
||||
# The video says "first Saturday of September", we all know it means Sunday at
|
||||
# midnight.
|
||||
# From Tim Parenti (2018-08-13):
|
||||
# Translating the captions on the video at 0:44-0:55, "We want to announce as
|
||||
# Government that from 2019, Winter Time will be increased to 5 months, between
|
||||
# the first Saturday of April and the first Saturday of September."
|
||||
# At 2:08-2:20, "The Magallanes region will maintain its current time, as
|
||||
# decided by the citizens during 2017, but our Government will promote a
|
||||
# regional dialogue table to gather their opinion on this matter."
|
||||
# https://twitter.com/MinEnergia/status/1029009354001973248
|
||||
# "We will keep the new time policy unchanged for at least the next 4 years."
|
||||
# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
|
||||
Rule Chile 1928 1932 - Apr 1 0:00 0 -
|
||||
@@ -1287,8 +1315,10 @@ Rule Chile 2011 only - May Sun>=2 3:00u 0 -
|
||||
Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
|
||||
Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
|
||||
Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
|
||||
Rule Chile 2016 max - May Sun>=9 3:00u 0 -
|
||||
Rule Chile 2016 max - Aug Sun>=9 4:00u 1:00 -
|
||||
Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
|
||||
Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
|
||||
Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
|
||||
Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
|
||||
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
|
||||
# (1996-09) says 1998-03-08. Ignore these.
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for System V rules (this file is obsolete)
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tz zone descriptions (deprecated version)
|
||||
# tzdb timezone descriptions (deprecated version)
|
||||
#
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
#
|
||||
# From Paul Eggert (2014-07-31):
|
||||
# From Paul Eggert (2018-06-27):
|
||||
# This file is intended as a backward-compatibility aid for older programs.
|
||||
# New programs should use zone1970.tab. This file is like zone1970.tab (see
|
||||
# zone1970.tab's comments), but with the following additional restrictions:
|
||||
@@ -35,13 +35,13 @@
|
||||
# 2. The first data column contains exactly one country code.
|
||||
#
|
||||
# Because of (2), each row stands for an area that is the intersection
|
||||
# of a region identified by a country code and of a zone where civil
|
||||
# of a region identified by a country code and of a timezone where civil
|
||||
# clocks have agreed since 1970; this is a narrower definition than
|
||||
# that of zone1970.tab.
|
||||
#
|
||||
# This table is intended as an aid for users, to help them select time
|
||||
# zone data entries appropriate for their practical needs. It is not
|
||||
# intended to take or endorse any position on legal or territorial claims.
|
||||
# This table is intended as an aid for users, to help them select timezones
|
||||
# appropriate for their practical needs. It is not intended to take or
|
||||
# endorse any position on legal or territorial claims.
|
||||
#
|
||||
#country-
|
||||
#code coordinates TZ comments
|
||||
@@ -262,6 +262,7 @@ KW +2920+04759 Asia/Kuwait
|
||||
KY +1918-08123 America/Cayman
|
||||
KZ +4315+07657 Asia/Almaty Kazakhstan (most areas)
|
||||
KZ +4448+06528 Asia/Qyzylorda Qyzylorda/Kyzylorda/Kzyl-Orda
|
||||
KZ +5312+06337 Asia/Qostanay Qostanay/Kostanay/Kustanay
|
||||
KZ +5017+05710 Asia/Aqtobe Aqtobe/Aktobe
|
||||
KZ +4431+05016 Asia/Aqtau Mangghystau/Mankistau
|
||||
KZ +4707+05156 Asia/Atyrau Atyrau/Atirau/Gur'yev
|
||||
@@ -291,7 +292,7 @@ MM +1647+09610 Asia/Yangon
|
||||
MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas)
|
||||
MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
|
||||
MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
|
||||
MO +2214+11335 Asia/Macau
|
||||
MO +221150+1133230 Asia/Macau
|
||||
MP +1512+14545 Pacific/Saipan
|
||||
MQ +1436-06105 America/Martinique
|
||||
MR +1806-01557 Africa/Nouakchott
|
||||
@@ -355,9 +356,9 @@ RS +4450+02030 Europe/Belgrade
|
||||
RU +5443+02030 Europe/Kaliningrad MSK-01 - Kaliningrad
|
||||
RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area
|
||||
RU +4457+03406 Europe/Simferopol MSK+00 - Crimea
|
||||
RU +4844+04425 Europe/Volgograd MSK+00 - Volgograd
|
||||
RU +5836+04939 Europe/Kirov MSK+00 - Kirov
|
||||
RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan
|
||||
RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd
|
||||
RU +5134+04602 Europe/Saratov MSK+01 - Saratov
|
||||
RU +5420+04824 Europe/Ulyanovsk MSK+01 - Ulyanovsk
|
||||
RU +5312+05009 Europe/Samara MSK+01 - Samara, Udmurtia
|
||||
|
||||
@@ -11729,6 +11729,7 @@
|
||||
32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
|
||||
32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
|
||||
32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
|
||||
32FF;SQUARE ERA NAME REIWA;So;0;L;<square> 4EE4 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME REIWA;;;;
|
||||
3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
|
||||
3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
|
||||
3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
# By default this Makefile will build a native toolchain for the current
|
||||
# platform if called with something like this:
|
||||
#
|
||||
# make tars
|
||||
# make tars BASE_OS=OEL6
|
||||
#
|
||||
# To build the full set of crosstools for additional platforms, use a command
|
||||
# line looking like this:
|
||||
|
||||
@@ -110,6 +110,7 @@ RPM_LIST := \
|
||||
libXext libXext-devel \
|
||||
libXtst libXtst-devel \
|
||||
libXrender libXrender-devel \
|
||||
libXrandr libXrandr-devel \
|
||||
freetype freetype-devel \
|
||||
libXt libXt-devel \
|
||||
libSM libSM-devel \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -109,6 +109,7 @@ ifneq ($(call check-jvm-feature, cds), true)
|
||||
classListParser.cpp \
|
||||
classLoaderExt.cpp \
|
||||
filemap.cpp \
|
||||
heapShared.cpp \
|
||||
metaspaceShared.cpp \
|
||||
metaspaceShared_$(HOTSPOT_TARGET_CPU).cpp \
|
||||
metaspaceShared_$(HOTSPOT_TARGET_CPU_ARCH).cpp \
|
||||
|
||||
@@ -30,7 +30,7 @@ $(eval $(call IncludeCustomExtension, hotspot/lib/JvmOverrideFiles.gmk))
|
||||
# status for individual files on specific platforms.
|
||||
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := -fno-var-tracking-assignments -O0
|
||||
BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS := -fno-var-tracking-assignments
|
||||
BUILD_LIBJVM_jvmciCompilerToVM.cpp_CXXFLAGS := -fno-var-tracking-assignments
|
||||
BUILD_LIBJVM_jvmciCompilerToVMInit.cpp_CXXFLAGS := -fno-var-tracking-assignments
|
||||
BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
|
||||
@@ -38,20 +38,26 @@ ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
BUILD_LIBJVM_interp_masm_x86.cpp_CXXFLAGS := -Wno-uninitialized
|
||||
endif
|
||||
|
||||
LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NONE)
|
||||
# If the FDLIBM_CFLAGS variable is non-empty we know
|
||||
# that the fdlibm-fork in hotspot can get optimized
|
||||
# by using -ffp-contract=off on GCC/Clang platforms.
|
||||
ifneq ($(FDLIBM_CFLAGS), )
|
||||
LIBJVM_FDLIBM_COPY_OPT_FLAG := $(CXX_O_FLAG_NORM)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||
BUILD_LIBJVM_ostream.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
|
||||
BUILD_LIBJVM_logFileOutput.cpp_CXXFLAGS := -D_FILE_OFFSET_BITS=64
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
|
||||
BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
|
||||
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(CXX_O_FLAG_NONE)
|
||||
BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
|
||||
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := -DNO_PCH $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
|
||||
|
||||
ifeq ($(TOOLCHAIN_TYPE), clang)
|
||||
JVM_PRECOMPILED_HEADER_EXCLUDE := \
|
||||
sharedRuntimeTrig.cpp \
|
||||
sharedRuntimeTrans.cpp \
|
||||
#
|
||||
endif
|
||||
ifeq ($(TOOLCHAIN_TYPE), clang)
|
||||
JVM_PRECOMPILED_HEADER_EXCLUDE := \
|
||||
sharedRuntimeTrig.cpp \
|
||||
sharedRuntimeTrans.cpp \
|
||||
#
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_CPU), x86)
|
||||
@@ -120,8 +126,8 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
# The copied fdlibm routines in these files must not be optimized
|
||||
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
|
||||
BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := $(CXX_O_FLAG_NONE)
|
||||
BUILD_LIBJVM_sharedRuntimeTrig.cpp_CXXFLAGS := $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
|
||||
BUILD_LIBJVM_sharedRuntimeTrans.cpp_CXXFLAGS := $(FDLIBM_CFLAGS) $(LIBJVM_FDLIBM_COPY_OPT_FLAG)
|
||||
ifeq ($(TOOLCHAIN_TYPE), clang)
|
||||
# NOTE: The old build tested clang version to make sure this workaround
|
||||
# for the clang bug was still needed.
|
||||
|
||||
@@ -82,7 +82,6 @@ JVM_GetClassFieldsCount
|
||||
JVM_GetClassInterfaces
|
||||
JVM_GetClassMethodsCount
|
||||
JVM_GetClassModifiers
|
||||
JVM_GetClassName
|
||||
JVM_GetClassNameUTF
|
||||
JVM_GetClassSignature
|
||||
JVM_GetClassSigners
|
||||
@@ -133,9 +132,11 @@ JVM_Halt
|
||||
JVM_HasReferencePendingList
|
||||
JVM_HoldsLock
|
||||
JVM_IHashCode
|
||||
JVM_InitClassName
|
||||
JVM_InitProperties
|
||||
JVM_InitStackTraceElement
|
||||
JVM_InitStackTraceElementArray
|
||||
JVM_InitializeFromArchive
|
||||
JVM_InternString
|
||||
JVM_Interrupt
|
||||
JVM_InvokeMethod
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -106,7 +106,7 @@ public class CLDRConverter {
|
||||
private static final ResourceBundle.Control defCon =
|
||||
ResourceBundle.Control.getControl(ResourceBundle.Control.FORMAT_DEFAULT);
|
||||
|
||||
private static final String[] AVAILABLE_TZIDS = TimeZone.getAvailableIDs();
|
||||
private static Set<String> AVAILABLE_TZIDS;
|
||||
private static String zoneNameTempFile;
|
||||
private static String tzDataDir;
|
||||
private static final Map<String, String> canonicalTZMap = new HashMap<>();
|
||||
@@ -340,17 +340,26 @@ public class CLDRConverter {
|
||||
if (sb.indexOf("root") == -1) {
|
||||
sb.append("root");
|
||||
}
|
||||
Bundle b = new Bundle(id, sb.toString(), null, null);
|
||||
// Insert the bundle for root at the top so that it will get
|
||||
// processed first.
|
||||
if ("root".equals(id)) {
|
||||
retList.add(0, b);
|
||||
} else {
|
||||
retList.add(b);
|
||||
}
|
||||
retList.add(new Bundle(id, sb.toString(), null, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sort the bundles based on id. This will make sure all the parent bundles are
|
||||
// processed first, e.g., for en_GB bundle, en_001, and "root" comes before
|
||||
// en_GB. In order for "root" to come at the beginning, "root" is replaced with
|
||||
// empty string on comparison.
|
||||
retList.sort((o1, o2) -> {
|
||||
String id1 = o1.getID();
|
||||
String id2 = o2.getID();
|
||||
if(id1.equals("root")) {
|
||||
id1 = "";
|
||||
}
|
||||
if(id2.equals("root")) {
|
||||
id2 = "";
|
||||
}
|
||||
return id1.compareTo(id2);
|
||||
});
|
||||
return retList;
|
||||
}
|
||||
|
||||
@@ -711,7 +720,7 @@ public class CLDRConverter {
|
||||
});
|
||||
}
|
||||
|
||||
Arrays.stream(AVAILABLE_TZIDS).forEach(tzid -> {
|
||||
getAvailableZoneIds().stream().forEach(tzid -> {
|
||||
// If the tzid is deprecated, get the data for the replacement id
|
||||
String tzKey = Optional.ofNullable((String)handlerSupplMeta.get(tzid))
|
||||
.orElse(tzid);
|
||||
@@ -1053,8 +1062,20 @@ public class CLDRConverter {
|
||||
StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
|
||||
}
|
||||
|
||||
// This method assumes handlerMetaZones is already initialized
|
||||
private static Set<String> getAvailableZoneIds() {
|
||||
assert handlerMetaZones != null;
|
||||
if (AVAILABLE_TZIDS == null) {
|
||||
AVAILABLE_TZIDS = new HashSet<>(ZoneId.getAvailableZoneIds());
|
||||
AVAILABLE_TZIDS.addAll(handlerMetaZones.keySet());
|
||||
AVAILABLE_TZIDS.remove(MetaZonesParseHandler.NO_METAZONE_KEY);
|
||||
}
|
||||
|
||||
return AVAILABLE_TZIDS;
|
||||
}
|
||||
|
||||
private static Stream<String> zidMapEntry() {
|
||||
return ZoneId.getAvailableZoneIds().stream()
|
||||
return getAvailableZoneIds().stream()
|
||||
.map(id -> {
|
||||
String canonId = canonicalTZMap.getOrDefault(id, id);
|
||||
String meta = handlerMetaZones.get(canonId);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -40,7 +40,7 @@ enum CalendarType {
|
||||
{0, 2}, // generic
|
||||
{0, 2}, // gregorian
|
||||
{0, 1}, // buddhist
|
||||
{232, 4}, // japanese (eras from Meiji)
|
||||
{232, 5}, // japanese (eras from Meiji)
|
||||
{0, 2}, // roc (Minguo)
|
||||
{0, 1}, // islamic (Hijrah)
|
||||
{0, 1}, // islamic-civil (same as islamic)
|
||||
|
||||
@@ -1,503 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
##############
|
||||
#
|
||||
# Global settings
|
||||
#
|
||||
|
||||
# Install test bundle for targets in jprt.test.bundle.targets set
|
||||
jprt.selective.test.bundle.installation=true
|
||||
|
||||
# The current release name
|
||||
jprt.tools.default.release=jdk9
|
||||
|
||||
# Allow concurrent changes to be merged in prior to pushing
|
||||
jprt.sync.push=true
|
||||
|
||||
# Directories to be excluded from the source bundles
|
||||
jprt.bundle.exclude.src.dirs=build dist webrev ${jprt.bundle.exclude.src.dirs.extra}
|
||||
|
||||
# Use configure when building
|
||||
jprt.build.use.configure=true
|
||||
jprt.build.use.jib=true
|
||||
jprt.test.use.jib=true
|
||||
jprt.jib.launcher=bin/jib.sh
|
||||
jprt.build.use.jib.publish=true
|
||||
|
||||
# Clear out all the build needs as JIB handles this
|
||||
jprt.jdk9.build.needs=
|
||||
jprt.macosx.jdk9.build.needs=
|
||||
jprt.windows_i586.jdk9.build.needs=
|
||||
jprt.windows_x64.jdk9.build.needs=
|
||||
jprt.solaris.jdk9.build.needs=
|
||||
jprt.linux_i586.jdk9.build.needs=
|
||||
jprt.linux_x64.jdk9.build.needs=
|
||||
jprt.linux_armv6.jdk9.build.needs=
|
||||
jprt.linux_armvh.jdk9.build.needs=
|
||||
jprt.linux_arm64.jdk9.build.needs=
|
||||
jprt.linux_armsflt.jdk9.build.needs=
|
||||
jprt.linux_armvfpsflt.jdk9.build.needs=
|
||||
jprt.linux_armvfphflt.jdk9.build.needs=
|
||||
jprt.linux_armv6vfphflt.jdk9.build.needs=
|
||||
jprt.solaris.client.build.needs=
|
||||
jprt.linux.client.build.needs=
|
||||
jprt.solaris.jdk9.compiler=
|
||||
jprt.linux.jdk9.compiler=
|
||||
jprt.jdk9.test.needs=
|
||||
|
||||
# Disable the need for preinstalled Visual Studio and Xcode
|
||||
jprt.windows.jdk9.compiler=
|
||||
jprt.windows.6.2.jdk9.compiler=
|
||||
jprt.windows.6.3.jdk9.compiler=
|
||||
jprt.windows.jdk9.target.attribute.compilerVS2013.appliesTo.builds=none
|
||||
jprt.macosx.jdk9.target.attribute.compilerXcode511.appliesTo.builds=none
|
||||
|
||||
# Set up the run flavors (jvm variants)
|
||||
jprt.run.flavors=c2,default,${my.additional.run.flavors}
|
||||
|
||||
# Setup jib profiles
|
||||
jprt.linux_i586.product.build.jib.profile=linux-x86
|
||||
jprt.linux_x64.product.build.jib.profile=linux-x64
|
||||
jprt.macosx_x64.product.build.jib.profile=macosx-x64
|
||||
jprt.solaris_sparcv9.product.build.jib.profile=solaris-sparcv9
|
||||
jprt.solaris_x64.product.build.jib.profile=solaris-x64
|
||||
jprt.windows_i586.product.build.jib.profile=windows-x86
|
||||
jprt.windows_x64.product.build.jib.profile=windows-x64
|
||||
|
||||
jprt.linux_i586.fastdebug.build.jib.profile=linux-x86-debug
|
||||
jprt.linux_x64.fastdebug.build.jib.profile=linux-x64-debug
|
||||
jprt.macosx_x64.fastdebug.build.jib.profile=macosx-x64-debug
|
||||
jprt.solaris_sparcv9.fastdebug.build.jib.profile=solaris-sparcv9-debug
|
||||
jprt.solaris_x64.fastdebug.build.jib.profile=solaris-x64-debug
|
||||
jprt.windows_i586.fastdebug.build.jib.profile=windows-x86-debug
|
||||
jprt.windows_x64.fastdebug.build.jib.profile=windows-x64-debug
|
||||
|
||||
jprt.linux_i586.slowdebug.build.jib.profile=linux-x86-slowdebug
|
||||
jprt.linux_x64.slowdebug.build.jib.profile=linux-x64-slowdebug
|
||||
jprt.macosx_x64.slowdebug.build.jib.profile=macosx-x64-slowdebug
|
||||
jprt.solaris_sparcv9.slowdebug.build.jib.profile=solaris-sparcv9-slowdebug
|
||||
jprt.solaris_x64.slowdebug.build.jib.profile=solaris-x64-slowdebug
|
||||
jprt.windows_i586.slowdebug.build.jib.profile=windows-x86-slowdebug
|
||||
jprt.windows_x64.slowdebug.build.jib.profile=windows-x64-slowdebug
|
||||
|
||||
jprt.linux_i586.productOpen.build.jib.profile=linux-x86-open
|
||||
jprt.linux_x64.productOpen.build.jib.profile=linux-x64-open
|
||||
jprt.macosx_x64.productOpen.build.jib.profile=macosx-x64-open
|
||||
jprt.solaris_sparcv9.productOpen.build.jib.profile=solaris-sparcv9-open
|
||||
jprt.solaris_x64.productOpen.build.jib.profile=solaris-x64-open
|
||||
jprt.windows_i586.productOpen.build.jib.profile=windows-x86-open
|
||||
jprt.windows_x64.productOpen.build.jib.profile=windows-x64-open
|
||||
|
||||
jprt.linux_i586.fastdebugOpen.build.jib.profile=linux-x86-open-debug
|
||||
jprt.linux_x64.fastdebugOpen.build.jib.profile=linux-x64-open-debug
|
||||
jprt.macosx_x64.fastdebugOpen.build.jib.profile=macosx-x64-open-debug
|
||||
jprt.solaris_sparcv9.fastdebugOpen.build.jib.profile=solaris-sparcv9-open-debug
|
||||
jprt.solaris_x64.fastdebugOpen.build.jib.profile=solaris-x64-open-debug
|
||||
jprt.windows_i586.fastdebugOpen.build.jib.profile=windows-x86-open-debug
|
||||
jprt.windows_x64.fastdebugOpen.build.jib.profile=windows-x64-open-debug
|
||||
|
||||
jprt.linux_i586.productZero.build.jib.profile=linux-x86-zero
|
||||
jprt.linux_x64.productZero.build.jib.profile=linux-x64-zero
|
||||
|
||||
jprt.linux_i586.fastdebugZero.build.jib.profile=linux-x86-zero-debug
|
||||
jprt.linux_x64.fastdebugZero.build.jib.profile=linux-x64-zero-debug
|
||||
|
||||
jprt.test.jib.profile=run-test-jprt
|
||||
|
||||
# Set make target to use for different build flavors
|
||||
jprt.build.flavor.fastdebugOpen.target=jprt_bundle
|
||||
jprt.build.flavor.fastdebug.target=jprt_bundle
|
||||
jprt.build.flavor.product.target=jprt_bundle
|
||||
jprt.build.flavor.productOpen.target=jprt_bundle
|
||||
jprt.build.flavor.optimized.target=jprt_bundle
|
||||
jprt.build.flavor.optimizedOpen.target=jprt_bundle
|
||||
jprt.build.flavor.slowdebug.target=jprt_bundle
|
||||
jprt.build.flavor.productZero.target=jprt_bundle
|
||||
jprt.build.flavor.fastdebugZero.target=jprt_bundle
|
||||
|
||||
# Use these configure args to define debug level or provide specific
|
||||
# configuration details not covered by Jib profiles.
|
||||
jprt.slowdebug.build.configure.args=
|
||||
jprt.fastdebug.build.configure.args=--disable-precompiled-headers
|
||||
# Don't disable precompiled headers on windows. It's simply too slow.
|
||||
jprt.windows_i586.fastdebug.build.configure.args=
|
||||
jprt.windows_x64.fastdebug.build.configure.args=
|
||||
jprt.windows_i586.fastdebugOpen.build.configure.args=
|
||||
jprt.windows_x64.fastdebugOpen.build.configure.args=
|
||||
jprt.product.build.configure.args=
|
||||
jprt.optimized.build.configure.args=--with-debug-level=optimized
|
||||
jprt.slowdebugOpen.build.configure.args=${jprt.slowdebug.build.configure.args}
|
||||
jprt.fastdebugOpen.build.configure.args=${jprt.fastdebug.build.configure.args}
|
||||
jprt.productOpen.build.configure.args=${jprt.product.build.configure.args}
|
||||
jprt.optimizedOpen.build.configure.args=${jprt.product.build.configure.args}
|
||||
|
||||
|
||||
# hotspot testset has custom build flavors and build targets
|
||||
my.jprt.testsetHasCustomBuildFlavors.hotspot=true
|
||||
my.jprt.testsetHasCustomBuildTargets.hotspot=true
|
||||
my.jprt.testsetHasCustomBuildFlavors.buildinfra=true
|
||||
my.jprt.testsetHasCustomBuildTargets.buildinfra=true
|
||||
|
||||
# determine if the specified testset has custom build flavors or build targets
|
||||
my.jprt.testsetHasCustomBuildFlavors=${my.jprt.testsetHasCustomBuildFlavors.${jprt.test.set}}
|
||||
my.jprt.testsetHasCustomBuildTargets=${my.jprt.testsetHasCustomBuildTargets.${jprt.test.set}}
|
||||
|
||||
# Select build flavors and build targets based on the specified testset
|
||||
jprt.build.flavors=${my.jprt.testsetHasCustomBuildFlavors ? \
|
||||
${my.build.flavors.${jprt.test.set}} : ${my.build.flavors.default}}
|
||||
jprt.build.targets=${my.jprt.testsetHasCustomBuildTargets ? \
|
||||
${my.build.targets.${jprt.test.set}} : ${my.build.targets.default}}
|
||||
|
||||
# Select test targets - jprt default for jprt.test.set is "default"
|
||||
jprt.test.targets=${my.test.targets.${jprt.test.set}}
|
||||
jprt.make.rule.test.targets=${my.make.rule.test.targets.${jprt.test.set}}
|
||||
|
||||
# Not all test targets need the test image
|
||||
jprt.test.bundle.targets=\
|
||||
${my.make.rule.test.targets.svc}, \
|
||||
${my.make.rule.test.targets.hotspot.reg}, \
|
||||
${my.make.rule.test.targets.hotspot.gtest} \
|
||||
${my.make.rule.test.targets.nativesanity} \
|
||||
${my.test.target.set:TESTNAME=jdk_lang} \
|
||||
${my.test.target.set:TESTNAME=jdk_nio}
|
||||
|
||||
# 7155453: Work-around to prevent popups on OSX from blocking test completion
|
||||
# but the work-around is added to all platforms to be consistent
|
||||
jprt.jbb.options=-Djava.awt.headless=true
|
||||
|
||||
########
|
||||
#
|
||||
# Build options (generic)
|
||||
#
|
||||
|
||||
# Configure args common to all builds
|
||||
# Also allows for additional, testset specific configure arguments to be set
|
||||
jprt.build.configure.args= \
|
||||
--with-output-sync=recurse \
|
||||
--with-jobs=$ALT_PARALLEL_COMPILE_JOBS \
|
||||
--with-version-opt=$JPRT_JOB_ID \
|
||||
${my.additional.build.configure.args.${jprt.test.set}} \
|
||||
${my.custom.build.configure.args}
|
||||
|
||||
########
|
||||
#
|
||||
# Build targets and options (default/jdk)
|
||||
#
|
||||
|
||||
# The default build flavors
|
||||
my.build.flavors.default=fastdebug,product
|
||||
|
||||
# Standard list of jprt build targets for this source tree
|
||||
my.build.targets.default= \
|
||||
solaris_sparcv9_5.11-{product|fastdebug}, \
|
||||
solaris_x64_5.11-{product|fastdebug}, \
|
||||
linux_i586_3.8-{product|fastdebug}, \
|
||||
linux_x64_3.8-{product|fastdebug}, \
|
||||
macosx_x64_10.9-{product|fastdebug}, \
|
||||
windows_i586_6.3-{product|fastdebug}, \
|
||||
windows_x64_6.3-{product|fastdebug}, \
|
||||
${my.additional.build.targets.default}
|
||||
|
||||
# Test target list (no fastdebug & limited c2 testing)
|
||||
my.test.target.set= \
|
||||
solaris_sparcv9_5.11-product-c2-TESTNAME, \
|
||||
solaris_x64_5.11-product-c2-TESTNAME, \
|
||||
linux_i586_3.8-product-c2-TESTNAME, \
|
||||
linux_x64_3.8-product-c2-TESTNAME, \
|
||||
macosx_x64_10.9-product-c2-TESTNAME, \
|
||||
windows_i586_6.3-product-c2-TESTNAME, \
|
||||
windows_x64_6.3-product-c2-TESTNAME
|
||||
|
||||
# Default vm test targets (testset=default)
|
||||
my.test.targets.default= \
|
||||
${my.test.target.set:TESTNAME=jvm98}, \
|
||||
${my.test.target.set:TESTNAME=scimark}
|
||||
|
||||
# Default jdk test targets (testset=default)
|
||||
my.make.rule.test.targets.default= \
|
||||
${my.test.target.set:TESTNAME=langtools_jtreg}, \
|
||||
${my.test.target.set:TESTNAME=jdk_lang}, \
|
||||
${my.test.target.set:TESTNAME=jdk_math}, \
|
||||
${my.test.target.set:TESTNAME=jdk_util}
|
||||
|
||||
# Default vm test targets (testset=core)
|
||||
my.test.targets.core=
|
||||
|
||||
# Core jdk test targets (testset=core)
|
||||
my.make.rule.test.targets.core= \
|
||||
${my.test.target.set:TESTNAME=jdk_lang}, \
|
||||
${my.test.target.set:TESTNAME=jdk_math}, \
|
||||
${my.test.target.set:TESTNAME=jdk_util}, \
|
||||
${my.test.target.set:TESTNAME=jdk_io}, \
|
||||
${my.test.target.set:TESTNAME=jdk_net}, \
|
||||
${my.test.target.set:TESTNAME=jdk_nio}, \
|
||||
${my.test.target.set:TESTNAME=jdk_security1}, \
|
||||
${my.test.target.set:TESTNAME=jdk_security2}, \
|
||||
${my.test.target.set:TESTNAME=jdk_security3}, \
|
||||
${my.test.target.set:TESTNAME=jdk_security4}, \
|
||||
${my.test.target.set:TESTNAME=jdk_rmi}, \
|
||||
${my.test.target.set:TESTNAME=jdk_text}, \
|
||||
${my.test.target.set:TESTNAME=jdk_time}, \
|
||||
${my.test.target.set:TESTNAME=jdk_other}, \
|
||||
${my.test.target.set:TESTNAME=core_tools}
|
||||
|
||||
# Svc vm test targets (testset=svc)
|
||||
my.test.targets.svc=
|
||||
|
||||
# Core jdk test targets (testset=svc)
|
||||
my.make.rule.test.targets.svc= \
|
||||
${my.test.target.set:TESTNAME=jdk_management}, \
|
||||
${my.test.target.set:TESTNAME=jdk_instrument}, \
|
||||
${my.test.target.set:TESTNAME=jdk_jmx}, \
|
||||
${my.test.target.set:TESTNAME=jdk_jdi}, \
|
||||
${my.test.target.set:TESTNAME=jdk_jfr}, \
|
||||
${my.test.target.set:TESTNAME=svc_tools}, \
|
||||
${my.make.rule.test.targets.svc.extra}
|
||||
|
||||
# JAXP vm test targets (testset=jaxp)
|
||||
my.test.targets.jaxp=
|
||||
|
||||
# JAXP test targets (testset=jaxp)
|
||||
my.make.rule.test.targets.jaxp= \
|
||||
${my.test.target.set:TESTNAME=jaxp_all}
|
||||
|
||||
# All vm test targets (testset=all)
|
||||
my.test.targets.all= \
|
||||
${my.test.targets.default}, \
|
||||
${my.test.target.set:TESTNAME=runThese}, \
|
||||
${my.test.target.set:TESTNAME=jbb_default}
|
||||
|
||||
# All jdk test targets (testset=all)
|
||||
my.make.rule.test.targets.all= \
|
||||
${my.make.rule.test.targets.core}, \
|
||||
${my.make.rule.test.targets.svc}, \
|
||||
${my.test.target.set:TESTNAME=jdk_awt}, \
|
||||
${my.test.target.set:TESTNAME=jdk_beans}, \
|
||||
${my.test.target.set:TESTNAME=jdk_sound}, \
|
||||
${my.test.target.set:TESTNAME=jdk_swing}
|
||||
|
||||
# PIT vm test targets (testset=pit)
|
||||
my.test.targets.pit= \
|
||||
${my.test.targets.all}
|
||||
|
||||
# PIT jdk test targets (testset=pit)
|
||||
my.make.rule.test.targets.pit= \
|
||||
${my.test.target.set:TESTNAME=langtools_jtreg}, \
|
||||
${my.make.rule.test.targets.core}, \
|
||||
${my.make.rule.test.targets.svc} \
|
||||
${my.make.rule.test.targets.jaxp}
|
||||
|
||||
# JCK test targets in test/Makefile (no windows)
|
||||
my.test.target.set.jck= \
|
||||
solaris_sparcv9_5.11-product-c2-JCK7TESTRULE, \
|
||||
solaris_x64_5.11-product-c2-JCK7TESTRULE, \
|
||||
linux_i586_3.8-product-c2-JCK7TESTRULE, \
|
||||
linux_x64_3.8-product-c2-JCK7TESTRULE
|
||||
|
||||
# JCK testset targets
|
||||
my.make.rule.test.targets.jck= \
|
||||
${my.test.target.set.jck:JCK7TESTRULE=jck7devtools}, \
|
||||
${my.test.target.set.jck:JCK7TESTRULE=jck7runtime}, \
|
||||
${my.test.target.set.jck:JCK7TESTRULE=jck7compiler}
|
||||
|
||||
|
||||
#############
|
||||
#
|
||||
# Hotspot related settings (testset=hotspot)
|
||||
#
|
||||
|
||||
# The hotspot build flavors
|
||||
my.build.flavors.hotspot= \
|
||||
fastdebugOpen,fastdebug,product,productOpen,optimized,optimizedOpen \
|
||||
${my.additional.build.flavors.hotspot}
|
||||
|
||||
# Platforms built for hotspot push jobs
|
||||
my.build.targets.hotspot= \
|
||||
solaris_sparcv9_5.11-{product|fastdebug}, \
|
||||
solaris_x64_5.11-{product|fastdebug}, \
|
||||
linux_i586_3.8-{product|fastdebug}, \
|
||||
linux_x64_3.8-{product|fastdebug}, \
|
||||
macosx_x64_10.9-{product|fastdebug}, \
|
||||
windows_i586_6.3-{product|fastdebug}, \
|
||||
windows_x64_6.3-{product|fastdebug}, \
|
||||
solaris_x64_5.11-{fastdebugOpen}, \
|
||||
linux_x64_3.8-{productOpen}, \
|
||||
${my.additional.build.targets.hotspot}
|
||||
|
||||
# Tests to run on the various platforms for hotspot push jobs
|
||||
my.test.targets.hotspot.solaris.sparcv9= \
|
||||
solaris_sparcv9_5.11-{product|fastdebug}-c2-jvm98, \
|
||||
solaris_sparcv9_5.11-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
solaris_sparcv9_5.11-{product|fastdebug}-c2-scimark, \
|
||||
solaris_sparcv9_5.11-product-c2-runThese8,
|
||||
|
||||
my.test.targets.hotspot.solaris.x64= \
|
||||
solaris_x64_5.11-{product|fastdebug}-c2-jvm98, \
|
||||
solaris_x64_5.11-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
solaris_x64_5.11-{product|fastdebug}-c2-scimark, \
|
||||
solaris_x64_5.11-product-c2-runThese8, \
|
||||
solaris_x64_5.11-product-c2-runThese8_Xcomp_lang, \
|
||||
solaris_x64_5.11-product-c2-runThese8_Xcomp_vm,
|
||||
|
||||
my.test.targets.hotspot.linux.i586= \
|
||||
linux_i586_3.8-{product|fastdebug}-c2-jvm98, \
|
||||
linux_i586_3.8-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
linux_i586_3.8-{product|fastdebug}-c2-scimark, \
|
||||
linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_lang, \
|
||||
linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_vm
|
||||
|
||||
my.test.targets.hotspot.linux.x64= \
|
||||
linux_x64_3.8-{product|fastdebug}-c2-jvm98, \
|
||||
linux_x64_3.8-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
linux_x64_3.8-{product|fastdebug}-c2-scimark
|
||||
|
||||
my.test.targets.hotspot.macosx.x64= \
|
||||
macosx_x64_10.9-{product|fastdebug}-c2-jvm98, \
|
||||
macosx_x64_10.9-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
macosx_x64_10.9-{product|fastdebug}-c2-scimark
|
||||
|
||||
my.test.targets.hotspot.windows.i586= \
|
||||
windows_i586_6.3-{product|fastdebug}-c2-jvm98, \
|
||||
windows_i586_6.3-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
windows_i586_6.3-{product|fastdebug}-c2-scimark, \
|
||||
windows_i586_6.3-product-c2-runThese8, \
|
||||
windows_i586_6.3-product-c2-runThese8_Xcomp_lang, \
|
||||
windows_i586_6.3-product-c2-runThese8_Xcomp_vm,
|
||||
|
||||
my.test.targets.hotspot.windows.x64= \
|
||||
windows_x64_6.3-{product|fastdebug}-c2-jvm98, \
|
||||
windows_x64_6.3-{product|fastdebug}-c2-jvm98_nontiered, \
|
||||
windows_x64_6.3-{product|fastdebug}-c2-scimark, \
|
||||
windows_x64_6.3-product-c2-runThese8, \
|
||||
windows_x64_6.3-product-c2-runThese8_Xcomp_lang, \
|
||||
windows_x64_6.3-product-c2-runThese8_Xcomp_vm,
|
||||
|
||||
# Some basic "smoke" tests for OpenJDK builds
|
||||
my.test.targets.hotspot.open= \
|
||||
solaris_x64_5.11-{productOpen|fastdebugOpen}-c2-jvm98, \
|
||||
linux_x64_3.8-{productOpen|fastdebugOpen}-c2-jvm98
|
||||
|
||||
# The complete list of test targets for jprt
|
||||
my.test.targets.hotspot= \
|
||||
${my.test.targets.hotspot.open}, \
|
||||
${my.test.targets.hotspot.solaris.sparcv9}, \
|
||||
${my.test.targets.hotspot.solaris.x64}, \
|
||||
${my.test.targets.hotspot.linux.i586}, \
|
||||
${my.test.targets.hotspot.linux.x64}, \
|
||||
${my.test.targets.hotspot.macosx.x64}, \
|
||||
${my.test.targets.hotspot.windows.i586}, \
|
||||
${my.test.targets.hotspot.windows.x64}, \
|
||||
${my.test.targets.hotspot.solaris.sparcv9}, \
|
||||
${my.test.targets.hotspot.solaris.x64}, \
|
||||
${my.test.targets.hotspot.linux.x64}, \
|
||||
${my.test.targets.hotspot.windows.i586}, \
|
||||
${my.test.targets.hotspot.windows.x64}, \
|
||||
${my.additional.test.targets.hotspot}
|
||||
|
||||
|
||||
# Make file based test targets
|
||||
|
||||
my.make.rule.test.targets.hotspot.gtest= \
|
||||
linux_i586_3.8-*-default-hotspot_gtest, \
|
||||
linux_x64_3.8-*-default-hotspot_gtest, \
|
||||
macosx_x64_10.9-*-default-hotspot_gtest, \
|
||||
solaris_sparcv9_5.11-*-default-hotspot_gtest, \
|
||||
solaris_x64_5.11-*-default-hotspot_gtest, \
|
||||
windows_i586_6.3-*-default-hotspot_gtest, \
|
||||
windows_x64_6.3-*-default-hotspot_gtest, \
|
||||
${my.additional.make.rule.test.targets.hotspot.gtest}
|
||||
|
||||
my.make.rule.test.targets.hotspot.reg.group= \
|
||||
solaris_sparcv9_5.11-fastdebug-c2-GROUP, \
|
||||
solaris_x64_5.11-fastdebug-c2-GROUP, \
|
||||
linux_i586_3.8-fastdebug-c2-GROUP, \
|
||||
linux_x64_3.8-fastdebug-c2-GROUP, \
|
||||
macosx_x64_10.9-fastdebug-c2-GROUP, \
|
||||
windows_i586_6.3-fastdebug-c2-GROUP, \
|
||||
windows_x64_6.3-fastdebug-c2-GROUP
|
||||
|
||||
# Hotspot jtreg tests
|
||||
my.make.rule.test.targets.hotspot.reg= \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_compiler_1}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_compiler_2}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_compiler_3}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_compiler_closed}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_gc_1}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_gc_2}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_gc_closed}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_gc_gcold}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_gc_gcbasher}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_runtime}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_tier1_serviceability}, \
|
||||
${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
|
||||
solaris_sparcv9_5.11-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
solaris_x64_5.11-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
linux_i586_3.8-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
linux_x64_3.8-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
macosx_x64_10.9-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
windows_i586_6.3-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
windows_x64_6.3-product-c2-hotspot_tier1_gc_gcbasher, \
|
||||
${my.additional.make.rule.test.targets.hotspot.reg}
|
||||
|
||||
# Other Makefile based Hotspot tests
|
||||
my.make.rule.test.targets.hotspot.other= \
|
||||
${my.make.rule.test.targets.hotspot.gtest}, \
|
||||
${my.additional.make.rule.test.targets.hotspot.other}
|
||||
|
||||
# All the makefile based tests to run
|
||||
my.make.rule.test.targets.hotspot= \
|
||||
${my.make.rule.test.targets.hotspot.reg} \
|
||||
${my.make.rule.test.targets.hotspot.other}
|
||||
|
||||
# Native jdk and hotspot test targets (testset=nativesanity)
|
||||
my.make.rule.test.targets.nativesanity= \
|
||||
${my.test.target.set:TESTNAME=jdk_native_sanity}, \
|
||||
${my.test.target.set:TESTNAME=hotspot_native_sanity}
|
||||
|
||||
################################################################################
|
||||
# Testset buildinfra
|
||||
my.build.flavors.buildinfra = \
|
||||
product,fastdebug,slowdebug,productZero,fastdebugZero \
|
||||
${my.additional.build.flavors.buildinfra}
|
||||
|
||||
# Platforms built for hotspot push jobs
|
||||
my.build.targets.buildinfra = \
|
||||
solaris_sparcv9_5.11-{product|fastdebug|slowdebug}, \
|
||||
solaris_x64_5.11-{product|fastdebug|slowdebug}, \
|
||||
linux_i586_3.8-{product|fastdebug|slowdebug|productZero|fastdebugZero}, \
|
||||
linux_x64_3.8-{product|fastdebug|slowdebug|productZero|fastdebugZero}, \
|
||||
macosx_x64_10.9-{product|fastdebug|slowdebug}, \
|
||||
windows_i586_6.3-{product|fastdebug|slowdebug}, \
|
||||
windows_x64_6.3-{product|fastdebug|slowdebug}, \
|
||||
${my.additional.build.targets.buildinfra}
|
||||
|
||||
my.test.targets.buildinfra = \
|
||||
${my.test.targets.default}, \
|
||||
${my.test.targets.hotspot}
|
||||
|
||||
my.make.rule.test.targets.buildinfra = \
|
||||
${my.make.rule.test.targets.default}, \
|
||||
${my.make.rule.test.targets.hotspot}
|
||||
@@ -43,8 +43,6 @@ $(eval $(call SetupBuildLauncher, java, \
|
||||
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/java_objs, \
|
||||
OPTIMIZATION := HIGH, \
|
||||
WINDOWS_STATIC_LINK := true, \
|
||||
NO_JAVA_MS := true, \
|
||||
))
|
||||
|
||||
$(SUPPORT_OUTPUTDIR)/modules_cmds/java.base/java$(EXE_SUFFIX): $(BUILD_LAUNCHER_java)
|
||||
@@ -60,8 +58,6 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBS_windows := user32.lib comctl32.lib, \
|
||||
EXTRA_RC_FLAGS := $(JAVA_RC_FLAGS), \
|
||||
VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \
|
||||
WINDOWS_STATIC_LINK := true, \
|
||||
NO_JAVA_MS := true, \
|
||||
))
|
||||
endif
|
||||
|
||||
@@ -90,7 +86,7 @@ endif
|
||||
|
||||
################################################################################
|
||||
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix linux), )
|
||||
$(eval $(call SetupJdkExecutable, BUILD_JSPAWNHELPER, \
|
||||
NAME := jspawnhelper, \
|
||||
SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
|
||||
|
||||
@@ -39,7 +39,7 @@ $(eval $(call SetupBuildLauncher, pack200, \
|
||||
# On Mac, we have always exported all symbols, probably due to oversight
|
||||
# and/or misunderstanding. To emulate this, don't hide any symbols
|
||||
# by default.
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding (see JDK-8214063)
|
||||
# Also provide an override for non-conformant libraries.
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
CXXFLAGS_JDKEXE += -fvisibility=hidden
|
||||
@@ -50,10 +50,6 @@ else ifeq ($(TOOLCHAIN_TYPE), clang)
|
||||
endif
|
||||
else ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
CXXFLAGS_JDKEXE += -xldscope=hidden
|
||||
else ifeq ($(TOOLCHAIN_TYPE), xlc)
|
||||
ifneq ($(CC_VERSION_NUMBER), 12.1)
|
||||
CXXFLAGS_JDKEXE += -qvisibility=hidden
|
||||
endif
|
||||
endif
|
||||
|
||||
UNPACKEXE_SRC := $(TOPDIR)/src/jdk.pack/share/native/common-unpack \
|
||||
|
||||
@@ -25,19 +25,13 @@
|
||||
|
||||
include JdkNativeCompilation.gmk
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN)
|
||||
else
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
endif
|
||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli)
|
||||
ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli)
|
||||
|
||||
# Applications expect to be able to link against libjawt without invoking
|
||||
# System.loadLibrary("jawt") first. This was the behaviour described in the
|
||||
# devloper documentation of JAWT and what worked with OpenJDK6.
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
|
||||
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib)
|
||||
endif
|
||||
# Applications expect to be able to link against libjawt without invoking
|
||||
# System.loadLibrary("jawt") first. This was the behaviour described in the
|
||||
# devloper documentation of JAWT and what worked with OpenJDK6.
|
||||
ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
|
||||
ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib)
|
||||
endif
|
||||
|
||||
# Tell the compiler not to export any functions unless declared so in
|
||||
@@ -45,7 +39,7 @@ endif
|
||||
# On Mac, we have always exported all symbols, probably due to oversight
|
||||
# and/or misunderstanding. To emulate this, don't hide any symbols
|
||||
# by default.
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding (see JDK-8214063)
|
||||
# Also provide an override for non-conformant libraries.
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
LAUNCHER_CFLAGS += -fvisibility=hidden
|
||||
@@ -56,10 +50,6 @@ else ifeq ($(TOOLCHAIN_TYPE), clang)
|
||||
endif
|
||||
else ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
LAUNCHER_CFLAGS += -xldscope=hidden
|
||||
else ifeq ($(TOOLCHAIN_TYPE), xlc)
|
||||
ifneq ($(CC_VERSION_NUMBER), 12.1)
|
||||
CXXFLAGS_JDKEXE += -qvisibility=hidden
|
||||
endif
|
||||
endif
|
||||
|
||||
LAUNCHER_SRC := $(TOPDIR)/src/java.base/share/native/launcher
|
||||
@@ -97,11 +87,9 @@ JAVA_MANIFEST := $(TOPDIR)/src/java.base/windows/native/launcher/java.manifest
|
||||
# LDFLAGS_solaris Additional LDFLAGS_solaris
|
||||
# RC_FLAGS Additional RC_FLAGS
|
||||
# MACOSX_SIGNED On macosx, sign this binary
|
||||
# WINDOWS_STATIC_LINK On windows, link statically with C runtime and libjli.
|
||||
# OPTIMIZATION Override default optimization level (LOW)
|
||||
# OUTPUT_DIR Override default output directory
|
||||
# VERSION_INFO_RESOURCE Override default Windows resource file
|
||||
# NO_JAVA_MS Do not add -ms8m to JAVA_ARGS.
|
||||
SetupBuildLauncher = $(NamedParamsMacroTemplate)
|
||||
define SetupBuildLauncherBody
|
||||
# Setup default values (unless overridden)
|
||||
@@ -109,26 +97,24 @@ define SetupBuildLauncherBody
|
||||
$1_OPTIMIZATION := LOW
|
||||
endif
|
||||
|
||||
ifneq ($$($1_NO_JAVA_MS), true)
|
||||
# The norm is to append -ms8m, unless otherwise instructed.
|
||||
$1_JAVA_ARGS += -ms8m
|
||||
endif
|
||||
|
||||
ifeq ($$($1_MAIN_MODULE), )
|
||||
$1_MAIN_MODULE := $(MODULE)
|
||||
endif
|
||||
|
||||
ifneq ($$($1_JAVA_ARGS), )
|
||||
ifneq ($$($1_EXTRA_JAVA_ARGS), )
|
||||
$1_EXTRA_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
|
||||
$$(addprefix -J, $$($1_EXTRA_JAVA_ARGS)), "$$a"$(COMMA) )) }'
|
||||
$1_CFLAGS += -DEXTRA_JAVA_ARGS=$$($1_EXTRA_JAVA_ARGS_STR)
|
||||
endif
|
||||
$1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
|
||||
$$(addprefix -J, $$($1_JAVA_ARGS)) -m $$($1_MAIN_MODULE)/$$($1_MAIN_CLASS), "$$a"$(COMMA) )) }'
|
||||
$1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR)
|
||||
$1_JAVA_ARGS += -ms8m
|
||||
ifneq ($$($1_MAIN_CLASS), )
|
||||
$1_LAUNCHER_CLASS := -m $$($1_MAIN_MODULE)/$$($1_MAIN_CLASS)
|
||||
endif
|
||||
|
||||
ifneq ($$($1_EXTRA_JAVA_ARGS), )
|
||||
$1_EXTRA_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
|
||||
$$(addprefix -J, $$($1_EXTRA_JAVA_ARGS)), "$$a"$(COMMA) )) }'
|
||||
$1_CFLAGS += -DEXTRA_JAVA_ARGS=$$($1_EXTRA_JAVA_ARGS_STR)
|
||||
endif
|
||||
$1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \
|
||||
$$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }'
|
||||
$1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR)
|
||||
|
||||
$1_LIBS :=
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
ifeq ($$($1_MACOSX_SIGNED), true)
|
||||
@@ -153,8 +139,6 @@ define SetupBuildLauncherBody
|
||||
-framework Foundation \
|
||||
-framework SystemConfiguration \
|
||||
-lstdc++ -liconv
|
||||
else
|
||||
$1_LIBS += $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a
|
||||
endif
|
||||
$1_LIBS += -framework Cocoa -framework Security \
|
||||
-framework ApplicationServices
|
||||
@@ -169,19 +153,13 @@ define SetupBuildLauncherBody
|
||||
$1_LIBS += -lz
|
||||
endif
|
||||
|
||||
ifeq ($$($1_WINDOWS_STATIC_LINK), true)
|
||||
$1_CFLAGS += $(filter-out -MD, $(CFLAGS_JDKEXE))
|
||||
$1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib
|
||||
else
|
||||
$1_CFLAGS += $(CFLAGS_JDKEXE)
|
||||
$1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
|
||||
endif
|
||||
$1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
|
||||
|
||||
$$(eval $$(call SetupJdkExecutable, BUILD_LAUNCHER_$1, \
|
||||
NAME := $1, \
|
||||
EXTRA_FILES := $(LAUNCHER_SRC)/main.c, \
|
||||
OPTIMIZATION := $$($1_OPTIMIZATION), \
|
||||
CFLAGS := $$($1_CFLAGS) \
|
||||
CFLAGS := $$(CFLAGS_JDKEXE) $$($1_CFLAGS) \
|
||||
$(LAUNCHER_CFLAGS) \
|
||||
$(VERSION_CFLAGS) \
|
||||
-DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \
|
||||
@@ -194,12 +172,15 @@ define SetupBuildLauncherBody
|
||||
$$(ORIGIN_ARG) \
|
||||
$$($1_LDFLAGS), \
|
||||
LDFLAGS_linux := \
|
||||
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LDFLAGS_macosx := \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
|
||||
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
|
||||
LIBS_unix := $$($1_LIBS_unix), \
|
||||
LIBS_linux := -lpthread -ljli $(LIBDL), \
|
||||
LIBS_macosx := -ljli, \
|
||||
LIBS_solaris := -ljli -lthread $(LIBDL), \
|
||||
LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
|
||||
$(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib \
|
||||
@@ -215,7 +196,7 @@ define SetupBuildLauncherBody
|
||||
$1 += $$(BUILD_LAUNCHER_$1)
|
||||
TARGETS += $$($1)
|
||||
|
||||
ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix))
|
||||
ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
$$(BUILD_LAUNCHER_$1): $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -503,6 +503,8 @@ else
|
||||
LIBFREETYPE_CFLAGS := -I$(BUILD_LIBFREETYPE_HEADER_DIRS)
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib
|
||||
# freetype now requires you to manually define this (see ftconfig.h)
|
||||
BUILD_LIBFREETYPE_CFLAGS += -DDLL_EXPORT
|
||||
else
|
||||
LIBFREETYPE_LIBS := -lfreetype
|
||||
endif
|
||||
@@ -516,8 +518,8 @@ else
|
||||
DISABLED_WARNINGS_solstudio := \
|
||||
E_STATEMENT_NOT_REACHED \
|
||||
E_END_OF_LOOP_CODE_NOT_REACHED, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4312, \
|
||||
DISABLED_WARNINGS_gcc := implicit-fallthrough, \
|
||||
DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \
|
||||
DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
))
|
||||
@@ -533,7 +535,8 @@ HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
|
||||
-DHB_NO_PRAGMA_GCC_DIAGNOSTIC
|
||||
endif
|
||||
ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
|
||||
HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
|
||||
@@ -618,8 +621,8 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
||||
E_ENUM_VAL_OVERFLOWS_INT_MAX, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := \
|
||||
truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
|
||||
hidevf w_novirtualdescr arrowrtn2, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101, \
|
||||
hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101 4068 4805 4138, \
|
||||
LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
|
||||
$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
@@ -794,7 +797,8 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
||||
LIBSPLASHSCREEN_EXCLUDE_SRC_PATTERNS := unix
|
||||
endif
|
||||
|
||||
LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0
|
||||
LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE \
|
||||
-DPNG_ARM_NEON_OPT=0 -DPNG_ARM_NEON_IMPLEMENTATION=0
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX
|
||||
|
||||
@@ -39,59 +39,30 @@ ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), linux)
|
||||
ifeq ($(OPENJDK_TARGET_CPU), ppc64)
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
else ifeq ($(OPENJDK_TARGET_CPU), s390x)
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
|
||||
endif
|
||||
# If FDLIBM_CFLAGS is non-empty we know that we can optimize
|
||||
# fdlibm when adding those extra C flags. Currently GCC,
|
||||
# and clang only.
|
||||
ifneq ($(FDLIBM_CFLAGS), )
|
||||
BUILD_LIBFDLIBM_OPTIMIZATION := LOW
|
||||
endif
|
||||
|
||||
LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
|
||||
LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
|
||||
LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) $(FDLIBM_CFLAGS)
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
|
||||
NAME := fdlibm, \
|
||||
TYPE := STATIC_LIBRARY, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
|
||||
SRC := $(LIBFDLIBM_SRC), \
|
||||
OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
|
||||
CFLAGS_windows_debug := -DLOGGING, \
|
||||
CFLAGS_aix := -qfloat=nomaf, \
|
||||
CFLAGS_linux_ppc64 := -ffp-contract=off, \
|
||||
CFLAGS_linux_ppc64le := -ffp-contract=off, \
|
||||
CFLAGS_linux_s390x := -ffp-contract=off, \
|
||||
CFLAGS_linux_aarch64 := -ffp-contract=off, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare misleading-indentation, \
|
||||
DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
|
||||
ARFLAGS := $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||
))
|
||||
|
||||
else
|
||||
|
||||
# On macosx the old build does partial (incremental) linking of fdlibm instead of
|
||||
# a plain static library.
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM_MAC, \
|
||||
NAME := fdlibm, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||
SRC := $(LIBFDLIBM_SRC), \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
|
||||
LDFLAGS := -nostdlib $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||
))
|
||||
|
||||
BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)
|
||||
$(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC)
|
||||
$(call install-file)
|
||||
|
||||
endif
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBFDLIBM, \
|
||||
NAME := fdlibm, \
|
||||
TYPE := STATIC_LIBRARY, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
|
||||
SRC := $(LIBFDLIBM_SRC), \
|
||||
OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
|
||||
CFLAGS_windows_debug := -DLOGGING, \
|
||||
CFLAGS_aix := -qfloat=nomaf, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare misleading-indentation array-bounds, \
|
||||
DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
|
||||
ARFLAGS := $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
|
||||
))
|
||||
|
||||
##########################################################################################
|
||||
|
||||
@@ -140,15 +111,15 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJAVA, \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
|
||||
LDFLAGS_windows := -delayload:shell32.dll, \
|
||||
LIBS := $(BUILD_LIBFDLIBM_TARGET), \
|
||||
LIBS_unix := -ljvm -lverify, \
|
||||
LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
|
||||
LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM), \
|
||||
LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) $(LIBM),\
|
||||
LIBS_macosx := -lfdlibm \
|
||||
-framework CoreFoundation \
|
||||
LIBS_linux := $(LIBDL), \
|
||||
LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL), \
|
||||
LIBS_aix := $(LIBDL) $(LIBM),\
|
||||
LIBS_macosx := -framework CoreFoundation \
|
||||
-framework Foundation \
|
||||
-framework Security -framework SystemConfiguration, \
|
||||
LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
|
||||
LIBS_windows := jvm.lib $(WIN_VERIFY_LIB) \
|
||||
shell32.lib delayimp.lib \
|
||||
advapi32.lib version.lib, \
|
||||
))
|
||||
@@ -236,8 +207,6 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
# Staticically link with c runtime on windows.
|
||||
LIBJLI_CFLAGS_JDKLIB := $(filter-out -MD, $(CFLAGS_JDKLIB))
|
||||
LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)
|
||||
# Supply the name of the C runtime lib.
|
||||
LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
|
||||
@@ -245,7 +214,6 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"'
|
||||
endif
|
||||
else
|
||||
LIBJLI_CFLAGS_JDKLIB := $(CFLAGS_JDKLIB)
|
||||
LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli
|
||||
endif
|
||||
|
||||
@@ -269,7 +237,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
|
||||
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
|
||||
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
||||
OPTIMIZATION := HIGH, \
|
||||
CFLAGS := $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
|
||||
DISABLED_WARNINGS_solstudio := \
|
||||
E_ASM_DISABLES_OPTIMIZATION \
|
||||
E_STATEMENT_NOT_REACHED, \
|
||||
@@ -289,54 +257,7 @@ TARGETS += $(BUILD_LIBJLI)
|
||||
|
||||
LIBJLI_SRC_DIRS := $(call FindSrcDirsForComponent, java.base, libjli)
|
||||
|
||||
# On windows, the static library has the same suffix as the import library created by
|
||||
# with the shared library, so the static library is given a different name. No harm
|
||||
# in doing it for all platform to reduce complexity.
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \
|
||||
NAME := jli_static, \
|
||||
TYPE := STATIC_LIBRARY, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
|
||||
SRC := $(LIBJLI_SRC_DIRS), \
|
||||
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
|
||||
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
||||
OPTIMIZATION := HIGH, \
|
||||
CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
|
||||
$(addprefix -I, $(LIBJLI_SRC_DIRS)), \
|
||||
ARFLAGS := $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBJLI_STATIC)
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
#
|
||||
# On macosx they do partial (incremental) linking of libjli_static.a
|
||||
# code it here...rather than add support to NativeCompilation
|
||||
# as this is first time I see it
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \
|
||||
NAME := jli_static, \
|
||||
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
|
||||
SRC := $(LIBJLI_SRC_DIRS), \
|
||||
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
|
||||
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
||||
OPTIMIZATION := HIGH, \
|
||||
CFLAGS := $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
|
||||
$(addprefix -I, $(LIBJLI_SRC_DIRS)), \
|
||||
LDFLAGS := -nostdlib $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
|
||||
))
|
||||
|
||||
ifeq ($(STATIC_BUILD), true)
|
||||
TARGETS += $(BUILD_LIBJLI_STATIC)
|
||||
else
|
||||
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC)
|
||||
$(call install-file)
|
||||
|
||||
TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a
|
||||
endif
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
# AIX also requires a static libjli because the compiler doesn't support '-rpath'
|
||||
$(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \
|
||||
NAME := jli_static, \
|
||||
@@ -346,7 +267,7 @@ else ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
|
||||
EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
|
||||
OPTIMIZATION := HIGH, \
|
||||
CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
|
||||
CFLAGS := $(STATIC_LIBRARY_FLAGS) $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \
|
||||
$(addprefix -I, $(LIBJLI_SRC_DIRS)), \
|
||||
ARFLAGS := $(ARFLAGS), \
|
||||
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static))
|
||||
|
||||
@@ -55,7 +55,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBNET, \
|
||||
LIBS_solaris := -lnsl -lsocket $(LIBDL), \
|
||||
LIBS_aix := $(LIBDL),\
|
||||
LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib winhttp.lib \
|
||||
delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \
|
||||
urlmon.lib delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \
|
||||
LIBS_macosx := -framework CoreFoundation -framework CoreServices, \
|
||||
))
|
||||
|
||||
@@ -138,6 +138,7 @@ ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBJSIG, \
|
||||
NAME := jsig, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJSIG_CFLAGS), \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
|
||||
@@ -31,20 +31,15 @@ $(eval $(call IncludeCustomExtension, lib/Lib-java.instrument.gmk))
|
||||
################################################################################
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
# Statically link the C runtime so that there are not dependencies on modules
|
||||
# not on the search patch when invoked from the Windows system directory
|
||||
# (or elsewhere).
|
||||
LIBINSTRUMENT_CFLAGS_JDKLIB := $(filter-out -MD, $(CFLAGS_JDKLIB))
|
||||
# equivalent of strcasecmp is stricmp on Windows
|
||||
LIBINSTRUMENT_CFLAGS := -Dstrcasecmp=stricmp
|
||||
else
|
||||
LIBINSTRUMENT_CFLAGS_JDKLIB := $(CFLAGS_JDKLIB)
|
||||
WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
|
||||
endif
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
|
||||
NAME := instrument, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(LIBINSTRUMENT_CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \
|
||||
CFLAGS_debug := -DJPLIS_LOGGING, \
|
||||
CFLAGS_release := -DNO_JPLIS_LOGGING, \
|
||||
EXTRA_HEADER_DIRS := java.base:libjli, \
|
||||
@@ -55,22 +50,24 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LDFLAGS_macosx := -Wl$(COMMA)-all_load, \
|
||||
LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \
|
||||
-L$(call FindLibDirForModule, java.base)/jli, \
|
||||
LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
|
||||
LIBS := $(JDKLIB_LIBS), \
|
||||
LIBS_unix := -ljava -ljvm $(LIBZ_LIBS), \
|
||||
LIBS_linux := -ljli $(LIBDL), \
|
||||
LIBS_solaris := -ljli $(LIBDL), \
|
||||
LIBS_aix := -liconv -ljli_static $(LIBDL), \
|
||||
LIBS_macosx := -liconv -framework Cocoa -framework Security \
|
||||
-framework ApplicationServices \
|
||||
$(call FindStaticLib, java.base, jli_static), \
|
||||
LIBS_macosx := -ljli -liconv -framework Cocoa -framework Security \
|
||||
-framework ApplicationServices, \
|
||||
LIBS_windows := jvm.lib $(WIN_JAVA_LIB) advapi32.lib \
|
||||
$(call FindStaticLib, java.base, jli_static), \
|
||||
$(WINDOWS_JLI_LIB), \
|
||||
))
|
||||
|
||||
ifneq ($(filter $(OPENJDK_TARGET_OS), macosx windows aix), )
|
||||
ifeq ($(OPENJDK_TARGET_OS), aix)
|
||||
$(BUILD_LIBINSTRUMENT): $(call FindStaticLib, java.base, jli_static)
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
$(BUILD_LIBINSTRUMENT): $(call FindLib, java.base, jli)
|
||||
else
|
||||
$(BUILD_LIBINSTRUMENT): $(call FindLib, java.base, jli, /jli)
|
||||
endif
|
||||
|
||||
@@ -44,7 +44,12 @@ else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
ifeq ($(OPENJDK_TARGET_CPU), x86_64)
|
||||
SA_CXXFLAGS := -DWIN64
|
||||
else
|
||||
SA_CXXFLAGS := -RTC1
|
||||
# Only add /RTC1 flag for debug builds as it's
|
||||
# incompatible with release type builds. See
|
||||
# https://msdn.microsoft.com/en-us/library/8wtf2dfz.aspx
|
||||
ifeq ($(DEBUG_LEVEL),slowdebug)
|
||||
SA_CXXFLAGS := -RTC1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -52,7 +57,7 @@ endif
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
|
||||
NAME := saproc, \
|
||||
OPTIMIZATION := NONE, \
|
||||
OPTIMIZATION := HIGH, \
|
||||
DISABLED_WARNINGS_microsoft := 4267, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := truncwarn unknownpragma, \
|
||||
|
||||
@@ -38,7 +38,7 @@ WIN_JAVA_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib
|
||||
# On Mac, we have always exported all symbols, probably due to oversight
|
||||
# and/or misunderstanding. To emulate this, don't hide any symbols
|
||||
# by default.
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding
|
||||
# On AIX/xlc we need at least xlc 13.1 for the symbol hiding (see JDK-8214063)
|
||||
# Also provide an override for non-conformant libraries.
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
CFLAGS_JDKLIB += -fvisibility=hidden
|
||||
@@ -55,12 +55,6 @@ else ifeq ($(TOOLCHAIN_TYPE), solstudio)
|
||||
CFLAGS_JDKLIB += -xldscope=hidden
|
||||
CXXFLAGS_JDKLIB += -xldscope=hidden
|
||||
EXPORT_ALL_SYMBOLS := -xldscope=global
|
||||
else ifeq ($(TOOLCHAIN_TYPE), xlc)
|
||||
ifneq ($(CC_VERSION_NUMBER), 12.1)
|
||||
CFLAGS_JDKLIB += -qvisibility=hidden
|
||||
CXXFLAGS_JDKLIB += -qvisibility=hidden
|
||||
EXPORT_ALL_SYMBOLS := -qvisibility=default
|
||||
endif
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -116,6 +116,7 @@
|
||||
<in>IBM1122.map</in>
|
||||
<in>IBM1123.map</in>
|
||||
<in>IBM1124.map</in>
|
||||
<in>IBM1129.map</in>
|
||||
<in>IBM1140.map</in>
|
||||
<in>IBM1141.map</in>
|
||||
<in>IBM1142.map</in>
|
||||
@@ -16285,6 +16286,11 @@
|
||||
tool="3"
|
||||
flavor2="0">
|
||||
</item>
|
||||
<item path="../../make/data/charsetmapping/IBM1129.map"
|
||||
ex="false"
|
||||
tool="3"
|
||||
flavor2="0">
|
||||
</item>
|
||||
<item path="../../make/data/charsetmapping/IBM1140.map"
|
||||
ex="false"
|
||||
tool="3"
|
||||
|
||||
@@ -139,6 +139,15 @@ NSK_AOD_INCLUDES := \
|
||||
-I$(VM_TESTBASE_DIR)/nsk/share/native \
|
||||
-I$(VM_TESTBASE_DIR)/nsk/share/jni
|
||||
|
||||
NO_FRAMEPOINTER_CFLAGS :=
|
||||
ifeq ($(OPENJDK_TARGET_OS),linux)
|
||||
NO_FRAMEPOINTER_CFLAGS := -fomit-frame-pointer
|
||||
endif
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libNoFramePointer := $(NO_FRAMEPOINTER_CFLAGS)
|
||||
# Optimization -O3 needed, HIGH == -O3
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_OPTIMIZATION_libNoFramePointer := HIGH
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libProcessUtils := $(VM_SHARE_INCLUDES)
|
||||
|
||||
BUILD_HOTSPOT_JTREG_LIBRARIES_CFLAGS_libThreadController := $(NSK_MONITORING_INCLUDES)
|
||||
|
||||
@@ -1,3 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of Oracle nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package java2d;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
@@ -1,3 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of Oracle nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package java2d;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
// Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2014, 2019, 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
|
||||
@@ -2914,7 +2914,7 @@ int MachCallRuntimeNode::ret_addr_offset() {
|
||||
// adr(rscratch2, retaddr)
|
||||
// lea(rscratch1, RuntimeAddress(addr)
|
||||
// stp(zr, rscratch2, Address(__ pre(sp, -2 * wordSize)))
|
||||
// blrt rscratch1
|
||||
// blr(rscratch1)
|
||||
CodeBlob *cb = CodeCache::find_blob(_entry_point);
|
||||
if (cb) {
|
||||
return MacroAssembler::far_branch_size();
|
||||
@@ -3039,10 +3039,6 @@ void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
|
||||
__ build_frame(framesize);
|
||||
|
||||
if (NotifySimulator) {
|
||||
__ notify(Assembler::method_entry);
|
||||
}
|
||||
|
||||
if (VerifyStackAtCalls) {
|
||||
Unimplemented();
|
||||
}
|
||||
@@ -3103,10 +3099,6 @@ void MachEpilogNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
|
||||
__ remove_frame(framesize);
|
||||
|
||||
if (NotifySimulator) {
|
||||
__ notify(Assembler::method_reentry);
|
||||
}
|
||||
|
||||
if (StackReservedPages > 0 && C->has_reserved_stack_access()) {
|
||||
__ reserved_stack_check();
|
||||
}
|
||||
@@ -3545,7 +3537,12 @@ const uint Matcher::vector_ideal_reg(int len) {
|
||||
}
|
||||
|
||||
const uint Matcher::vector_shift_count_ideal_reg(int size) {
|
||||
return Op_VecX;
|
||||
switch(size) {
|
||||
case 8: return Op_VecD;
|
||||
case 16: return Op_VecX;
|
||||
}
|
||||
ShouldNotReachHere();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// AES support not yet implemented
|
||||
@@ -3553,9 +3550,9 @@ const bool Matcher::pass_original_key_for_aes() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// x86 supports misaligned vectors store/load.
|
||||
// aarch64 supports misaligned vectors store/load.
|
||||
const bool Matcher::misaligned_vectors_ok() {
|
||||
return !AlignVector; // can be changed by flag
|
||||
return true;
|
||||
}
|
||||
|
||||
// false => size gets scaled to BytesPerLong, ok.
|
||||
@@ -3763,47 +3760,6 @@ bool Matcher::clone_address_expressions(AddPNode* m, Matcher::MStack& mstack, Ve
|
||||
void Compile::reshape_address(AddPNode* addp) {
|
||||
}
|
||||
|
||||
// helper for encoding java_to_runtime calls on sim
|
||||
//
|
||||
// this is needed to compute the extra arguments required when
|
||||
// planting a call to the simulator blrt instruction. the TypeFunc
|
||||
// can be queried to identify the counts for integral, and floating
|
||||
// arguments and the return type
|
||||
|
||||
static void getCallInfo(const TypeFunc *tf, int &gpcnt, int &fpcnt, int &rtype)
|
||||
{
|
||||
int gps = 0;
|
||||
int fps = 0;
|
||||
const TypeTuple *domain = tf->domain();
|
||||
int max = domain->cnt();
|
||||
for (int i = TypeFunc::Parms; i < max; i++) {
|
||||
const Type *t = domain->field_at(i);
|
||||
switch(t->basic_type()) {
|
||||
case T_FLOAT:
|
||||
case T_DOUBLE:
|
||||
fps++;
|
||||
default:
|
||||
gps++;
|
||||
}
|
||||
}
|
||||
gpcnt = gps;
|
||||
fpcnt = fps;
|
||||
BasicType rt = tf->return_type();
|
||||
switch (rt) {
|
||||
case T_VOID:
|
||||
rtype = MacroAssembler::ret_type_void;
|
||||
break;
|
||||
default:
|
||||
rtype = MacroAssembler::ret_type_integral;
|
||||
break;
|
||||
case T_FLOAT:
|
||||
rtype = MacroAssembler::ret_type_float;
|
||||
break;
|
||||
case T_DOUBLE:
|
||||
rtype = MacroAssembler::ret_type_double;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#define MOV_VOLATILE(REG, BASE, INDEX, SCALE, DISP, SCRATCH, INSN) \
|
||||
MacroAssembler _masm(&cbuf); \
|
||||
@@ -4738,7 +4694,7 @@ encode %{
|
||||
|
||||
// some calls to generated routines (arraycopy code) are scheduled
|
||||
// by C2 as runtime calls. if so we can call them using a br (they
|
||||
// will be in a reachable segment) otherwise we have to use a blrt
|
||||
// will be in a reachable segment) otherwise we have to use a blr
|
||||
// which loads the absolute address into a register.
|
||||
address entry = (address)$meth$$method;
|
||||
CodeBlob *cb = CodeCache::find_blob(entry);
|
||||
@@ -4749,16 +4705,12 @@ encode %{
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
int gpcnt;
|
||||
int fpcnt;
|
||||
int rtype;
|
||||
getCallInfo(tf(), gpcnt, fpcnt, rtype);
|
||||
Label retaddr;
|
||||
__ adr(rscratch2, retaddr);
|
||||
__ lea(rscratch1, RuntimeAddress(entry));
|
||||
// Leave a breadcrumb for JavaFrameAnchor::capture_last_Java_pc()
|
||||
__ stp(zr, rscratch2, Address(__ pre(sp, -2 * wordSize)));
|
||||
__ blrt(rscratch1, gpcnt, fpcnt, rtype);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
__ add(sp, sp, 2 * wordSize);
|
||||
}
|
||||
@@ -4817,13 +4769,7 @@ encode %{
|
||||
|
||||
// Handle existing monitor
|
||||
if ((EmitSync & 0x02) == 0) {
|
||||
// we can use AArch64's bit test and branch here but
|
||||
// markoopDesc does not define a bit index just the bit value
|
||||
// so assert in case the bit pos changes
|
||||
# define __monitor_value_log2 1
|
||||
assert(markOopDesc::monitor_value == (1 << __monitor_value_log2), "incorrect bit position");
|
||||
__ tbnz(disp_hdr, __monitor_value_log2, object_has_monitor);
|
||||
# undef __monitor_value_log2
|
||||
__ tbnz(disp_hdr, exact_log2(markOopDesc::monitor_value), object_has_monitor);
|
||||
}
|
||||
|
||||
// Set displaced_header to be (markOop of object | UNLOCK_VALUE).
|
||||
@@ -4855,14 +4801,6 @@ encode %{
|
||||
__ b(retry_load);
|
||||
}
|
||||
|
||||
// Formerly:
|
||||
// __ cmpxchgptr(/*oldv=*/disp_hdr,
|
||||
// /*newv=*/box,
|
||||
// /*addr=*/oop,
|
||||
// /*tmp=*/tmp,
|
||||
// cont,
|
||||
// /*fail*/NULL);
|
||||
|
||||
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
|
||||
|
||||
// If the compare-and-exchange succeeded, then we found an unlocked
|
||||
@@ -4875,7 +4813,7 @@ encode %{
|
||||
// markOop of object (disp_hdr) with the stack pointer.
|
||||
__ mov(rscratch1, sp);
|
||||
__ sub(disp_hdr, disp_hdr, rscratch1);
|
||||
__ mov(tmp, (address) (~(os::vm_page_size()-1) | markOopDesc::lock_mask_in_place));
|
||||
__ mov(tmp, (address) (~(os::vm_page_size()-1) | (uintptr_t)markOopDesc::lock_mask_in_place));
|
||||
// If condition is true we are cont and hence we can store 0 as the
|
||||
// displaced header in the box, which indicates that it is a recursive lock.
|
||||
__ ands(tmp/*==0?*/, disp_hdr, tmp);
|
||||
@@ -4911,43 +4849,19 @@ encode %{
|
||||
__ bind(fail);
|
||||
}
|
||||
|
||||
// Label next;
|
||||
// __ cmpxchgptr(/*oldv=*/disp_hdr,
|
||||
// /*newv=*/rthread,
|
||||
// /*addr=*/tmp,
|
||||
// /*tmp=*/rscratch1,
|
||||
// /*succeed*/next,
|
||||
// /*fail*/NULL);
|
||||
// __ bind(next);
|
||||
|
||||
// store a non-null value into the box.
|
||||
__ str(box, Address(box, BasicLock::displaced_header_offset_in_bytes()));
|
||||
|
||||
// PPC port checks the following invariants
|
||||
// #ifdef ASSERT
|
||||
// bne(flag, cont);
|
||||
// We have acquired the monitor, check some invariants.
|
||||
// addw(/*monitor=*/tmp, tmp, -ObjectMonitor::owner_offset_in_bytes());
|
||||
// Invariant 1: _recursions should be 0.
|
||||
// assert(ObjectMonitor::recursions_size_in_bytes() == 8, "unexpected size");
|
||||
// assert_mem8_is_zero(ObjectMonitor::recursions_offset_in_bytes(), tmp,
|
||||
// "monitor->_recursions should be 0", -1);
|
||||
// Invariant 2: OwnerIsThread shouldn't be 0.
|
||||
// assert(ObjectMonitor::OwnerIsThread_size_in_bytes() == 4, "unexpected size");
|
||||
//assert_mem4_isnot_zero(ObjectMonitor::OwnerIsThread_offset_in_bytes(), tmp,
|
||||
// "monitor->OwnerIsThread shouldn't be 0", -1);
|
||||
// #endif
|
||||
// Store a non-null value into the box to avoid looking like a re-entrant
|
||||
// lock. The fast-path monitor unlock code checks for
|
||||
// markOopDesc::monitor_value so use markOopDesc::unused_mark which has the
|
||||
// relevant bit set, and also matches ObjectSynchronizer::slow_enter.
|
||||
__ mov(tmp, (address)markOopDesc::unused_mark());
|
||||
__ str(tmp, Address(box, BasicLock::displaced_header_offset_in_bytes()));
|
||||
}
|
||||
|
||||
__ bind(cont);
|
||||
// flag == EQ indicates success
|
||||
// flag == NE indicates failure
|
||||
|
||||
%}
|
||||
|
||||
// TODO
|
||||
// reimplement this with custom cmpxchgptr code
|
||||
// which avoids some of the unnecessary branching
|
||||
enc_class aarch64_enc_fast_unlock(iRegP object, iRegP box, iRegP tmp, iRegP tmp2) %{
|
||||
MacroAssembler _masm(&cbuf);
|
||||
Register oop = as_Register($object$$reg);
|
||||
@@ -4956,7 +4870,6 @@ encode %{
|
||||
Register tmp = as_Register($tmp2$$reg);
|
||||
Label cont;
|
||||
Label object_has_monitor;
|
||||
Label cas_failed;
|
||||
|
||||
assert_different_registers(oop, box, tmp, disp_hdr);
|
||||
|
||||
@@ -4977,7 +4890,6 @@ encode %{
|
||||
__ cmp(disp_hdr, zr);
|
||||
__ br(Assembler::EQ, cont);
|
||||
|
||||
|
||||
// Handle existing monitor.
|
||||
if ((EmitSync & 0x02) == 0) {
|
||||
__ ldr(tmp, Address(oop, oopDesc::mark_offset_in_bytes()));
|
||||
@@ -4988,38 +4900,29 @@ encode %{
|
||||
// see the stack address of the basicLock in the markOop of the
|
||||
// object.
|
||||
|
||||
if (UseLSE) {
|
||||
__ mov(tmp, box);
|
||||
__ casl(Assembler::xword, tmp, disp_hdr, oop);
|
||||
__ cmp(tmp, box);
|
||||
} else {
|
||||
Label retry_load;
|
||||
if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
|
||||
__ prfm(Address(oop), PSTL1STRM);
|
||||
__ bind(retry_load);
|
||||
__ ldxr(tmp, oop);
|
||||
__ cmp(box, tmp);
|
||||
__ br(Assembler::NE, cas_failed);
|
||||
// use stlxr to ensure update is immediately visible
|
||||
__ stlxr(tmp, disp_hdr, oop);
|
||||
__ cbzw(tmp, cont);
|
||||
__ b(retry_load);
|
||||
}
|
||||
if (UseLSE) {
|
||||
__ mov(tmp, box);
|
||||
__ casl(Assembler::xword, tmp, disp_hdr, oop);
|
||||
__ cmp(tmp, box);
|
||||
__ b(cont);
|
||||
} else {
|
||||
Label retry_load;
|
||||
if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
|
||||
__ prfm(Address(oop), PSTL1STRM);
|
||||
__ bind(retry_load);
|
||||
__ ldxr(tmp, oop);
|
||||
__ cmp(box, tmp);
|
||||
__ br(Assembler::NE, cont);
|
||||
// use stlxr to ensure update is immediately visible
|
||||
__ stlxr(tmp, disp_hdr, oop);
|
||||
__ cbzw(tmp, cont);
|
||||
__ b(retry_load);
|
||||
}
|
||||
|
||||
// __ cmpxchgptr(/*compare_value=*/box,
|
||||
// /*exchange_value=*/disp_hdr,
|
||||
// /*where=*/oop,
|
||||
// /*result=*/tmp,
|
||||
// cont,
|
||||
// /*cas_failed*/NULL);
|
||||
assert(oopDesc::mark_offset_in_bytes() == 0, "offset of _mark is not 0");
|
||||
|
||||
__ bind(cas_failed);
|
||||
|
||||
// Handle existing monitor.
|
||||
if ((EmitSync & 0x02) == 0) {
|
||||
__ b(cont);
|
||||
|
||||
__ bind(object_has_monitor);
|
||||
__ add(tmp, tmp, -markOopDesc::monitor_value); // monitor
|
||||
__ ldr(rscratch1, Address(tmp, ObjectMonitor::owner_offset_in_bytes()));
|
||||
@@ -5036,7 +4939,7 @@ encode %{
|
||||
__ cbnz(rscratch1, cont);
|
||||
// need a release store here
|
||||
__ lea(tmp, Address(tmp, ObjectMonitor::owner_offset_in_bytes()));
|
||||
__ stlr(rscratch1, tmp); // rscratch1 is zero
|
||||
__ stlr(zr, tmp); // set unowned
|
||||
}
|
||||
|
||||
__ bind(cont);
|
||||
@@ -9787,8 +9690,7 @@ instruct compareAndExchangeB(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
|
||||
"cmpxchg $res = $mem, $oldval, $newval\t# (byte, weak) if $mem == $oldval then $mem <-- $newval"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ uxtbw(rscratch2, $oldval$$Register);
|
||||
__ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
|
||||
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
|
||||
Assembler::byte, /*acquire*/ false, /*release*/ true,
|
||||
/*weak*/ false, $res$$Register);
|
||||
__ sxtbw($res$$Register, $res$$Register);
|
||||
@@ -9804,8 +9706,7 @@ instruct compareAndExchangeS(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
|
||||
"cmpxchg $res = $mem, $oldval, $newval\t# (short, weak) if $mem == $oldval then $mem <-- $newval"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ uxthw(rscratch2, $oldval$$Register);
|
||||
__ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
|
||||
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
|
||||
Assembler::halfword, /*acquire*/ false, /*release*/ true,
|
||||
/*weak*/ false, $res$$Register);
|
||||
__ sxthw($res$$Register, $res$$Register);
|
||||
@@ -9882,8 +9783,7 @@ instruct weakCompareAndSwapB(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
|
||||
"csetw $res, EQ\t# $res <-- (EQ ? 1 : 0)"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ uxtbw(rscratch2, $oldval$$Register);
|
||||
__ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
|
||||
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
|
||||
Assembler::byte, /*acquire*/ false, /*release*/ true,
|
||||
/*weak*/ true, noreg);
|
||||
__ csetw($res$$Register, Assembler::EQ);
|
||||
@@ -9900,8 +9800,7 @@ instruct weakCompareAndSwapS(iRegINoSp res, indirect mem, iRegI oldval, iRegI ne
|
||||
"csetw $res, EQ\t# $res <-- (EQ ? 1 : 0)"
|
||||
%}
|
||||
ins_encode %{
|
||||
__ uxthw(rscratch2, $oldval$$Register);
|
||||
__ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
|
||||
__ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
|
||||
Assembler::halfword, /*acquire*/ false, /*release*/ true,
|
||||
/*weak*/ true, noreg);
|
||||
__ csetw($res$$Register, Assembler::EQ);
|
||||
@@ -15587,9 +15486,10 @@ instruct cmpFastUnlock(rFlagsReg cr, iRegP object, iRegP box, iRegPNoSp tmp, iRe
|
||||
// TODO
|
||||
// provide a near and far version of this code
|
||||
|
||||
instruct safePoint(iRegP poll)
|
||||
instruct safePoint(rFlagsReg cr, iRegP poll)
|
||||
%{
|
||||
match(SafePoint poll);
|
||||
effect(KILL cr);
|
||||
|
||||
format %{
|
||||
"ldrw zr, [$poll]\t# Safepoint: poll for GC"
|
||||
@@ -17526,32 +17426,32 @@ instruct vxor16B(vecX dst, vecX src1, vecX src2)
|
||||
%}
|
||||
|
||||
// ------------------------------ Shift ---------------------------------------
|
||||
|
||||
instruct vshiftcntL(vecX dst, iRegIorL2I cnt) %{
|
||||
instruct vshiftcnt8B(vecD dst, iRegIorL2I cnt) %{
|
||||
predicate(n->as_Vector()->length_in_bytes() == 8);
|
||||
match(Set dst (LShiftCntV cnt));
|
||||
format %{ "dup $dst, $cnt\t# shift count (vecX)" %}
|
||||
ins_encode %{
|
||||
__ dup(as_FloatRegister($dst$$reg), __ T16B, as_Register($cnt$$reg));
|
||||
%}
|
||||
ins_pipe(vdup_reg_reg128);
|
||||
%}
|
||||
|
||||
// Right shifts on aarch64 SIMD are implemented as left shift by -ve amount
|
||||
instruct vshiftcntR(vecX dst, iRegIorL2I cnt) %{
|
||||
match(Set dst (RShiftCntV cnt));
|
||||
format %{ "dup $dst, $cnt\t# shift count (vecX)\n\tneg $dst, $dst\t T16B" %}
|
||||
format %{ "dup $dst, $cnt\t# shift count vector (8B)" %}
|
||||
ins_encode %{
|
||||
__ dup(as_FloatRegister($dst$$reg), __ T8B, as_Register($cnt$$reg));
|
||||
%}
|
||||
ins_pipe(vdup_reg_reg64);
|
||||
%}
|
||||
|
||||
instruct vshiftcnt16B(vecX dst, iRegIorL2I cnt) %{
|
||||
predicate(n->as_Vector()->length_in_bytes() == 16);
|
||||
match(Set dst (LShiftCntV cnt));
|
||||
match(Set dst (RShiftCntV cnt));
|
||||
format %{ "dup $dst, $cnt\t# shift count vector (16B)" %}
|
||||
ins_encode %{
|
||||
__ dup(as_FloatRegister($dst$$reg), __ T16B, as_Register($cnt$$reg));
|
||||
__ negr(as_FloatRegister($dst$$reg), __ T16B, as_FloatRegister($dst$$reg));
|
||||
%}
|
||||
ins_pipe(vdup_reg_reg128);
|
||||
%}
|
||||
|
||||
instruct vsll8B(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll8B(vecD dst, vecD src, vecD shift) %{
|
||||
predicate(n->as_Vector()->length() == 4 ||
|
||||
n->as_Vector()->length() == 8);
|
||||
match(Set dst (LShiftVB src shift));
|
||||
match(Set dst (RShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (8B)" %}
|
||||
ins_encode %{
|
||||
@@ -17565,7 +17465,6 @@ instruct vsll8B(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll16B(vecX dst, vecX src, vecX shift) %{
|
||||
predicate(n->as_Vector()->length() == 16);
|
||||
match(Set dst (LShiftVB src shift));
|
||||
match(Set dst (RShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (16B)" %}
|
||||
ins_encode %{
|
||||
@@ -17576,29 +17475,93 @@ instruct vsll16B(vecX dst, vecX src, vecX shift) %{
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl8B(vecD dst, vecD src, vecX shift) %{
|
||||
// Right shifts with vector shift count on aarch64 SIMD are implemented
|
||||
// as left shift by negative shift count.
|
||||
// There are two cases for vector shift count.
|
||||
//
|
||||
// Case 1: The vector shift count is from replication.
|
||||
// | |
|
||||
// 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
|
||||
// panama/vectorIntrinsics(JEP 338: Vector API).
|
||||
// | |
|
||||
// LoadVector LoadVector
|
||||
// | /
|
||||
// RShiftVI
|
||||
//
|
||||
|
||||
instruct vsra8B(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 4 ||
|
||||
n->as_Vector()->length() == 8);
|
||||
match(Set dst (URShiftVB src shift));
|
||||
match(Set dst (RShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (8B)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (8B)" %}
|
||||
ins_encode %{
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($src$$reg),
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl16B(vecX dst, vecX src, vecX shift) %{
|
||||
instruct vsra16B(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 16);
|
||||
match(Set dst (RShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (16B)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl8B(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 4 ||
|
||||
n->as_Vector()->length() == 8);
|
||||
match(Set dst (URShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (8B)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T8B,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl16B(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 16);
|
||||
match(Set dst (URShiftVB src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (16B)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (16B)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T16B,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($shift$$reg));
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
@@ -17710,11 +17673,10 @@ instruct vsrl16B_imm(vecX dst, vecX src, immI shift) %{
|
||||
ins_pipe(vshift128_imm);
|
||||
%}
|
||||
|
||||
instruct vsll4S(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll4S(vecD dst, vecD src, vecD shift) %{
|
||||
predicate(n->as_Vector()->length() == 2 ||
|
||||
n->as_Vector()->length() == 4);
|
||||
match(Set dst (LShiftVS src shift));
|
||||
match(Set dst (RShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (4H)" %}
|
||||
ins_encode %{
|
||||
@@ -17728,7 +17690,6 @@ instruct vsll4S(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll8S(vecX dst, vecX src, vecX shift) %{
|
||||
predicate(n->as_Vector()->length() == 8);
|
||||
match(Set dst (LShiftVS src shift));
|
||||
match(Set dst (RShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (8H)" %}
|
||||
ins_encode %{
|
||||
@@ -17739,29 +17700,72 @@ instruct vsll8S(vecX dst, vecX src, vecX shift) %{
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl4S(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsra4S(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2 ||
|
||||
n->as_Vector()->length() == 4);
|
||||
match(Set dst (URShiftVS src shift));
|
||||
match(Set dst (RShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (4H)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (4H)" %}
|
||||
ins_encode %{
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T4H,
|
||||
as_FloatRegister($src$$reg),
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T4H,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl8S(vecX dst, vecX src, vecX shift) %{
|
||||
instruct vsra8S(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 8);
|
||||
match(Set dst (RShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (8H)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T8H,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl4S(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2 ||
|
||||
n->as_Vector()->length() == 4);
|
||||
match(Set dst (URShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (4H)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T4H,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl8S(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 8);
|
||||
match(Set dst (URShiftVS src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (8H)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (8H)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T8H,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($shift$$reg));
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
@@ -17873,10 +17877,9 @@ instruct vsrl8S_imm(vecX dst, vecX src, immI shift) %{
|
||||
ins_pipe(vshift128_imm);
|
||||
%}
|
||||
|
||||
instruct vsll2I(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll2I(vecD dst, vecD src, vecD shift) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (LShiftVI src shift));
|
||||
match(Set dst (RShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (2S)" %}
|
||||
ins_encode %{
|
||||
@@ -17890,7 +17893,6 @@ instruct vsll2I(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsll4I(vecX dst, vecX src, vecX shift) %{
|
||||
predicate(n->as_Vector()->length() == 4);
|
||||
match(Set dst (LShiftVI src shift));
|
||||
match(Set dst (RShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (4S)" %}
|
||||
ins_encode %{
|
||||
@@ -17901,28 +17903,70 @@ instruct vsll4I(vecX dst, vecX src, vecX shift) %{
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl2I(vecD dst, vecD src, vecX shift) %{
|
||||
instruct vsra2I(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (URShiftVI src shift));
|
||||
match(Set dst (RShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (2S)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (2S)" %}
|
||||
ins_encode %{
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T2S,
|
||||
as_FloatRegister($src$$reg),
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T2S,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl4I(vecX dst, vecX src, vecX shift) %{
|
||||
instruct vsra4I(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 4);
|
||||
match(Set dst (RShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (4S)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T4S,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl2I(vecD dst, vecD src, vecD shift, vecD tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (URShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (2S)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T8B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T2S,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift64);
|
||||
%}
|
||||
|
||||
instruct vsrl4I(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 4);
|
||||
match(Set dst (URShiftVI src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (4S)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (4S)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T4S,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($shift$$reg));
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
@@ -18008,7 +18052,6 @@ instruct vsrl4I_imm(vecX dst, vecX src, immI shift) %{
|
||||
instruct vsll2L(vecX dst, vecX src, vecX shift) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (LShiftVL src shift));
|
||||
match(Set dst (RShiftVL src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "sshl $dst,$src,$shift\t# vector (2D)" %}
|
||||
ins_encode %{
|
||||
@@ -18019,15 +18062,36 @@ instruct vsll2L(vecX dst, vecX src, vecX shift) %{
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl2L(vecX dst, vecX src, vecX shift) %{
|
||||
instruct vsra2L(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (RShiftVL src shift));
|
||||
ins_cost(INSN_COST);
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"sshl $dst,$src,$tmp\t# vector (2D)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ sshl(as_FloatRegister($dst$$reg), __ T2D,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
instruct vsrl2L(vecX dst, vecX src, vecX shift, vecX tmp) %{
|
||||
predicate(n->as_Vector()->length() == 2);
|
||||
match(Set dst (URShiftVL src shift));
|
||||
ins_cost(INSN_COST);
|
||||
format %{ "ushl $dst,$src,$shift\t# vector (2D)" %}
|
||||
effect(TEMP tmp);
|
||||
format %{ "negr $tmp,$shift\t"
|
||||
"ushl $dst,$src,$tmp\t# vector (2D)" %}
|
||||
ins_encode %{
|
||||
__ negr(as_FloatRegister($tmp$$reg), __ T16B,
|
||||
as_FloatRegister($shift$$reg));
|
||||
__ ushl(as_FloatRegister($dst$$reg), __ T2D,
|
||||
as_FloatRegister($src$$reg),
|
||||
as_FloatRegister($shift$$reg));
|
||||
as_FloatRegister($tmp$$reg));
|
||||
%}
|
||||
ins_pipe(vshift128);
|
||||
%}
|
||||
|
||||
@@ -1,200 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "asm/macroAssembler.inline.hpp"
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
#include "../../../../../../simulator/cpustate.hpp"
|
||||
#include "../../../../../../simulator/simulator.hpp"
|
||||
|
||||
/*
|
||||
* a routine to initialise and enter ARM simulator execution when
|
||||
* calling into ARM code from x86 code.
|
||||
*
|
||||
* we maintain a simulator per-thread and provide it with 8 Mb of
|
||||
* stack space
|
||||
*/
|
||||
#define SIM_STACK_SIZE (1024 * 1024) // in units of u_int64_t
|
||||
|
||||
extern "C" u_int64_t get_alt_stack()
|
||||
{
|
||||
return AArch64Simulator::altStack();
|
||||
}
|
||||
|
||||
extern "C" void setup_arm_sim(void *sp, u_int64_t calltype)
|
||||
{
|
||||
// n.b. this function runs on the simulator stack so as to avoid
|
||||
// simulator frames appearing in between VM x86 and ARM frames. note
|
||||
// that arfgument sp points to the old (VM) stack from which the
|
||||
// call into the sim was made. The stack switch and entry into this
|
||||
// routine is handled by x86 prolog code planted in the head of the
|
||||
// ARM code buffer which the sim is about to start executing (see
|
||||
// aarch64_linkage.S).
|
||||
//
|
||||
// The first ARM instruction in the buffer is identified by fnptr
|
||||
// stored at the top of the old stack. x86 register contents precede
|
||||
// fnptr. preceding that are the fp and return address of the VM
|
||||
// caller into ARM code. any extra, non-register arguments passed to
|
||||
// the linkage routine precede the fp (this is as per any normal x86
|
||||
// call wirth extra args).
|
||||
//
|
||||
// note that the sim creates Java frames on the Java stack just
|
||||
// above sp (i.e. directly above fnptr). it sets the sim FP register
|
||||
// to the pushed fp for the caller effectively eliding the register
|
||||
// data saved by the linkage routine.
|
||||
//
|
||||
// x86 register call arguments are loaded from the stack into ARM
|
||||
// call registers. if extra arguments occur preceding the x86
|
||||
// caller's fp then they are copied either into extra ARM registers
|
||||
// (ARM has 8 rather than 6 gp call registers) or up the stack
|
||||
// beyond the saved x86 registers so that they immediately precede
|
||||
// the ARM frame where the ARM calling convention expects them to
|
||||
// be.
|
||||
//
|
||||
// n.b. the number of register/stack values passed to the ARM code
|
||||
// is determined by calltype
|
||||
//
|
||||
// +--------+
|
||||
// | fnptr | <--- argument sp points here
|
||||
// +--------+ |
|
||||
// | rax | | return slot if we need to return a value
|
||||
// +--------+ |
|
||||
// | rdi | increasing
|
||||
// +--------+ address
|
||||
// | rsi | |
|
||||
// +--------+ V
|
||||
// | rdx |
|
||||
// +--------+
|
||||
// | rcx |
|
||||
// +--------+
|
||||
// | r8 |
|
||||
// +--------+
|
||||
// | r9 |
|
||||
// +--------+
|
||||
// | xmm0 |
|
||||
// +--------+
|
||||
// | xmm1 |
|
||||
// +--------+
|
||||
// | xmm2 |
|
||||
// +--------+
|
||||
// | xmm3 |
|
||||
// +--------+
|
||||
// | xmm4 |
|
||||
// +--------+
|
||||
// | xmm5 |
|
||||
// +--------+
|
||||
// | xmm6 |
|
||||
// +--------+
|
||||
// | xmm7 |
|
||||
// +--------+
|
||||
// | fp |
|
||||
// +--------+
|
||||
// | caller |
|
||||
// | ret ip |
|
||||
// +--------+
|
||||
// | arg0 | <-- any extra call args start here
|
||||
// +--------+ offset = 18 * wordSize
|
||||
// | . . . | (i.e. 1 * calladdr + 1 * rax + 6 * gp call regs
|
||||
// + 8 * fp call regs + 2 * frame words)
|
||||
//
|
||||
// we use a unique sim/stack per thread
|
||||
const int cursor2_offset = 18;
|
||||
const int fp_offset = 16;
|
||||
u_int64_t *cursor = (u_int64_t *)sp;
|
||||
u_int64_t *cursor2 = ((u_int64_t *)sp) + cursor2_offset;
|
||||
u_int64_t *fp = ((u_int64_t *)sp) + fp_offset;
|
||||
int gp_arg_count = calltype & 0xf;
|
||||
int fp_arg_count = (calltype >> 4) & 0xf;
|
||||
int return_type = (calltype >> 8) & 0x3;
|
||||
AArch64Simulator *sim = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
|
||||
// save previous cpu state in case this is a recursive entry
|
||||
CPUState saveState = sim->getCPUState();
|
||||
// set up initial sim pc, sp and fp registers
|
||||
sim->init(*cursor++, (u_int64_t)sp, (u_int64_t)fp);
|
||||
u_int64_t *return_slot = cursor++;
|
||||
|
||||
// if we need to pass the sim extra args on the stack then bump
|
||||
// the stack pointer now
|
||||
u_int64_t *cursor3 = (u_int64_t *)sim->getCPUState().xreg(SP, 1);
|
||||
if (gp_arg_count > 8) {
|
||||
cursor3 -= gp_arg_count - 8;
|
||||
}
|
||||
if (fp_arg_count > 8) {
|
||||
cursor3 -= fp_arg_count - 8;
|
||||
}
|
||||
sim->getCPUState().xreg(SP, 1) = (u_int64_t)(cursor3++);
|
||||
|
||||
for (int i = 0; i < gp_arg_count; i++) {
|
||||
if (i < 6) {
|
||||
// copy saved register to sim register
|
||||
GReg reg = (GReg)i;
|
||||
sim->getCPUState().xreg(reg, 0) = *cursor++;
|
||||
} else if (i < 8) {
|
||||
// copy extra int arg to sim register
|
||||
GReg reg = (GReg)i;
|
||||
sim->getCPUState().xreg(reg, 0) = *cursor2++;
|
||||
} else {
|
||||
// copy extra fp arg to sim stack
|
||||
*cursor3++ = *cursor2++;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < fp_arg_count; i++) {
|
||||
if (i < 8) {
|
||||
// copy saved register to sim register
|
||||
GReg reg = (GReg)i;
|
||||
sim->getCPUState().xreg(reg, 0) = *cursor++;
|
||||
} else {
|
||||
// copy extra arg to sim stack
|
||||
*cursor3++ = *cursor2++;
|
||||
}
|
||||
}
|
||||
AArch64Simulator::status_t return_status = sim->run();
|
||||
if (return_status != AArch64Simulator::STATUS_RETURN){
|
||||
sim->simPrint0();
|
||||
fatal("invalid status returned from simulator.run()\n");
|
||||
}
|
||||
switch (return_type) {
|
||||
case MacroAssembler::ret_type_void:
|
||||
default:
|
||||
break;
|
||||
case MacroAssembler::ret_type_integral:
|
||||
// this overwrites the saved r0
|
||||
*return_slot = sim->getCPUState().xreg(R0, 0);
|
||||
break;
|
||||
case MacroAssembler::ret_type_float:
|
||||
*(float *)return_slot = sim->getCPUState().sreg(V0);
|
||||
break;
|
||||
case MacroAssembler::ret_type_double:
|
||||
*(double *)return_slot = sim->getCPUState().dreg(V0);
|
||||
break;
|
||||
}
|
||||
// restore incoimng cpu state
|
||||
sim->getCPUState() = saveState;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,167 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2012, Red Hat. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
|
||||
# Routines used to enable x86 VM C++ code to invoke JIT-compiled ARM code
|
||||
# -- either Java methods or generated stub -- and to allow JIT-compiled
|
||||
# ARM code to invoke x86 VM C++ code
|
||||
#
|
||||
# the code for aarch64_stub_prolog below can be copied into the start
|
||||
# of the ARM code buffer and patched with a link to the
|
||||
# C++ routine which starts execution on the simulator. the ARM
|
||||
# code can be generated immediately following the copied code.
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
|
||||
.data
|
||||
.globl setup_arm_sim,
|
||||
.type setup_arm_sim,@function
|
||||
.globl get_alt_stack,
|
||||
.type get_alt_stack,@function
|
||||
.globl aarch64_stub_prolog
|
||||
.p2align 4
|
||||
aarch64_stub_prolog:
|
||||
// entry point
|
||||
4: lea 1f(%rip), %r11
|
||||
mov (%r11), %r10
|
||||
mov (%r10), %r10
|
||||
jmp *%r10
|
||||
.p2align 4
|
||||
1:
|
||||
.set entry_offset, . - 1b
|
||||
.quad aarch64_prolog_ptr
|
||||
// 64 bit int used to idenitfy called fn arg/return types
|
||||
.set calltype_offset, . - 1b
|
||||
.quad 0
|
||||
// arm JIT code follows the stub
|
||||
.set arm_code_offset, . - 1b
|
||||
.size aarch64_stub_prolog, .-aarch64_stub_prolog
|
||||
aarch64_stub_prolog_end:
|
||||
|
||||
.text
|
||||
aarch64_prolog_ptr:
|
||||
.quad aarch64_prolog
|
||||
|
||||
.globl aarch64_prolog
|
||||
aarch64_prolog:
|
||||
.cfi_startproc
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset 6, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register 6
|
||||
// save all registers used to pass args
|
||||
sub $8, %rsp
|
||||
movd %xmm7, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm6, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm5, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm4, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm3, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm2, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm1, (%rsp)
|
||||
sub $8, %rsp
|
||||
movd %xmm0, (%rsp)
|
||||
push %r9
|
||||
push %r8
|
||||
push %rcx
|
||||
push %rdx
|
||||
push %rsi
|
||||
push %rdi
|
||||
// save rax -- this stack slot will be rewritten with a
|
||||
// return value if needed
|
||||
push %rax
|
||||
// temporarily save r11 while we find the other stack
|
||||
push %r11
|
||||
// retrieve alt stack
|
||||
call get_alt_stack@PLT
|
||||
pop %r11
|
||||
// push start of arm code
|
||||
lea (arm_code_offset)(%r11), %rsi
|
||||
push %rsi
|
||||
// load call type code in arg reg 1
|
||||
mov (calltype_offset)(%r11), %rsi
|
||||
// load current stack pointer in arg reg 0
|
||||
mov %rsp, %rdi
|
||||
// switch to alt stack
|
||||
mov %rax, %rsp
|
||||
// save previous stack pointer on new stack
|
||||
push %rdi
|
||||
// 16-align the new stack pointer
|
||||
push %rdi
|
||||
// call sim setup routine
|
||||
call setup_arm_sim@PLT
|
||||
// switch back to old stack
|
||||
pop %rsp
|
||||
// pop start of arm code
|
||||
pop %rdi
|
||||
// pop rax -- either restores old value or installs return value
|
||||
pop %rax
|
||||
// pop arg registers
|
||||
pop %rdi
|
||||
pop %rsi
|
||||
pop %rdx
|
||||
pop %rcx
|
||||
pop %r8
|
||||
pop %r9
|
||||
movd (%rsp), %xmm0
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm1
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm2
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm3
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm4
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm5
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm6
|
||||
add $8, %rsp
|
||||
movd (%rsp), %xmm7
|
||||
add $8, %rsp
|
||||
leave
|
||||
.cfi_def_cfa 7, 8
|
||||
ret
|
||||
.cfi_endproc
|
||||
|
||||
|
||||
.p2align 4
|
||||
get_pc:
|
||||
// get return pc in rdi and then push it back
|
||||
pop %rdi
|
||||
push %rdi
|
||||
ret
|
||||
|
||||
.p2align 4
|
||||
.long
|
||||
.globl aarch64_stub_prolog_size
|
||||
.type aarch64_stub_prolog_size,@function
|
||||
aarch64_stub_prolog_size:
|
||||
leaq aarch64_stub_prolog_end - aarch64_stub_prolog, %rax
|
||||
ret
|
||||
|
||||
#endif
|
||||
@@ -38,11 +38,6 @@ const unsigned long Assembler::asm_bp = 0x00007fffee09ac88;
|
||||
#include "memory/resourceArea.hpp"
|
||||
#include "runtime/interfaceSupport.inline.hpp"
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
|
||||
// for the moment we reuse the logical/floating point immediate encode
|
||||
// and decode functiosn provided by the simulator. when we move to
|
||||
// real hardware we will need to pull taht code into here
|
||||
|
||||
#include "immediate_aarch64.hpp"
|
||||
|
||||
extern "C" void entry(CodeBuffer *cb);
|
||||
@@ -1485,21 +1480,6 @@ int AbstractAssembler::code_fill_byte() {
|
||||
void Assembler::bang_stack_with_offset(int offset) { Unimplemented(); }
|
||||
|
||||
|
||||
// these are the functions provided by the simulator which are used to
|
||||
// encode and decode logical immediates and floating point immediates
|
||||
//
|
||||
// u_int64_t logical_immediate_for_encoding(u_int32_t encoding);
|
||||
//
|
||||
// u_int32_t encoding_for_logical_immediate(u_int64_t immediate);
|
||||
//
|
||||
// u_int64_t fp_immediate_for_encoding(u_int32_t imm8, int is_dp);
|
||||
//
|
||||
// u_int32_t encoding_for_fp_immediate(float immediate);
|
||||
//
|
||||
// we currently import these from the simulator librray but the
|
||||
// definitions will need to be moved to here when we switch to real
|
||||
// hardware.
|
||||
|
||||
// and now the routines called by the assembler which encapsulate the
|
||||
// above encode and decode functions
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2015, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2019, 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
|
||||
@@ -317,29 +317,6 @@ namespace ext
|
||||
enum operation { uxtb, uxth, uxtw, uxtx, sxtb, sxth, sxtw, sxtx };
|
||||
};
|
||||
|
||||
// abs methods which cannot overflow and so are well-defined across
|
||||
// the entire domain of integer types.
|
||||
static inline unsigned int uabs(unsigned int n) {
|
||||
union {
|
||||
unsigned int result;
|
||||
int value;
|
||||
};
|
||||
result = n;
|
||||
if (value < 0) result = -result;
|
||||
return result;
|
||||
}
|
||||
static inline unsigned long uabs(unsigned long n) {
|
||||
union {
|
||||
unsigned long result;
|
||||
long value;
|
||||
};
|
||||
result = n;
|
||||
if (value < 0) result = -result;
|
||||
return result;
|
||||
}
|
||||
static inline unsigned long uabs(long n) { return uabs((unsigned long)n); }
|
||||
static inline unsigned long uabs(int n) { return uabs((unsigned int)n); }
|
||||
|
||||
// Addressing modes
|
||||
class Address {
|
||||
public:
|
||||
@@ -1142,7 +1119,7 @@ public:
|
||||
Register Rn, enum operand_size sz, int op, bool ordered) {
|
||||
starti;
|
||||
f(sz, 31, 30), f(0b001000, 29, 24), f(op, 23, 21);
|
||||
rf(Rs, 16), f(ordered, 15), rf(Rt2, 10), rf(Rn, 5), rf(Rt1, 0);
|
||||
rf(Rs, 16), f(ordered, 15), rf(Rt2, 10), srf(Rn, 5), zrf(Rt1, 0);
|
||||
}
|
||||
|
||||
void load_exclusive(Register dst, Register addr,
|
||||
@@ -1507,6 +1484,25 @@ public:
|
||||
INSN(eorw, 0, 0b10, 0);
|
||||
INSN(andsw, 0, 0b11, 0);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, size, op, N) \
|
||||
void NAME(Register Rd, Register Rn, Register Rm, \
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) { \
|
||||
starti; \
|
||||
f(N, 21); \
|
||||
zrf(Rm, 16), zrf(Rn, 5), zrf(Rd, 0); \
|
||||
op_shifted_reg(0b01010, kind, shift, size, op); \
|
||||
} \
|
||||
\
|
||||
/* These instructions have no immediate form. Provide an overload so \
|
||||
that if anyone does try to use an immediate operand -- this has \
|
||||
happened! -- we'll get a compile-time error. */ \
|
||||
void NAME(Register Rd, Register Rn, unsigned imm, \
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) { \
|
||||
assert(false, " can't be used with immediate operand"); \
|
||||
}
|
||||
|
||||
INSN(bic, 1, 0b00, 1);
|
||||
INSN(orn, 1, 0b01, 1);
|
||||
INSN(eon, 1, 0b10, 1);
|
||||
@@ -2602,137 +2598,6 @@ void ext(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister V
|
||||
f(0, 10), rf(Vn, 5), rf(Vd, 0);
|
||||
}
|
||||
|
||||
/* Simulator extensions to the ISA
|
||||
|
||||
haltsim
|
||||
|
||||
takes no arguments, causes the sim to enter a debug break and then
|
||||
return from the simulator run() call with STATUS_HALT? The linking
|
||||
code will call fatal() when it sees STATUS_HALT.
|
||||
|
||||
blrt Xn, Wm
|
||||
blrt Xn, #gpargs, #fpargs, #type
|
||||
Xn holds the 64 bit x86 branch_address
|
||||
call format is encoded either as immediate data in the call
|
||||
or in register Wm. In the latter case
|
||||
Wm[13..6] = #gpargs,
|
||||
Wm[5..2] = #fpargs,
|
||||
Wm[1,0] = #type
|
||||
|
||||
calls the x86 code address 'branch_address' supplied in Xn passing
|
||||
arguments taken from the general and floating point registers according
|
||||
to the supplied counts 'gpargs' and 'fpargs'. may return a result in r0
|
||||
or v0 according to the the return type #type' where
|
||||
|
||||
address branch_address;
|
||||
uimm4 gpargs;
|
||||
uimm4 fpargs;
|
||||
enum ReturnType type;
|
||||
|
||||
enum ReturnType
|
||||
{
|
||||
void_ret = 0,
|
||||
int_ret = 1,
|
||||
long_ret = 1,
|
||||
obj_ret = 1, // i.e. same as long
|
||||
float_ret = 2,
|
||||
double_ret = 3
|
||||
}
|
||||
|
||||
notify
|
||||
|
||||
notifies the simulator of a transfer of control. instr[14:0]
|
||||
identifies the type of change of control.
|
||||
|
||||
0 ==> initial entry to a method.
|
||||
|
||||
1 ==> return into a method from a submethod call.
|
||||
|
||||
2 ==> exit out of Java method code.
|
||||
|
||||
3 ==> start execution for a new bytecode.
|
||||
|
||||
in cases 1 and 2 the simulator is expected to use a JVM callback to
|
||||
identify the name of the specific method being executed. in case 4
|
||||
the simulator is expected to use a JVM callback to identify the
|
||||
bytecode index.
|
||||
|
||||
Instruction encodings
|
||||
---------------------
|
||||
|
||||
These are encoded in the space with instr[28:25] = 00 which is
|
||||
unallocated. Encodings are
|
||||
|
||||
10987654321098765432109876543210
|
||||
PSEUDO_HALT = 0x11100000000000000000000000000000
|
||||
PSEUDO_BLRT = 0x11000000000000000_______________
|
||||
PSEUDO_BLRTR = 0x1100000000000000100000__________
|
||||
PSEUDO_NOTIFY = 0x10100000000000000_______________
|
||||
|
||||
instr[31,29] = op1 : 111 ==> HALT, 110 ==> BLRT/BLRTR, 101 ==> NOTIFY
|
||||
|
||||
for BLRT
|
||||
instr[14,11] = #gpargs, instr[10,7] = #fpargs
|
||||
instr[6,5] = #type, instr[4,0] = Rn
|
||||
for BLRTR
|
||||
instr[9,5] = Rm, instr[4,0] = Rn
|
||||
for NOTIFY
|
||||
instr[14:0] = type : 0 ==> entry, 1 ==> reentry, 2 ==> exit, 3 ==> bcstart
|
||||
*/
|
||||
|
||||
enum NotifyType { method_entry, method_reentry, method_exit, bytecode_start };
|
||||
|
||||
virtual void notify(int type) {
|
||||
if (UseBuiltinSim) {
|
||||
starti;
|
||||
// 109
|
||||
f(0b101, 31, 29);
|
||||
// 87654321098765
|
||||
f(0b00000000000000, 28, 15);
|
||||
f(type, 14, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void blrt(Register Rn, int gpargs, int fpargs, int type) {
|
||||
if (UseBuiltinSim) {
|
||||
starti;
|
||||
f(0b110, 31 ,29);
|
||||
f(0b00, 28, 25);
|
||||
// 4321098765
|
||||
f(0b0000000000, 24, 15);
|
||||
f(gpargs, 14, 11);
|
||||
f(fpargs, 10, 7);
|
||||
f(type, 6, 5);
|
||||
rf(Rn, 0);
|
||||
} else {
|
||||
blr(Rn);
|
||||
}
|
||||
}
|
||||
|
||||
void blrt(Register Rn, Register Rm) {
|
||||
if (UseBuiltinSim) {
|
||||
starti;
|
||||
f(0b110, 31 ,29);
|
||||
f(0b00, 28, 25);
|
||||
// 4321098765
|
||||
f(0b0000000001, 24, 15);
|
||||
// 43210
|
||||
f(0b00000, 14, 10);
|
||||
rf(Rm, 5);
|
||||
rf(Rn, 0);
|
||||
} else {
|
||||
blr(Rn);
|
||||
}
|
||||
}
|
||||
|
||||
void haltsim() {
|
||||
starti;
|
||||
f(0b111, 31 ,29);
|
||||
f(0b00, 28, 27);
|
||||
// 654321098765432109876543210
|
||||
f(0b000000000000000000000000000, 26, 0);
|
||||
}
|
||||
|
||||
Assembler(CodeBuffer* code) : AbstractAssembler(code) {
|
||||
}
|
||||
|
||||
|
||||
@@ -2214,7 +2214,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
|
||||
__ ldr(src, Address(sp, 4*BytesPerWord));
|
||||
|
||||
// r0 is -1^K where K == partial copied count
|
||||
__ eonw(rscratch1, r0, 0);
|
||||
__ eonw(rscratch1, r0, zr);
|
||||
// adjust length down and src/end pos up by partial copied count
|
||||
__ subw(length, length, rscratch1);
|
||||
__ addw(src_pos, src_pos, rscratch1);
|
||||
@@ -2789,7 +2789,10 @@ void LIR_Assembler::align_backward_branch_target() {
|
||||
}
|
||||
|
||||
|
||||
void LIR_Assembler::negate(LIR_Opr left, LIR_Opr dest) {
|
||||
void LIR_Assembler::negate(LIR_Opr left, LIR_Opr dest, LIR_Opr tmp) {
|
||||
// tmp must be unused
|
||||
assert(tmp->is_illegal(), "wasting a register if tmp is allocated");
|
||||
|
||||
if (left->is_single_cpu()) {
|
||||
assert(dest->is_single_cpu(), "expect single result reg");
|
||||
__ negw(dest->as_register(), left->as_register());
|
||||
@@ -2821,40 +2824,7 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest, const LIR_OprList* arg
|
||||
__ far_call(RuntimeAddress(dest));
|
||||
} else {
|
||||
__ mov(rscratch1, RuntimeAddress(dest));
|
||||
int len = args->length();
|
||||
int type = 0;
|
||||
if (! result->is_illegal()) {
|
||||
switch (result->type()) {
|
||||
case T_VOID:
|
||||
type = 0;
|
||||
break;
|
||||
case T_INT:
|
||||
case T_LONG:
|
||||
case T_OBJECT:
|
||||
type = 1;
|
||||
break;
|
||||
case T_FLOAT:
|
||||
type = 2;
|
||||
break;
|
||||
case T_DOUBLE:
|
||||
type = 3;
|
||||
break;
|
||||
default:
|
||||
ShouldNotReachHere();
|
||||
break;
|
||||
}
|
||||
}
|
||||
int num_gpargs = 0;
|
||||
int num_fpargs = 0;
|
||||
for (int i = 0; i < args->length(); i++) {
|
||||
LIR_Opr arg = args->at(i);
|
||||
if (arg->type() == T_FLOAT || arg->type() == T_DOUBLE) {
|
||||
num_fpargs++;
|
||||
} else {
|
||||
num_gpargs++;
|
||||
}
|
||||
}
|
||||
__ blrt(rscratch1, num_gpargs, num_fpargs, type);
|
||||
__ blr(rscratch1);
|
||||
}
|
||||
|
||||
if (info != NULL) {
|
||||
|
||||
@@ -341,16 +341,10 @@ void C1_MacroAssembler::build_frame(int framesize, int bang_size_in_bytes) {
|
||||
// Note that we do this before doing an enter().
|
||||
generate_stack_overflow_check(bang_size_in_bytes);
|
||||
MacroAssembler::build_frame(framesize + 2 * wordSize);
|
||||
if (NotifySimulator) {
|
||||
notify(Assembler::method_entry);
|
||||
}
|
||||
}
|
||||
|
||||
void C1_MacroAssembler::remove_frame(int framesize) {
|
||||
MacroAssembler::remove_frame(framesize + 2 * wordSize);
|
||||
if (NotifySimulator) {
|
||||
notify(Assembler::method_reentry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ int StubAssembler::call_RT(Register oop_result1, Register metadata_result, addre
|
||||
|
||||
// do the call
|
||||
lea(rscratch1, RuntimeAddress(entry));
|
||||
blrt(rscratch1, args_size + 1, 8, 1);
|
||||
blr(rscratch1);
|
||||
bind(retaddr);
|
||||
int call_offset = offset();
|
||||
// verify callee-saved register
|
||||
@@ -537,7 +537,7 @@ OopMapSet* Runtime1::generate_patching(StubAssembler* sasm, address target) {
|
||||
__ set_last_Java_frame(sp, rfp, retaddr, rscratch1);
|
||||
// do the call
|
||||
__ lea(rscratch1, RuntimeAddress(target));
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
OopMapSet* oop_maps = new OopMapSet();
|
||||
oop_maps->add_gc_map(__ offset(), oop_map);
|
||||
|
||||
@@ -41,13 +41,7 @@ define_pd_global(bool, PreferInterpreterNativeStubs, false);
|
||||
define_pd_global(bool, ProfileTraps, false);
|
||||
define_pd_global(bool, UseOnStackReplacement, true );
|
||||
define_pd_global(bool, TieredCompilation, false);
|
||||
#ifdef BUILTIN_SIM
|
||||
// We compile very aggressively with the builtin simulator because
|
||||
// doing so greatly reduces run times and tests more code.
|
||||
define_pd_global(intx, CompileThreshold, 150 );
|
||||
#else
|
||||
define_pd_global(intx, CompileThreshold, 1500 );
|
||||
#endif
|
||||
|
||||
define_pd_global(intx, OnStackReplacePercentage, 933 );
|
||||
define_pd_global(intx, FreqInlineSize, 325 );
|
||||
|
||||
@@ -1,595 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _CPU_STATE_H
|
||||
#define _CPU_STATE_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* symbolic names used to identify general registers which also match
|
||||
* the registers indices in machine code
|
||||
*
|
||||
* We have 32 general registers which can be read/written as 32 bit or
|
||||
* 64 bit sources/sinks and are appropriately referred to as Wn or Xn
|
||||
* in the assembly code. Some instructions mix these access modes
|
||||
* (e.g. ADD X0, X1, W2) so the implementation of the instruction
|
||||
* needs to *know* which type of read or write access is required.
|
||||
*/
|
||||
enum GReg {
|
||||
R0,
|
||||
R1,
|
||||
R2,
|
||||
R3,
|
||||
R4,
|
||||
R5,
|
||||
R6,
|
||||
R7,
|
||||
R8,
|
||||
R9,
|
||||
R10,
|
||||
R11,
|
||||
R12,
|
||||
R13,
|
||||
R14,
|
||||
R15,
|
||||
R16,
|
||||
R17,
|
||||
R18,
|
||||
R19,
|
||||
R20,
|
||||
R21,
|
||||
R22,
|
||||
R23,
|
||||
R24,
|
||||
R25,
|
||||
R26,
|
||||
R27,
|
||||
R28,
|
||||
R29,
|
||||
R30,
|
||||
R31,
|
||||
// and now the aliases
|
||||
RSCRATCH1=R8,
|
||||
RSCRATCH2=R9,
|
||||
RMETHOD=R12,
|
||||
RESP=R20,
|
||||
RDISPATCH=R21,
|
||||
RBCP=R22,
|
||||
RLOCALS=R24,
|
||||
RMONITORS=R25,
|
||||
RCPOOL=R26,
|
||||
RHEAPBASE=R27,
|
||||
RTHREAD=R28,
|
||||
FP = R29,
|
||||
LR = R30,
|
||||
SP = R31,
|
||||
ZR = R31
|
||||
};
|
||||
|
||||
/*
|
||||
* symbolic names used to refer to floating point registers which also
|
||||
* match the registers indices in machine code
|
||||
*
|
||||
* We have 32 FP registers which can be read/written as 8, 16, 32, 64
|
||||
* and 128 bit sources/sinks and are appropriately referred to as Bn,
|
||||
* Hn, Sn, Dn and Qn in the assembly code. Some instructions mix these
|
||||
* access modes (e.g. FCVT S0, D0) so the implementation of the
|
||||
* instruction needs to *know* which type of read or write access is
|
||||
* required.
|
||||
*/
|
||||
|
||||
enum VReg {
|
||||
V0,
|
||||
V1,
|
||||
V2,
|
||||
V3,
|
||||
V4,
|
||||
V5,
|
||||
V6,
|
||||
V7,
|
||||
V8,
|
||||
V9,
|
||||
V10,
|
||||
V11,
|
||||
V12,
|
||||
V13,
|
||||
V14,
|
||||
V15,
|
||||
V16,
|
||||
V17,
|
||||
V18,
|
||||
V19,
|
||||
V20,
|
||||
V21,
|
||||
V22,
|
||||
V23,
|
||||
V24,
|
||||
V25,
|
||||
V26,
|
||||
V27,
|
||||
V28,
|
||||
V29,
|
||||
V30,
|
||||
V31,
|
||||
};
|
||||
|
||||
/**
|
||||
* all the different integer bit patterns for the components of a
|
||||
* general register are overlaid here using a union so as to allow all
|
||||
* reading and writing of the desired bits.
|
||||
*
|
||||
* n.b. the ARM spec says that when you write a 32 bit register you
|
||||
* are supposed to write the low 32 bits and zero the high 32
|
||||
* bits. But we don't actually have to care about this because Java
|
||||
* will only ever consume the 32 bits value as a 64 bit quantity after
|
||||
* an explicit extend.
|
||||
*/
|
||||
union GRegisterValue
|
||||
{
|
||||
int8_t s8;
|
||||
int16_t s16;
|
||||
int32_t s32;
|
||||
int64_t s64;
|
||||
u_int8_t u8;
|
||||
u_int16_t u16;
|
||||
u_int32_t u32;
|
||||
u_int64_t u64;
|
||||
};
|
||||
|
||||
class GRegister
|
||||
{
|
||||
public:
|
||||
GRegisterValue value;
|
||||
};
|
||||
|
||||
/*
|
||||
* float registers provide for storage of a single, double or quad
|
||||
* word format float in the same register. single floats are not
|
||||
* paired within each double register as per 32 bit arm. instead each
|
||||
* 128 bit register Vn embeds the bits for Sn, and Dn in the lower
|
||||
* quarter and half, respectively, of the bits for Qn.
|
||||
*
|
||||
* The upper bits can also be accessed as single or double floats by
|
||||
* the float vector operations using indexing e.g. V1.D[1], V1.S[3]
|
||||
* etc and, for SIMD operations using a horrible index range notation.
|
||||
*
|
||||
* The spec also talks about accessing float registers as half words
|
||||
* and bytes with Hn and Bn providing access to the low 16 and 8 bits
|
||||
* of Vn but it is not really clear what these bits represent. We can
|
||||
* probably ignore this for Java anyway. However, we do need to access
|
||||
* the raw bits at 32 and 64 bit resolution to load to/from integer
|
||||
* registers.
|
||||
*/
|
||||
|
||||
union FRegisterValue
|
||||
{
|
||||
float s;
|
||||
double d;
|
||||
long double q;
|
||||
// eventually we will need to be able to access the data as a vector
|
||||
// the integral array elements allow us to access the bits in s, d,
|
||||
// q, vs and vd at an appropriate level of granularity
|
||||
u_int8_t vb[16];
|
||||
u_int16_t vh[8];
|
||||
u_int32_t vw[4];
|
||||
u_int64_t vx[2];
|
||||
float vs[4];
|
||||
double vd[2];
|
||||
};
|
||||
|
||||
class FRegister
|
||||
{
|
||||
public:
|
||||
FRegisterValue value;
|
||||
};
|
||||
|
||||
/*
|
||||
* CPSR register -- this does not exist as a directly accessible
|
||||
* register but we need to store the flags so we can implement
|
||||
* flag-seting and flag testing operations
|
||||
*
|
||||
* we can possibly use injected x86 asm to report the outcome of flag
|
||||
* setting operations. if so we will need to grab the flags
|
||||
* immediately after the operation in order to ensure we don't lose
|
||||
* them because of the actions of the simulator. so we still need
|
||||
* somewhere to store the condition codes.
|
||||
*/
|
||||
|
||||
class CPSRRegister
|
||||
{
|
||||
public:
|
||||
u_int32_t value;
|
||||
|
||||
/*
|
||||
* condition register bit select values
|
||||
*
|
||||
* the order of bits here is important because some of
|
||||
* the flag setting conditional instructions employ a
|
||||
* bit field to populate the flags when a false condition
|
||||
* bypasses execution of the operation and we want to
|
||||
* be able to assign the flags register using the
|
||||
* supplied value.
|
||||
*/
|
||||
|
||||
enum CPSRIdx {
|
||||
V_IDX,
|
||||
C_IDX,
|
||||
Z_IDX,
|
||||
N_IDX
|
||||
};
|
||||
|
||||
enum CPSRMask {
|
||||
V = 1 << V_IDX,
|
||||
C = 1 << C_IDX,
|
||||
Z = 1 << Z_IDX,
|
||||
N = 1 << N_IDX
|
||||
};
|
||||
|
||||
static const int CPSR_ALL_FLAGS = (V | C | Z | N);
|
||||
};
|
||||
|
||||
// auxiliary function to assemble the relevant bits from
|
||||
// the x86 EFLAGS register into an ARM CPSR value
|
||||
|
||||
#define X86_V_IDX 11
|
||||
#define X86_C_IDX 0
|
||||
#define X86_Z_IDX 6
|
||||
#define X86_N_IDX 7
|
||||
|
||||
#define X86_V (1 << X86_V_IDX)
|
||||
#define X86_C (1 << X86_C_IDX)
|
||||
#define X86_Z (1 << X86_Z_IDX)
|
||||
#define X86_N (1 << X86_N_IDX)
|
||||
|
||||
inline u_int32_t convertX86Flags(u_int32_t x86flags)
|
||||
{
|
||||
u_int32_t flags;
|
||||
// set N flag
|
||||
flags = ((x86flags & X86_N) >> X86_N_IDX);
|
||||
// shift then or in Z flag
|
||||
flags <<= 1;
|
||||
flags |= ((x86flags & X86_Z) >> X86_Z_IDX);
|
||||
// shift then or in C flag
|
||||
flags <<= 1;
|
||||
flags |= ((x86flags & X86_C) >> X86_C_IDX);
|
||||
// shift then or in V flag
|
||||
flags <<= 1;
|
||||
flags |= ((x86flags & X86_V) >> X86_V_IDX);
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
inline u_int32_t convertX86FlagsFP(u_int32_t x86flags)
|
||||
{
|
||||
// x86 flags set by fcomi(x,y) are ZF:PF:CF
|
||||
// (yes, that's PF for parity, WTF?)
|
||||
// where
|
||||
// 0) 0:0:0 means x > y
|
||||
// 1) 0:0:1 means x < y
|
||||
// 2) 1:0:0 means x = y
|
||||
// 3) 1:1:1 means x and y are unordered
|
||||
// note that we don't have to check PF so
|
||||
// we really have a simple 2-bit case switch
|
||||
// the corresponding ARM64 flags settings
|
||||
// in hi->lo bit order are
|
||||
// 0) --C-
|
||||
// 1) N---
|
||||
// 2) -ZC-
|
||||
// 3) --CV
|
||||
|
||||
static u_int32_t armFlags[] = {
|
||||
0b0010,
|
||||
0b1000,
|
||||
0b0110,
|
||||
0b0011
|
||||
};
|
||||
// pick out the ZF and CF bits
|
||||
u_int32_t zc = ((x86flags & X86_Z) >> X86_Z_IDX);
|
||||
zc <<= 1;
|
||||
zc |= ((x86flags & X86_C) >> X86_C_IDX);
|
||||
|
||||
return armFlags[zc];
|
||||
}
|
||||
|
||||
/*
|
||||
* FPSR register -- floating point status register
|
||||
|
||||
* this register includes IDC, IXC, UFC, OFC, DZC, IOC and QC bits,
|
||||
* and the floating point N, Z, C, V bits but the latter are unused in
|
||||
* aarch64 mode. the sim ignores QC for now.
|
||||
*
|
||||
* bit positions are as per the ARMv7 FPSCR register
|
||||
*
|
||||
* IDC : 7 ==> Input Denormal (cumulative exception bit)
|
||||
* IXC : 4 ==> Inexact
|
||||
* UFC : 3 ==> Underflow
|
||||
* OFC : 2 ==> Overflow
|
||||
* DZC : 1 ==> Division by Zero
|
||||
* IOC : 0 ==> Invalid Operation
|
||||
*/
|
||||
|
||||
class FPSRRegister
|
||||
{
|
||||
public:
|
||||
u_int32_t value;
|
||||
// indices for bits in the FPSR register value
|
||||
enum FPSRIdx {
|
||||
IO_IDX = 0,
|
||||
DZ_IDX = 1,
|
||||
OF_IDX = 2,
|
||||
UF_IDX = 3,
|
||||
IX_IDX = 4,
|
||||
ID_IDX = 7
|
||||
};
|
||||
// corresponding bits as numeric values
|
||||
enum FPSRMask {
|
||||
IO = (1 << IO_IDX),
|
||||
DZ = (1 << DZ_IDX),
|
||||
OF = (1 << OF_IDX),
|
||||
UF = (1 << UF_IDX),
|
||||
IX = (1 << IX_IDX),
|
||||
ID = (1 << ID_IDX)
|
||||
};
|
||||
static const int FPSR_ALL_FPSRS = (IO | DZ | OF | UF | IX | ID);
|
||||
};
|
||||
|
||||
// debugger support
|
||||
|
||||
enum PrintFormat
|
||||
{
|
||||
FMT_DECIMAL,
|
||||
FMT_HEX,
|
||||
FMT_SINGLE,
|
||||
FMT_DOUBLE,
|
||||
FMT_QUAD,
|
||||
FMT_MULTI
|
||||
};
|
||||
|
||||
/*
|
||||
* model of the registers and other state associated with the cpu
|
||||
*/
|
||||
class CPUState
|
||||
{
|
||||
friend class AArch64Simulator;
|
||||
private:
|
||||
// this is the PC of the instruction being executed
|
||||
u_int64_t pc;
|
||||
// this is the PC of the instruction to be executed next
|
||||
// it is defaulted to pc + 4 at instruction decode but
|
||||
// execute may reset it
|
||||
|
||||
u_int64_t nextpc;
|
||||
GRegister gr[33]; // extra register at index 32 is used
|
||||
// to hold zero value
|
||||
FRegister fr[32];
|
||||
CPSRRegister cpsr;
|
||||
FPSRRegister fpsr;
|
||||
|
||||
public:
|
||||
|
||||
CPUState() {
|
||||
gr[20].value.u64 = 0; // establish initial condition for
|
||||
// checkAssertions()
|
||||
trace_counter = 0;
|
||||
}
|
||||
|
||||
// General Register access macros
|
||||
|
||||
// only xreg or xregs can be used as an lvalue in order to update a
|
||||
// register. this ensures that the top part of a register is always
|
||||
// assigned when it is written by the sim.
|
||||
|
||||
inline u_int64_t &xreg(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.u64;
|
||||
} else {
|
||||
return gr[reg].value.u64;
|
||||
}
|
||||
}
|
||||
|
||||
inline int64_t &xregs(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.s64;
|
||||
} else {
|
||||
return gr[reg].value.s64;
|
||||
}
|
||||
}
|
||||
|
||||
inline u_int32_t wreg(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.u32;
|
||||
} else {
|
||||
return gr[reg].value.u32;
|
||||
}
|
||||
}
|
||||
|
||||
inline int32_t wregs(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.s32;
|
||||
} else {
|
||||
return gr[reg].value.s32;
|
||||
}
|
||||
}
|
||||
|
||||
inline u_int32_t hreg(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.u16;
|
||||
} else {
|
||||
return gr[reg].value.u16;
|
||||
}
|
||||
}
|
||||
|
||||
inline int32_t hregs(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.s16;
|
||||
} else {
|
||||
return gr[reg].value.s16;
|
||||
}
|
||||
}
|
||||
|
||||
inline u_int32_t breg(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.u8;
|
||||
} else {
|
||||
return gr[reg].value.u8;
|
||||
}
|
||||
}
|
||||
|
||||
inline int32_t bregs(GReg reg, int r31_is_sp) {
|
||||
if (reg == R31 && !r31_is_sp) {
|
||||
return gr[32].value.s8;
|
||||
} else {
|
||||
return gr[reg].value.s8;
|
||||
}
|
||||
}
|
||||
|
||||
// FP Register access macros
|
||||
|
||||
// all non-vector accessors return a reference so we can both read
|
||||
// and assign
|
||||
|
||||
inline float &sreg(VReg reg) {
|
||||
return fr[reg].value.s;
|
||||
}
|
||||
|
||||
inline double &dreg(VReg reg) {
|
||||
return fr[reg].value.d;
|
||||
}
|
||||
|
||||
inline long double &qreg(VReg reg) {
|
||||
return fr[reg].value.q;
|
||||
}
|
||||
|
||||
// all vector register accessors return a pointer
|
||||
|
||||
inline float *vsreg(VReg reg) {
|
||||
return &fr[reg].value.vs[0];
|
||||
}
|
||||
|
||||
inline double *vdreg(VReg reg) {
|
||||
return &fr[reg].value.vd[0];
|
||||
}
|
||||
|
||||
inline u_int8_t *vbreg(VReg reg) {
|
||||
return &fr[reg].value.vb[0];
|
||||
}
|
||||
|
||||
inline u_int16_t *vhreg(VReg reg) {
|
||||
return &fr[reg].value.vh[0];
|
||||
}
|
||||
|
||||
inline u_int32_t *vwreg(VReg reg) {
|
||||
return &fr[reg].value.vw[0];
|
||||
}
|
||||
|
||||
inline u_int64_t *vxreg(VReg reg) {
|
||||
return &fr[reg].value.vx[0];
|
||||
}
|
||||
|
||||
union GRegisterValue prev_sp, prev_fp;
|
||||
|
||||
static const int trace_size = 256;
|
||||
u_int64_t trace_buffer[trace_size];
|
||||
int trace_counter;
|
||||
|
||||
bool checkAssertions()
|
||||
{
|
||||
// Make sure that SP is 16-aligned
|
||||
// Also make sure that ESP is above SP.
|
||||
// We don't care about checking ESP if it is null, i.e. it hasn't
|
||||
// been used yet.
|
||||
if (gr[31].value.u64 & 0x0f) {
|
||||
asm volatile("nop");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// pc register accessors
|
||||
|
||||
// this instruction can be used to fetch the current PC
|
||||
u_int64_t getPC();
|
||||
// instead of setting the current PC directly you can
|
||||
// first set the next PC (either absolute or PC-relative)
|
||||
// and later copy the next PC into the current PC
|
||||
// this supports a default increment by 4 at instruction
|
||||
// fetch with an optional reset by control instructions
|
||||
u_int64_t getNextPC();
|
||||
void setNextPC(u_int64_t next);
|
||||
void offsetNextPC(int64_t offset);
|
||||
// install nextpc as current pc
|
||||
void updatePC();
|
||||
|
||||
// this instruction can be used to save the next PC to LR
|
||||
// just before installing a branch PC
|
||||
inline void saveLR() { gr[LR].value.u64 = nextpc; }
|
||||
|
||||
// cpsr register accessors
|
||||
u_int32_t getCPSRRegister();
|
||||
void setCPSRRegister(u_int32_t flags);
|
||||
// read a specific subset of the flags as a bit pattern
|
||||
// mask should be composed using elements of enum FlagMask
|
||||
u_int32_t getCPSRBits(u_int32_t mask);
|
||||
// assign a specific subset of the flags as a bit pattern
|
||||
// mask and value should be composed using elements of enum FlagMask
|
||||
void setCPSRBits(u_int32_t mask, u_int32_t value);
|
||||
// test the value of a single flag returned as 1 or 0
|
||||
u_int32_t testCPSR(CPSRRegister::CPSRIdx idx);
|
||||
// set a single flag
|
||||
void setCPSR(CPSRRegister::CPSRIdx idx);
|
||||
// clear a single flag
|
||||
void clearCPSR(CPSRRegister::CPSRIdx idx);
|
||||
// utility method to set ARM CSPR flags from an x86 bit mask generated by integer arithmetic
|
||||
void setCPSRRegisterFromX86(u_int64_t x86Flags);
|
||||
// utility method to set ARM CSPR flags from an x86 bit mask generated by floating compare
|
||||
void setCPSRRegisterFromX86FP(u_int64_t x86Flags);
|
||||
|
||||
// fpsr register accessors
|
||||
u_int32_t getFPSRRegister();
|
||||
void setFPSRRegister(u_int32_t flags);
|
||||
// read a specific subset of the fprs bits as a bit pattern
|
||||
// mask should be composed using elements of enum FPSRRegister::FlagMask
|
||||
u_int32_t getFPSRBits(u_int32_t mask);
|
||||
// assign a specific subset of the flags as a bit pattern
|
||||
// mask and value should be composed using elements of enum FPSRRegister::FlagMask
|
||||
void setFPSRBits(u_int32_t mask, u_int32_t value);
|
||||
// test the value of a single flag returned as 1 or 0
|
||||
u_int32_t testFPSR(FPSRRegister::FPSRIdx idx);
|
||||
// set a single flag
|
||||
void setFPSR(FPSRRegister::FPSRIdx idx);
|
||||
// clear a single flag
|
||||
void clearFPSR(FPSRRegister::FPSRIdx idx);
|
||||
|
||||
// debugger support
|
||||
void printPC(int pending, const char *trailing = "\n");
|
||||
void printInstr(u_int32_t instr, void (*dasm)(u_int64_t), const char *trailing = "\n");
|
||||
void printGReg(GReg reg, PrintFormat format = FMT_HEX, const char *trailing = "\n");
|
||||
void printVReg(VReg reg, PrintFormat format = FMT_HEX, const char *trailing = "\n");
|
||||
void printCPSR(const char *trailing = "\n");
|
||||
void printFPSR(const char *trailing = "\n");
|
||||
void dumpState();
|
||||
};
|
||||
|
||||
#endif // ifndef _CPU_STATE_H
|
||||
@@ -1,412 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _DECODE_H
|
||||
#define _DECODE_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "cpustate_aarch64.hpp"
|
||||
|
||||
// bitfield immediate expansion helper
|
||||
|
||||
extern int expandLogicalImmediate(u_int32_t immN, u_int32_t immr,
|
||||
u_int32_t imms, u_int64_t &bimm);
|
||||
|
||||
|
||||
/*
|
||||
* codes used in conditional instructions
|
||||
*
|
||||
* these are passed to conditional operations to identify which
|
||||
* condition to test for
|
||||
*/
|
||||
enum CondCode {
|
||||
EQ = 0b0000, // meaning Z == 1
|
||||
NE = 0b0001, // meaning Z == 0
|
||||
HS = 0b0010, // meaning C == 1
|
||||
CS = HS,
|
||||
LO = 0b0011, // meaning C == 0
|
||||
CC = LO,
|
||||
MI = 0b0100, // meaning N == 1
|
||||
PL = 0b0101, // meaning N == 0
|
||||
VS = 0b0110, // meaning V == 1
|
||||
VC = 0b0111, // meaning V == 0
|
||||
HI = 0b1000, // meaning C == 1 && Z == 0
|
||||
LS = 0b1001, // meaning !(C == 1 && Z == 0)
|
||||
GE = 0b1010, // meaning N == V
|
||||
LT = 0b1011, // meaning N != V
|
||||
GT = 0b1100, // meaning Z == 0 && N == V
|
||||
LE = 0b1101, // meaning !(Z == 0 && N == V)
|
||||
AL = 0b1110, // meaning ANY
|
||||
NV = 0b1111 // ditto
|
||||
};
|
||||
|
||||
/*
|
||||
* certain addressing modes for load require pre or post writeback of
|
||||
* the computed address to a base register
|
||||
*/
|
||||
enum WriteBack {
|
||||
Post = 0,
|
||||
Pre = 1
|
||||
};
|
||||
|
||||
/*
|
||||
* certain addressing modes for load require an offset to
|
||||
* be optionally scaled so the decode needs to pass that
|
||||
* through to the execute routine
|
||||
*/
|
||||
enum Scaling {
|
||||
Unscaled = 0,
|
||||
Scaled = 1
|
||||
};
|
||||
|
||||
/*
|
||||
* when we do have to scale we do so by shifting using
|
||||
* log(bytes in data element - 1) as the shift count.
|
||||
* so we don't have to scale offsets when loading
|
||||
* bytes.
|
||||
*/
|
||||
enum ScaleShift {
|
||||
ScaleShift16 = 1,
|
||||
ScaleShift32 = 2,
|
||||
ScaleShift64 = 3,
|
||||
ScaleShift128 = 4
|
||||
};
|
||||
|
||||
/*
|
||||
* one of the addressing modes for load requires a 32-bit register
|
||||
* value to be either zero- or sign-extended for these instructions
|
||||
* UXTW or SXTW should be passed
|
||||
*
|
||||
* arithmetic register data processing operations can optionally
|
||||
* extend a portion of the second register value for these
|
||||
* instructions the value supplied must identify the portion of the
|
||||
* register which is to be zero- or sign-exended
|
||||
*/
|
||||
enum Extension {
|
||||
UXTB = 0,
|
||||
UXTH = 1,
|
||||
UXTW = 2,
|
||||
UXTX = 3,
|
||||
SXTB = 4,
|
||||
SXTH = 5,
|
||||
SXTW = 6,
|
||||
SXTX = 7
|
||||
};
|
||||
|
||||
/*
|
||||
* arithmetic and logical register data processing operations
|
||||
* optionally perform a shift on the second register value
|
||||
*/
|
||||
enum Shift {
|
||||
LSL = 0,
|
||||
LSR = 1,
|
||||
ASR = 2,
|
||||
ROR = 3
|
||||
};
|
||||
|
||||
/*
|
||||
* bit twiddling helpers for instruction decode
|
||||
*/
|
||||
|
||||
// 32 bit mask with bits [hi,...,lo] set
|
||||
|
||||
static inline u_int32_t mask32(int hi = 31, int lo = 0)
|
||||
{
|
||||
int nbits = (hi + 1) - lo;
|
||||
return ((1 << nbits) - 1) << lo;
|
||||
}
|
||||
|
||||
static inline u_int64_t mask64(int hi = 63, int lo = 0)
|
||||
{
|
||||
int nbits = (hi + 1) - lo;
|
||||
return ((1L << nbits) - 1) << lo;
|
||||
}
|
||||
|
||||
// pick bits [hi,...,lo] from val
|
||||
static inline u_int32_t pick32(u_int32_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (val & mask32(hi, lo));
|
||||
}
|
||||
|
||||
// pick bits [hi,...,lo] from val
|
||||
static inline u_int64_t pick64(u_int64_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (val & mask64(hi, lo));
|
||||
}
|
||||
|
||||
// pick bits [hi,...,lo] from val and shift to [(hi-(newlo - lo)),newlo]
|
||||
static inline u_int32_t pickshift32(u_int32_t val, int hi = 31,
|
||||
int lo = 0, int newlo = 0)
|
||||
{
|
||||
u_int32_t bits = pick32(val, hi, lo);
|
||||
if (lo < newlo) {
|
||||
return (bits << (newlo - lo));
|
||||
} else {
|
||||
return (bits >> (lo - newlo));
|
||||
}
|
||||
}
|
||||
// mask [hi,lo] and shift down to start at bit 0
|
||||
static inline u_int32_t pickbits32(u_int32_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (pick32(val, hi, lo) >> lo);
|
||||
}
|
||||
|
||||
// mask [hi,lo] and shift down to start at bit 0
|
||||
static inline u_int64_t pickbits64(u_int64_t val, int hi = 63, int lo = 0)
|
||||
{
|
||||
return (pick64(val, hi, lo) >> lo);
|
||||
}
|
||||
|
||||
/*
|
||||
* decode registers, immediates and constants of various types
|
||||
*/
|
||||
|
||||
static inline GReg greg(u_int32_t val, int lo)
|
||||
{
|
||||
return (GReg)pickbits32(val, lo + 4, lo);
|
||||
}
|
||||
|
||||
static inline VReg vreg(u_int32_t val, int lo)
|
||||
{
|
||||
return (VReg)pickbits32(val, lo + 4, lo);
|
||||
}
|
||||
|
||||
static inline u_int32_t uimm(u_int32_t val, int hi, int lo)
|
||||
{
|
||||
return pickbits32(val, hi, lo);
|
||||
}
|
||||
|
||||
static inline int32_t simm(u_int32_t val, int hi = 31, int lo = 0) {
|
||||
union {
|
||||
u_int32_t u;
|
||||
int32_t n;
|
||||
};
|
||||
|
||||
u = val << (31 - hi);
|
||||
n = n >> (31 - hi + lo);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline int64_t simm(u_int64_t val, int hi = 63, int lo = 0) {
|
||||
union {
|
||||
u_int64_t u;
|
||||
int64_t n;
|
||||
};
|
||||
|
||||
u = val << (63 - hi);
|
||||
n = n >> (63 - hi + lo);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline Shift shift(u_int32_t val, int lo)
|
||||
{
|
||||
return (Shift)pickbits32(val, lo+1, lo);
|
||||
}
|
||||
|
||||
static inline Extension extension(u_int32_t val, int lo)
|
||||
{
|
||||
return (Extension)pickbits32(val, lo+2, lo);
|
||||
}
|
||||
|
||||
static inline Scaling scaling(u_int32_t val, int lo)
|
||||
{
|
||||
return (Scaling)pickbits32(val, lo, lo);
|
||||
}
|
||||
|
||||
static inline WriteBack writeback(u_int32_t val, int lo)
|
||||
{
|
||||
return (WriteBack)pickbits32(val, lo, lo);
|
||||
}
|
||||
|
||||
static inline CondCode condcode(u_int32_t val, int lo)
|
||||
{
|
||||
return (CondCode)pickbits32(val, lo+3, lo);
|
||||
}
|
||||
|
||||
/*
|
||||
* operation decode
|
||||
*/
|
||||
// bits [28,25] are the primary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchGroup(u_int32_t val)
|
||||
{
|
||||
return pickshift32(val, 28, 25, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* the 16 possible values for bits [28,25] identified by tags which
|
||||
* map them to the 5 main instruction groups LDST, DPREG, ADVSIMD,
|
||||
* BREXSYS and DPIMM.
|
||||
*
|
||||
* An extra group PSEUDO is included in one of the unallocated ranges
|
||||
* for simulator-specific pseudo-instructions.
|
||||
*/
|
||||
enum DispatchGroup {
|
||||
GROUP_PSEUDO_0000,
|
||||
GROUP_UNALLOC_0001,
|
||||
GROUP_UNALLOC_0010,
|
||||
GROUP_UNALLOC_0011,
|
||||
GROUP_LDST_0100,
|
||||
GROUP_DPREG_0101,
|
||||
GROUP_LDST_0110,
|
||||
GROUP_ADVSIMD_0111,
|
||||
GROUP_DPIMM_1000,
|
||||
GROUP_DPIMM_1001,
|
||||
GROUP_BREXSYS_1010,
|
||||
GROUP_BREXSYS_1011,
|
||||
GROUP_LDST_1100,
|
||||
GROUP_DPREG_1101,
|
||||
GROUP_LDST_1110,
|
||||
GROUP_ADVSIMD_1111
|
||||
};
|
||||
|
||||
// bits [31, 29] of a Pseudo are the secondary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchPseudo(u_int32_t val)
|
||||
{
|
||||
return pickshift32(val, 31, 29, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* the 8 possible values for bits [31,29] in a Pseudo Instruction.
|
||||
* Bits [28,25] are always 0000.
|
||||
*/
|
||||
|
||||
enum DispatchPseudo {
|
||||
PSEUDO_UNALLOC_000, // unallocated
|
||||
PSEUDO_UNALLOC_001, // ditto
|
||||
PSEUDO_UNALLOC_010, // ditto
|
||||
PSEUDO_UNALLOC_011, // ditto
|
||||
PSEUDO_UNALLOC_100, // ditto
|
||||
PSEUDO_UNALLOC_101, // ditto
|
||||
PSEUDO_CALLOUT_110, // CALLOUT -- bits [24,0] identify call/ret sig
|
||||
PSEUDO_HALT_111 // HALT -- bits [24, 0] identify halt code
|
||||
};
|
||||
|
||||
// bits [25, 23] of a DPImm are the secondary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchDPImm(u_int32_t instr)
|
||||
{
|
||||
return pickshift32(instr, 25, 23, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* the 8 possible values for bits [25,23] in a Data Processing Immediate
|
||||
* Instruction. Bits [28,25] are always 100_.
|
||||
*/
|
||||
|
||||
enum DispatchDPImm {
|
||||
DPIMM_PCADR_000, // PC-rel-addressing
|
||||
DPIMM_PCADR_001, // ditto
|
||||
DPIMM_ADDSUB_010, // Add/Subtract (immediate)
|
||||
DPIMM_ADDSUB_011, // ditto
|
||||
DPIMM_LOG_100, // Logical (immediate)
|
||||
DPIMM_MOV_101, // Move Wide (immediate)
|
||||
DPIMM_BITF_110, // Bitfield
|
||||
DPIMM_EXTR_111 // Extract
|
||||
};
|
||||
|
||||
// bits [29,28:26] of a LS are the secondary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchLS(u_int32_t instr)
|
||||
{
|
||||
return (pickshift32(instr, 29, 28, 1) |
|
||||
pickshift32(instr, 26, 26, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* the 8 possible values for bits [29,28:26] in a Load/Store
|
||||
* Instruction. Bits [28,25] are always _1_0
|
||||
*/
|
||||
|
||||
enum DispatchLS {
|
||||
LS_EXCL_000, // Load/store exclusive (includes some unallocated)
|
||||
LS_ADVSIMD_001, // AdvSIMD load/store (various -- includes some unallocated)
|
||||
LS_LIT_010, // Load register literal (includes some unallocated)
|
||||
LS_LIT_011, // ditto
|
||||
LS_PAIR_100, // Load/store register pair (various)
|
||||
LS_PAIR_101, // ditto
|
||||
LS_OTHER_110, // other load/store formats
|
||||
LS_OTHER_111 // ditto
|
||||
};
|
||||
|
||||
// bits [28:24:21] of a DPReg are the secondary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchDPReg(u_int32_t instr)
|
||||
{
|
||||
return (pickshift32(instr, 28, 28, 2) |
|
||||
pickshift32(instr, 24, 24, 1) |
|
||||
pickshift32(instr, 21, 21, 0));
|
||||
}
|
||||
|
||||
/*
|
||||
* the 8 possible values for bits [28:24:21] in a Data Processing
|
||||
* Register Instruction. Bits [28,25] are always _101
|
||||
*/
|
||||
|
||||
enum DispatchDPReg {
|
||||
DPREG_LOG_000, // Logical (shifted register)
|
||||
DPREG_LOG_001, // ditto
|
||||
DPREG_ADDSHF_010, // Add/subtract (shifted register)
|
||||
DPREG_ADDEXT_011, // Add/subtract (extended register)
|
||||
DPREG_ADDCOND_100, // Add/subtract (with carry) AND
|
||||
// Cond compare/select AND
|
||||
// Data Processing (1/2 source)
|
||||
DPREG_UNALLOC_101, // Unallocated
|
||||
DPREG_3SRC_110, // Data Processing (3 source)
|
||||
DPREG_3SRC_111 // Data Processing (3 source)
|
||||
};
|
||||
|
||||
// bits [31,29] of a BrExSys are the secondary dispatch vector
|
||||
|
||||
static inline u_int32_t dispatchBrExSys(u_int32_t instr)
|
||||
{
|
||||
return pickbits32(instr, 31, 29);
|
||||
}
|
||||
|
||||
/*
|
||||
* the 8 possible values for bits [31,29] in a Branch/Exception/System
|
||||
* Instruction. Bits [28,25] are always 101_
|
||||
*/
|
||||
|
||||
enum DispatchBr {
|
||||
BR_IMM_000, // Unconditional branch (immediate)
|
||||
BR_IMMCMP_001, // Compare & branch (immediate) AND
|
||||
// Test & branch (immediate)
|
||||
BR_IMMCOND_010, // Conditional branch (immediate) AND Unallocated
|
||||
BR_UNALLOC_011, // Unallocated
|
||||
BR_IMM_100, // Unconditional branch (immediate)
|
||||
BR_IMMCMP_101, // Compare & branch (immediate) AND
|
||||
// Test & branch (immediate)
|
||||
BR_REG_110, // Unconditional branch (register) AND System AND
|
||||
// Excn gen AND Unallocated
|
||||
BR_UNALLOC_111 // Unallocated
|
||||
};
|
||||
|
||||
/*
|
||||
* TODO still need to provide secondary decode and dispatch for
|
||||
* AdvSIMD Insructions with instr[28,25] = 0111 or 1111
|
||||
*/
|
||||
|
||||
#endif // ifndef DECODE_H
|
||||
@@ -85,48 +85,6 @@ define_pd_global(bool, ThreadLocalHandshakes, true);
|
||||
define_pd_global(intx, InlineSmallCode, 1000);
|
||||
#endif
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
#define UseBuiltinSim true
|
||||
#define ARCH_FLAGS(develop, \
|
||||
product, \
|
||||
diagnostic, \
|
||||
experimental, \
|
||||
notproduct, \
|
||||
range, \
|
||||
constraint, \
|
||||
writeable) \
|
||||
\
|
||||
product(bool, NotifySimulator, UseBuiltinSim, \
|
||||
"tell the AArch64 sim where we are in method code") \
|
||||
\
|
||||
product(bool, UseSimulatorCache, false, \
|
||||
"tell sim to cache memory updates until exclusive op occurs") \
|
||||
\
|
||||
product(bool, DisableBCCheck, true, \
|
||||
"tell sim not to invoke bccheck callback") \
|
||||
\
|
||||
product(bool, NearCpool, true, \
|
||||
"constant pool is close to instructions") \
|
||||
\
|
||||
product(bool, UseBarriersForVolatile, false, \
|
||||
"Use memory barriers to implement volatile accesses") \
|
||||
\
|
||||
product(bool, UseCRC32, false, \
|
||||
"Use CRC32 instructions for CRC32 computation") \
|
||||
\
|
||||
product(bool, UseLSE, false, \
|
||||
"Use LSE instructions") \
|
||||
|
||||
// Don't attempt to use Neon on builtin sim until builtin sim supports it
|
||||
#define UseCRC32 false
|
||||
#define UseSIMDForMemoryOps false
|
||||
#define AvoidUnalignedAcesses false
|
||||
|
||||
#else
|
||||
#define UseBuiltinSim false
|
||||
#define NotifySimulator false
|
||||
#define UseSimulatorCache false
|
||||
#define DisableBCCheck true
|
||||
#define ARCH_FLAGS(develop, \
|
||||
product, \
|
||||
diagnostic, \
|
||||
@@ -165,7 +123,5 @@ define_pd_global(intx, InlineSmallCode, 1000);
|
||||
"Use prfm hint with specified distance in compiled code." \
|
||||
"Value -1 means off.") \
|
||||
range(-1, 4096)
|
||||
#endif
|
||||
|
||||
|
||||
#endif // CPU_AARCH64_VM_GLOBALS_AARCH64_HPP
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "decode_aarch64.hpp"
|
||||
#include "immediate_aarch64.hpp"
|
||||
|
||||
// there are at most 2^13 possible logical immediate encodings
|
||||
@@ -69,12 +68,57 @@ static inline u_int64_t ones(int N)
|
||||
return (N == 64 ? (u_int64_t)-1UL : ((1UL << N) - 1));
|
||||
}
|
||||
|
||||
/*
|
||||
* bit twiddling helpers for instruction decode
|
||||
*/
|
||||
|
||||
// 32 bit mask with bits [hi,...,lo] set
|
||||
static inline u_int32_t mask32(int hi = 31, int lo = 0)
|
||||
{
|
||||
int nbits = (hi + 1) - lo;
|
||||
return ((1 << nbits) - 1) << lo;
|
||||
}
|
||||
|
||||
static inline u_int64_t mask64(int hi = 63, int lo = 0)
|
||||
{
|
||||
int nbits = (hi + 1) - lo;
|
||||
return ((1L << nbits) - 1) << lo;
|
||||
}
|
||||
|
||||
// pick bits [hi,...,lo] from val
|
||||
static inline u_int32_t pick32(u_int32_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (val & mask32(hi, lo));
|
||||
}
|
||||
|
||||
// pick bits [hi,...,lo] from val
|
||||
static inline u_int64_t pick64(u_int64_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (val & mask64(hi, lo));
|
||||
}
|
||||
|
||||
// mask [hi,lo] and shift down to start at bit 0
|
||||
static inline u_int32_t pickbits32(u_int32_t val, int hi = 31, int lo = 0)
|
||||
{
|
||||
return (pick32(val, hi, lo) >> lo);
|
||||
}
|
||||
|
||||
// mask [hi,lo] and shift down to start at bit 0
|
||||
static inline u_int64_t pickbits64(u_int64_t val, int hi = 63, int lo = 0)
|
||||
{
|
||||
return (pick64(val, hi, lo) >> lo);
|
||||
}
|
||||
|
||||
// result<0> to val<N>
|
||||
static inline u_int64_t pickbit(u_int64_t val, int N)
|
||||
{
|
||||
return pickbits64(val, N, N);
|
||||
}
|
||||
|
||||
static inline u_int32_t uimm(u_int32_t val, int hi, int lo)
|
||||
{
|
||||
return pickbits32(val, hi, lo);
|
||||
}
|
||||
|
||||
// SPEC bits(M*N) Replicate(bits(M) x, integer N);
|
||||
// this is just an educated guess
|
||||
|
||||
@@ -260,29 +260,6 @@ void InterpreterRuntime::SignatureHandlerGenerator::generate(uint64_t fingerprin
|
||||
// generate code to handle arguments
|
||||
iterate(fingerprint);
|
||||
|
||||
// set the call format
|
||||
// n.b. allow extra 1 for the JNI_Env in c_rarg0
|
||||
unsigned int call_format = ((_num_int_args + 1) << 6) | (_num_fp_args << 2);
|
||||
|
||||
switch (method()->result_type()) {
|
||||
case T_VOID:
|
||||
call_format |= MacroAssembler::ret_type_void;
|
||||
break;
|
||||
case T_FLOAT:
|
||||
call_format |= MacroAssembler::ret_type_float;
|
||||
break;
|
||||
case T_DOUBLE:
|
||||
call_format |= MacroAssembler::ret_type_double;
|
||||
break;
|
||||
default:
|
||||
call_format |= MacroAssembler::ret_type_integral;
|
||||
break;
|
||||
}
|
||||
|
||||
// // store the call format in the method
|
||||
// __ movw(r0, call_format);
|
||||
// __ str(r0, Address(rmethod, Method::call_format_offset()));
|
||||
|
||||
// return result handler
|
||||
__ lea(r0, ExternalAddress(Interpreter::result_handler(method()->result_type())));
|
||||
__ ret(lr);
|
||||
@@ -393,28 +370,6 @@ class SlowSignatureHandler
|
||||
_num_fp_args = 0;
|
||||
}
|
||||
|
||||
// n.b. allow extra 1 for the JNI_Env in c_rarg0
|
||||
unsigned int get_call_format()
|
||||
{
|
||||
unsigned int call_format = ((_num_int_args + 1) << 6) | (_num_fp_args << 2);
|
||||
|
||||
switch (method()->result_type()) {
|
||||
case T_VOID:
|
||||
call_format |= MacroAssembler::ret_type_void;
|
||||
break;
|
||||
case T_FLOAT:
|
||||
call_format |= MacroAssembler::ret_type_float;
|
||||
break;
|
||||
case T_DOUBLE:
|
||||
call_format |= MacroAssembler::ret_type_double;
|
||||
break;
|
||||
default:
|
||||
call_format |= MacroAssembler::ret_type_integral;
|
||||
break;
|
||||
}
|
||||
|
||||
return call_format;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -430,9 +385,6 @@ IRT_ENTRY(address,
|
||||
SlowSignatureHandler ssh(m, (address)from, to);
|
||||
ssh.iterate(UCONST64(-1));
|
||||
|
||||
// // set the call format
|
||||
// method->set_call_format(ssh.get_call_format());
|
||||
|
||||
// return result handler
|
||||
return Interpreter::result_handler(m->result_type());
|
||||
IRT_END
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
class SignatureHandlerGenerator: public NativeSignatureIterator {
|
||||
private:
|
||||
MacroAssembler* _masm;
|
||||
unsigned int _call_format;
|
||||
unsigned int _num_fp_args;
|
||||
unsigned int _num_int_args;
|
||||
int _stack_offset;
|
||||
|
||||
@@ -812,6 +812,15 @@ address MacroAssembler::emit_trampoline_stub(int insts_call_instruction_offset,
|
||||
return stub_start_addr;
|
||||
}
|
||||
|
||||
void MacroAssembler::c2bool(Register x) {
|
||||
// implements x == 0 ? 0 : 1
|
||||
// note: must only look at least-significant byte of x
|
||||
// since C-style booleans are stored in one byte
|
||||
// only! (was bug)
|
||||
tst(x, 0xff);
|
||||
cset(x, Assembler::NE);
|
||||
}
|
||||
|
||||
address MacroAssembler::ic_call(address entry, jint method_index) {
|
||||
RelocationHolder rh = virtual_call_Relocation::spec(pc(), method_index);
|
||||
// address const_ptr = long_constant((jlong)Universe::non_oop_word());
|
||||
@@ -950,17 +959,6 @@ RegisterOrConstant MacroAssembler::delayed_value_impl(intptr_t* delayed_value_ad
|
||||
return RegisterOrConstant(tmp);
|
||||
}
|
||||
|
||||
|
||||
void MacroAssembler:: notify(int type) {
|
||||
if (type == bytecode_start) {
|
||||
// set_last_Java_frame(esp, rfp, (address)NULL);
|
||||
Assembler:: notify(type);
|
||||
// reset_last_Java_frame(true);
|
||||
}
|
||||
else
|
||||
Assembler:: notify(type);
|
||||
}
|
||||
|
||||
// Look up the method for a megamorphic invokeinterface call.
|
||||
// The target method is determined by <intf_klass, itable_index>.
|
||||
// The receiver klass is in recv_klass.
|
||||
@@ -1374,22 +1372,12 @@ Address MacroAssembler::argument_address(RegisterOrConstant arg_slot,
|
||||
void MacroAssembler::call_VM_leaf_base(address entry_point,
|
||||
int number_of_arguments,
|
||||
Label *retaddr) {
|
||||
call_VM_leaf_base1(entry_point, number_of_arguments, 0, ret_type_integral, retaddr);
|
||||
}
|
||||
|
||||
void MacroAssembler::call_VM_leaf_base1(address entry_point,
|
||||
int number_of_gp_arguments,
|
||||
int number_of_fp_arguments,
|
||||
ret_type type,
|
||||
Label *retaddr) {
|
||||
Label E, L;
|
||||
|
||||
stp(rscratch1, rmethod, Address(pre(sp, -2 * wordSize)));
|
||||
|
||||
// We add 1 to number_of_arguments because the thread in arg0 is
|
||||
// not counted
|
||||
mov(rscratch1, entry_point);
|
||||
blrt(rscratch1, number_of_gp_arguments + 1, number_of_fp_arguments, type);
|
||||
blr(rscratch1);
|
||||
if (retaddr)
|
||||
bind(*retaddr);
|
||||
|
||||
@@ -2147,11 +2135,18 @@ void MacroAssembler::stop(const char* msg) {
|
||||
mov(c_rarg1, (address)ip);
|
||||
mov(c_rarg2, sp);
|
||||
mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
|
||||
// call(c_rarg3);
|
||||
blrt(c_rarg3, 3, 0, 1);
|
||||
blr(c_rarg3);
|
||||
hlt(0);
|
||||
}
|
||||
|
||||
void MacroAssembler::warn(const char* msg) {
|
||||
pusha();
|
||||
mov(c_rarg0, (address)msg);
|
||||
mov(lr, CAST_FROM_FN_PTR(address, warning));
|
||||
blr(lr);
|
||||
popa();
|
||||
}
|
||||
|
||||
void MacroAssembler::unimplemented(const char* what) {
|
||||
const char* buf = NULL;
|
||||
{
|
||||
@@ -2348,21 +2343,18 @@ void MacroAssembler::cmpxchg(Register addr, Register expected,
|
||||
bool weak,
|
||||
Register result) {
|
||||
if (result == noreg) result = rscratch1;
|
||||
BLOCK_COMMENT("cmpxchg {");
|
||||
if (UseLSE) {
|
||||
mov(result, expected);
|
||||
lse_cas(result, new_val, addr, size, acquire, release, /*not_pair*/ true);
|
||||
cmp(result, expected);
|
||||
compare_eq(result, expected, size);
|
||||
} else {
|
||||
BLOCK_COMMENT("cmpxchg {");
|
||||
Label retry_load, done;
|
||||
if ((VM_Version::features() & VM_Version::CPU_STXR_PREFETCH))
|
||||
prfm(Address(addr), PSTL1STRM);
|
||||
bind(retry_load);
|
||||
load_exclusive(result, addr, size, acquire);
|
||||
if (size == xword)
|
||||
cmp(result, expected);
|
||||
else
|
||||
cmpw(result, expected);
|
||||
compare_eq(result, expected, size);
|
||||
br(Assembler::NE, done);
|
||||
store_exclusive(rscratch1, new_val, addr, size, release);
|
||||
if (weak) {
|
||||
@@ -2371,10 +2363,28 @@ void MacroAssembler::cmpxchg(Register addr, Register expected,
|
||||
cbnzw(rscratch1, retry_load);
|
||||
}
|
||||
bind(done);
|
||||
BLOCK_COMMENT("} cmpxchg");
|
||||
}
|
||||
BLOCK_COMMENT("} cmpxchg");
|
||||
}
|
||||
|
||||
// A generic comparison. Only compares for equality, clobbers rscratch1.
|
||||
void MacroAssembler::compare_eq(Register rm, Register rn, enum operand_size size) {
|
||||
if (size == xword) {
|
||||
cmp(rm, rn);
|
||||
} else if (size == word) {
|
||||
cmpw(rm, rn);
|
||||
} else if (size == halfword) {
|
||||
eorw(rscratch1, rm, rn);
|
||||
ands(zr, rscratch1, 0xffff);
|
||||
} else if (size == byte) {
|
||||
eorw(rscratch1, rm, rn);
|
||||
ands(zr, rscratch1, 0xff);
|
||||
} else {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static bool different(Register a, RegisterOrConstant b, Register c) {
|
||||
if (b.is_constant())
|
||||
return a != c;
|
||||
@@ -2514,50 +2524,6 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
// routine to generate an x86 prolog for a stub function which
|
||||
// bootstraps into the generated ARM code which directly follows the
|
||||
// stub
|
||||
//
|
||||
// the argument encodes the number of general and fp registers
|
||||
// passed by the caller and the callng convention (currently just
|
||||
// the number of general registers and assumes C argument passing)
|
||||
|
||||
extern "C" {
|
||||
int aarch64_stub_prolog_size();
|
||||
void aarch64_stub_prolog();
|
||||
void aarch64_prolog();
|
||||
}
|
||||
|
||||
void MacroAssembler::c_stub_prolog(int gp_arg_count, int fp_arg_count, int ret_type,
|
||||
address *prolog_ptr)
|
||||
{
|
||||
int calltype = (((ret_type & 0x3) << 8) |
|
||||
((fp_arg_count & 0xf) << 4) |
|
||||
(gp_arg_count & 0xf));
|
||||
|
||||
// the addresses for the x86 to ARM entry code we need to use
|
||||
address start = pc();
|
||||
// printf("start = %lx\n", start);
|
||||
int byteCount = aarch64_stub_prolog_size();
|
||||
// printf("byteCount = %x\n", byteCount);
|
||||
int instructionCount = (byteCount + 3)/ 4;
|
||||
// printf("instructionCount = %x\n", instructionCount);
|
||||
for (int i = 0; i < instructionCount; i++) {
|
||||
nop();
|
||||
}
|
||||
|
||||
memcpy(start, (void*)aarch64_stub_prolog, byteCount);
|
||||
|
||||
// write the address of the setup routine and the call format at the
|
||||
// end of into the copied code
|
||||
u_int64_t *patch_end = (u_int64_t *)(start + byteCount);
|
||||
if (prolog_ptr)
|
||||
patch_end[-2] = (u_int64_t)prolog_ptr;
|
||||
patch_end[-1] = calltype;
|
||||
}
|
||||
#endif
|
||||
|
||||
void MacroAssembler::push_call_clobbered_registers() {
|
||||
int step = 4 * wordSize;
|
||||
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
|
||||
@@ -4856,7 +4822,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
|
||||
// A very short string
|
||||
cmpw(cnt2, minCharsInWord);
|
||||
br(Assembler::LT, SHORT_STRING);
|
||||
br(Assembler::LE, SHORT_STRING);
|
||||
|
||||
// Compare longwords
|
||||
// load first parts of strings and finish initialization while loading
|
||||
@@ -4880,8 +4846,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
ldr(tmp2, Address(str2));
|
||||
cmp(cnt2, STUB_THRESHOLD);
|
||||
br(GE, STUB);
|
||||
subsw(cnt2, cnt2, 4);
|
||||
br(EQ, TAIL_CHECK);
|
||||
subw(cnt2, cnt2, 4);
|
||||
eor(vtmpZ, T16B, vtmpZ, vtmpZ);
|
||||
lea(str1, Address(str1, cnt2, Address::uxtw(str1_chr_shift)));
|
||||
lea(str2, Address(str2, cnt2, Address::uxtw(str2_chr_shift)));
|
||||
@@ -4897,8 +4862,7 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
ldrs(vtmp, Address(str2));
|
||||
cmp(cnt2, STUB_THRESHOLD);
|
||||
br(GE, STUB);
|
||||
subsw(cnt2, cnt2, 4);
|
||||
br(EQ, TAIL_CHECK);
|
||||
subw(cnt2, cnt2, 4);
|
||||
lea(str1, Address(str1, cnt2, Address::uxtw(str1_chr_shift)));
|
||||
eor(vtmpZ, T16B, vtmpZ, vtmpZ);
|
||||
lea(str2, Address(str2, cnt2, Address::uxtw(str2_chr_shift)));
|
||||
@@ -5589,7 +5553,6 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
|
||||
mov(result, len); // Save initial len
|
||||
|
||||
#ifndef BUILTIN_SIM
|
||||
cmp(len, 8); // handle shortest strings first
|
||||
br(LT, LOOP_1);
|
||||
cmp(len, 32);
|
||||
@@ -5609,12 +5572,12 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
orr(v5, T16B, Vtmp3, Vtmp4);
|
||||
uzp1(Vtmp1, T16B, Vtmp1, Vtmp2);
|
||||
uzp1(Vtmp3, T16B, Vtmp3, Vtmp4);
|
||||
stpq(Vtmp1, Vtmp3, dst);
|
||||
uzp2(v5, T16B, v4, v5); // high bytes
|
||||
umov(tmp2, v5, D, 1);
|
||||
fmovd(tmp1, v5);
|
||||
orr(tmp1, tmp1, tmp2);
|
||||
cbnz(tmp1, LOOP_8);
|
||||
stpq(Vtmp1, Vtmp3, dst);
|
||||
sub(len, len, 32);
|
||||
add(dst, dst, 32);
|
||||
add(src, src, 64);
|
||||
@@ -5632,7 +5595,6 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
prfm(Address(src, SoftwarePrefetchHintDistance));
|
||||
uzp1(v4, T16B, Vtmp1, Vtmp2);
|
||||
uzp1(v5, T16B, Vtmp3, Vtmp4);
|
||||
stpq(v4, v5, dst);
|
||||
orr(Vtmp1, T16B, Vtmp1, Vtmp2);
|
||||
orr(Vtmp3, T16B, Vtmp3, Vtmp4);
|
||||
uzp2(Vtmp1, T16B, Vtmp1, Vtmp3); // high bytes
|
||||
@@ -5640,6 +5602,7 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
fmovd(tmp1, Vtmp1);
|
||||
orr(tmp1, tmp1, tmp2);
|
||||
cbnz(tmp1, LOOP_8);
|
||||
stpq(v4, v5, dst);
|
||||
sub(len, len, 32);
|
||||
add(dst, dst, 32);
|
||||
add(src, src, 64);
|
||||
@@ -5654,9 +5617,9 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
ld1(Vtmp1, T8H, src);
|
||||
uzp1(Vtmp2, T16B, Vtmp1, Vtmp1); // low bytes
|
||||
uzp2(Vtmp3, T16B, Vtmp1, Vtmp1); // high bytes
|
||||
strd(Vtmp2, dst);
|
||||
fmovd(tmp1, Vtmp3);
|
||||
cbnz(tmp1, NEXT_1);
|
||||
strd(Vtmp2, dst);
|
||||
|
||||
sub(len, len, 8);
|
||||
add(dst, dst, 8);
|
||||
@@ -5665,13 +5628,13 @@ void MacroAssembler::encode_iso_array(Register src, Register dst,
|
||||
br(GE, NEXT_8);
|
||||
|
||||
BIND(LOOP_1);
|
||||
#endif
|
||||
|
||||
cbz(len, DONE);
|
||||
BIND(NEXT_1);
|
||||
ldrh(tmp1, Address(post(src, 2)));
|
||||
strb(tmp1, Address(post(dst, 1)));
|
||||
tst(tmp1, 0xff00);
|
||||
br(NE, SET_RESULT);
|
||||
strb(tmp1, Address(post(dst, 1)));
|
||||
subs(len, len, 1);
|
||||
br(GT, NEXT_1);
|
||||
|
||||
@@ -5804,7 +5767,7 @@ void MacroAssembler::get_thread(Register dst) {
|
||||
push(saved_regs, sp);
|
||||
|
||||
mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
|
||||
blrt(lr, 1, 0, 1);
|
||||
blr(lr);
|
||||
if (dst != c_rarg0) {
|
||||
mov(dst, c_rarg0);
|
||||
}
|
||||
|
||||
@@ -169,13 +169,10 @@ class MacroAssembler: public Assembler {
|
||||
|
||||
virtual void _call_Unimplemented(address call_site) {
|
||||
mov(rscratch2, call_site);
|
||||
haltsim();
|
||||
}
|
||||
|
||||
#define call_Unimplemented() _call_Unimplemented((address)__PRETTY_FUNCTION__)
|
||||
|
||||
virtual void notify(int type);
|
||||
|
||||
// aliases defined in AARCH64 spec
|
||||
|
||||
template<class T>
|
||||
@@ -781,6 +778,9 @@ public:
|
||||
|
||||
void resolve_jobject(Register value, Register thread, Register tmp);
|
||||
|
||||
// C 'boolean' to Java boolean: x == 0 ? 0 : 1
|
||||
void c2bool(Register x);
|
||||
|
||||
// oop manipulations
|
||||
void load_klass(Register dst, Register src);
|
||||
void store_klass(Register dst, Register src);
|
||||
@@ -1012,7 +1012,10 @@ public:
|
||||
enum operand_size size,
|
||||
bool acquire, bool release, bool weak,
|
||||
Register result);
|
||||
private:
|
||||
void compare_eq(Register rn, Register rm, enum operand_size size);
|
||||
|
||||
public:
|
||||
// Calls
|
||||
|
||||
address trampoline_call(Address entry, CodeBuffer *cbuf = NULL);
|
||||
@@ -1167,28 +1170,6 @@ public:
|
||||
//
|
||||
|
||||
public:
|
||||
// enum used for aarch64--x86 linkage to define return type of x86 function
|
||||
enum ret_type { ret_type_void, ret_type_integral, ret_type_float, ret_type_double};
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
void c_stub_prolog(int gp_arg_count, int fp_arg_count, int ret_type, address *prolog_ptr = NULL);
|
||||
#else
|
||||
void c_stub_prolog(int gp_arg_count, int fp_arg_count, int ret_type) { }
|
||||
#endif
|
||||
|
||||
// special version of call_VM_leaf_base needed for aarch64 simulator
|
||||
// where we need to specify both the gp and fp arg counts and the
|
||||
// return type so that the linkage routine from aarch64 to x86 and
|
||||
// back knows which aarch64 registers to copy to x86 registers and
|
||||
// which x86 result register to copy back to an aarch64 register
|
||||
|
||||
void call_VM_leaf_base1(
|
||||
address entry_point, // the entry point
|
||||
int number_of_gp_arguments, // the number of gp reg arguments to pass
|
||||
int number_of_fp_arguments, // the number of fp reg arguments to pass
|
||||
ret_type type, // the return type for the call
|
||||
Label* retaddr = NULL
|
||||
);
|
||||
|
||||
void ldr_constant(Register dest, const Address &const_addr) {
|
||||
if (NearCpool) {
|
||||
|
||||
@@ -105,8 +105,8 @@ void MethodHandles::jump_from_method_handle(MacroAssembler* _masm, Register meth
|
||||
// compiled code in threads for which the event is enabled. Check here for
|
||||
// interp_only_mode if these events CAN be enabled.
|
||||
|
||||
__ ldrb(rscratch1, Address(rthread, JavaThread::interp_only_mode_offset()));
|
||||
__ cbnz(rscratch1, run_compiled_code);
|
||||
__ ldrw(rscratch1, Address(rthread, JavaThread::interp_only_mode_offset()));
|
||||
__ cbzw(rscratch1, run_compiled_code);
|
||||
__ ldr(rscratch1, Address(method, Method::interpreter_entry_offset()));
|
||||
__ br(rscratch1);
|
||||
__ BIND(run_compiled_code);
|
||||
|
||||
@@ -50,10 +50,6 @@
|
||||
#include "jvmci/jvmciJavaClasses.hpp"
|
||||
#endif
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
#include "../../../../../../simulator/simulator.hpp"
|
||||
#endif
|
||||
|
||||
#define __ masm->
|
||||
|
||||
const int StackAlignmentInSlots = StackAlignmentInBytes / VMRegImpl::stack_slot_size;
|
||||
@@ -135,8 +131,7 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
int frame_size_in_words = frame_size_in_bytes / wordSize;
|
||||
*total_frame_words = frame_size_in_words;
|
||||
|
||||
// Save registers, fpu state, and flags.
|
||||
|
||||
// Save Integer and Float registers.
|
||||
__ enter();
|
||||
__ push_CPU_state(save_vectors);
|
||||
|
||||
@@ -343,7 +338,7 @@ static void patch_callers_callsite(MacroAssembler *masm) {
|
||||
__ mov(c_rarg0, rmethod);
|
||||
__ mov(c_rarg1, lr);
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite)));
|
||||
__ blrt(rscratch1, 2, 0, 0);
|
||||
__ blr(rscratch1);
|
||||
__ maybe_isb();
|
||||
|
||||
__ pop_CPU_state();
|
||||
@@ -663,71 +658,6 @@ void SharedRuntime::gen_i2c_adapter(MacroAssembler *masm,
|
||||
__ br(rscratch1);
|
||||
}
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
static void generate_i2c_adapter_name(char *result, int total_args_passed, const BasicType *sig_bt)
|
||||
{
|
||||
strcpy(result, "i2c(");
|
||||
int idx = 4;
|
||||
for (int i = 0; i < total_args_passed; i++) {
|
||||
switch(sig_bt[i]) {
|
||||
case T_BOOLEAN:
|
||||
result[idx++] = 'Z';
|
||||
break;
|
||||
case T_CHAR:
|
||||
result[idx++] = 'C';
|
||||
break;
|
||||
case T_FLOAT:
|
||||
result[idx++] = 'F';
|
||||
break;
|
||||
case T_DOUBLE:
|
||||
assert((i < (total_args_passed - 1)) && (sig_bt[i+1] == T_VOID),
|
||||
"double must be followed by void");
|
||||
i++;
|
||||
result[idx++] = 'D';
|
||||
break;
|
||||
case T_BYTE:
|
||||
result[idx++] = 'B';
|
||||
break;
|
||||
case T_SHORT:
|
||||
result[idx++] = 'S';
|
||||
break;
|
||||
case T_INT:
|
||||
result[idx++] = 'I';
|
||||
break;
|
||||
case T_LONG:
|
||||
assert((i < (total_args_passed - 1)) && (sig_bt[i+1] == T_VOID),
|
||||
"long must be followed by void");
|
||||
i++;
|
||||
result[idx++] = 'L';
|
||||
break;
|
||||
case T_OBJECT:
|
||||
result[idx++] = 'O';
|
||||
break;
|
||||
case T_ARRAY:
|
||||
result[idx++] = '[';
|
||||
break;
|
||||
case T_ADDRESS:
|
||||
result[idx++] = 'P';
|
||||
break;
|
||||
case T_NARROWOOP:
|
||||
result[idx++] = 'N';
|
||||
break;
|
||||
case T_METADATA:
|
||||
result[idx++] = 'M';
|
||||
break;
|
||||
case T_NARROWKLASS:
|
||||
result[idx++] = 'K';
|
||||
break;
|
||||
default:
|
||||
result[idx++] = '?';
|
||||
break;
|
||||
}
|
||||
}
|
||||
result[idx++] = ')';
|
||||
result[idx] = '\0';
|
||||
}
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm,
|
||||
int total_args_passed,
|
||||
@@ -736,20 +666,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
|
||||
const VMRegPair *regs,
|
||||
AdapterFingerPrint* fingerprint) {
|
||||
address i2c_entry = __ pc();
|
||||
#ifdef BUILTIN_SIM
|
||||
char *name = NULL;
|
||||
AArch64Simulator *sim = NULL;
|
||||
size_t len = 65536;
|
||||
if (NotifySimulator) {
|
||||
name = NEW_C_HEAP_ARRAY(char, len, mtInternal);
|
||||
}
|
||||
|
||||
if (name) {
|
||||
generate_i2c_adapter_name(name, total_args_passed, sig_bt);
|
||||
sim = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
|
||||
sim->notifyCompile(name, i2c_entry);
|
||||
}
|
||||
#endif
|
||||
gen_i2c_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs);
|
||||
|
||||
address c2i_unverified_entry = __ pc();
|
||||
@@ -791,15 +708,6 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
|
||||
|
||||
address c2i_entry = __ pc();
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
if (name) {
|
||||
name[0] = 'c';
|
||||
name[2] = 'i';
|
||||
sim->notifyCompile(name, c2i_entry);
|
||||
FREE_C_HEAP_ARRAY(char, name, mtInternal);
|
||||
}
|
||||
#endif
|
||||
|
||||
gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
|
||||
|
||||
__ flush();
|
||||
@@ -1201,8 +1109,7 @@ static void rt_call(MacroAssembler* masm, address dest, int gpargs, int fpargs,
|
||||
assert((unsigned)gpargs < 256, "eek!");
|
||||
assert((unsigned)fpargs < 32, "eek!");
|
||||
__ lea(rscratch1, RuntimeAddress(dest));
|
||||
if (UseBuiltinSim) __ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type);
|
||||
__ blrt(rscratch1, rscratch2);
|
||||
__ blr(rscratch1);
|
||||
__ maybe_isb();
|
||||
}
|
||||
}
|
||||
@@ -1323,24 +1230,6 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
BasicType* in_sig_bt,
|
||||
VMRegPair* in_regs,
|
||||
BasicType ret_type) {
|
||||
#ifdef BUILTIN_SIM
|
||||
if (NotifySimulator) {
|
||||
// Names are up to 65536 chars long. UTF8-coded strings are up to
|
||||
// 3 bytes per character. We concatenate three such strings.
|
||||
// Yes, I know this is ridiculous, but it's debug code and glibc
|
||||
// allocates large arrays very efficiently.
|
||||
size_t len = (65536 * 3) * 3;
|
||||
char *name = new char[len];
|
||||
|
||||
strncpy(name, method()->method_holder()->name()->as_utf8(), len);
|
||||
strncat(name, ".", len);
|
||||
strncat(name, method()->name()->as_utf8(), len);
|
||||
strncat(name, method()->signature()->as_utf8(), len);
|
||||
AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck)->notifyCompile(name, __ pc());
|
||||
delete[] name;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (method->is_method_handle_intrinsic()) {
|
||||
vmIntrinsics::ID iid = method->intrinsic_id();
|
||||
intptr_t start = (intptr_t)__ pc();
|
||||
@@ -1597,11 +1486,6 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
// Frame is now completed as far as size and linkage.
|
||||
int frame_complete = ((intptr_t)__ pc()) - start;
|
||||
|
||||
// record entry into native wrapper code
|
||||
if (NotifySimulator) {
|
||||
__ notify(Assembler::method_entry);
|
||||
}
|
||||
|
||||
// We use r20 as the oop handle for the receiver/klass
|
||||
// It is callee save so it survives the call to native
|
||||
|
||||
@@ -1922,7 +1806,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
// Unpack native results.
|
||||
switch (ret_type) {
|
||||
case T_BOOLEAN: __ ubfx(r0, r0, 0, 8); break;
|
||||
case T_BOOLEAN: __ c2bool(r0); break;
|
||||
case T_CHAR : __ ubfx(r0, r0, 0, 16); break;
|
||||
case T_BYTE : __ sbfx(r0, r0, 0, 8); break;
|
||||
case T_SHORT : __ sbfx(r0, r0, 0, 16); break;
|
||||
@@ -2072,11 +1956,6 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
__ cbnz(rscratch1, exception_pending);
|
||||
}
|
||||
|
||||
// record exit from native wrapper code
|
||||
if (NotifySimulator) {
|
||||
__ notify(Assembler::method_reentry);
|
||||
}
|
||||
|
||||
// We're done
|
||||
__ ret(lr);
|
||||
|
||||
@@ -2191,7 +2070,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
} else {
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans_and_transition)));
|
||||
}
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ blr(rscratch1);
|
||||
__ maybe_isb();
|
||||
// Restore any method result value
|
||||
restore_native_result(masm, ret_type, stack_slots);
|
||||
@@ -2288,14 +2167,6 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
OopMap* map = NULL;
|
||||
OopMapSet *oop_maps = new OopMapSet();
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
AArch64Simulator *simulator;
|
||||
if (NotifySimulator) {
|
||||
simulator = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
|
||||
simulator->notifyCompile(const_cast<char*>("SharedRuntime::deopt_blob"), __ pc());
|
||||
}
|
||||
#endif
|
||||
|
||||
// -------------
|
||||
// This code enters when returning to a de-optimized nmethod. A return
|
||||
// address has been pushed on the the stack, and return values are in
|
||||
@@ -2384,7 +2255,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
__ lea(rscratch1,
|
||||
RuntimeAddress(CAST_FROM_FN_PTR(address,
|
||||
Deoptimization::uncommon_trap)));
|
||||
__ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
oop_maps->add_gc_map( __ pc()-start, map->deep_copy());
|
||||
|
||||
@@ -2476,7 +2347,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ mov(c_rarg1, rcpool);
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info)));
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
|
||||
// Need to have an oopmap that tells fetch_unroll_info where to
|
||||
@@ -2616,7 +2487,7 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ movw(c_rarg1, rcpool); // second arg: exec_mode
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames)));
|
||||
__ blrt(rscratch1, 2, 0, 0);
|
||||
__ blr(rscratch1);
|
||||
|
||||
// Set an oopmap for the call site
|
||||
// Use the same PC we used for the last java frame
|
||||
@@ -2649,12 +2520,6 @@ void SharedRuntime::generate_deopt_blob() {
|
||||
_deopt_blob->set_implicit_exception_uncommon_trap_offset(implicit_exception_uncommon_trap_offset);
|
||||
}
|
||||
#endif
|
||||
#ifdef BUILTIN_SIM
|
||||
if (NotifySimulator) {
|
||||
unsigned char *base = _deopt_blob->code_begin();
|
||||
simulator->notifyRelocate(start, base - start);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
uint SharedRuntime::out_preserve_stack_slots() {
|
||||
@@ -2670,14 +2535,6 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
CodeBuffer buffer("uncommon_trap_blob", 2048, 1024);
|
||||
MacroAssembler* masm = new MacroAssembler(&buffer);
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
AArch64Simulator *simulator;
|
||||
if (NotifySimulator) {
|
||||
simulator = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
|
||||
simulator->notifyCompile(const_cast<char*>("SharedRuntime:uncommon_trap_blob"), __ pc());
|
||||
}
|
||||
#endif
|
||||
|
||||
assert(SimpleRuntimeFrame::framesize % 4 == 0, "sp not 16-byte aligned");
|
||||
|
||||
address start = __ pc();
|
||||
@@ -2716,7 +2573,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
__ lea(rscratch1,
|
||||
RuntimeAddress(CAST_FROM_FN_PTR(address,
|
||||
Deoptimization::uncommon_trap)));
|
||||
__ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
|
||||
// Set an oopmap for the call site
|
||||
@@ -2839,7 +2696,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ movw(c_rarg1, (unsigned)Deoptimization::Unpack_uncommon_trap);
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames)));
|
||||
__ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
|
||||
__ blr(rscratch1);
|
||||
|
||||
// Set an oopmap for the call site
|
||||
// Use the same PC we used for the last java frame
|
||||
@@ -2859,13 +2716,6 @@ void SharedRuntime::generate_uncommon_trap_blob() {
|
||||
|
||||
_uncommon_trap_blob = UncommonTrapBlob::create(&buffer, oop_maps,
|
||||
SimpleRuntimeFrame::framesize >> 1);
|
||||
|
||||
#ifdef BUILTIN_SIM
|
||||
if (NotifySimulator) {
|
||||
unsigned char *base = _deopt_blob->code_begin();
|
||||
simulator->notifyRelocate(start, base - start);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif // COMPILER2_OR_JVMCI
|
||||
|
||||
@@ -2890,7 +2740,7 @@ SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_t
|
||||
bool cause_return = (poll_type == POLL_AT_RETURN);
|
||||
bool save_vectors = (poll_type == POLL_AT_VECTOR_LOOP);
|
||||
|
||||
// Save registers, fpu state, and flags
|
||||
// Save Integer and Float registers.
|
||||
map = RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words, save_vectors);
|
||||
|
||||
// The following is basically a call_VM. However, we need the precise
|
||||
@@ -2915,7 +2765,7 @@ SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_t
|
||||
// Do the call
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ lea(rscratch1, RuntimeAddress(call_ptr));
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
|
||||
// Set an oopmap for the call site. This oopmap will map all
|
||||
@@ -3020,7 +2870,7 @@ RuntimeStub* SharedRuntime::generate_resolve_blob(address destination, const cha
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ lea(rscratch1, RuntimeAddress(destination));
|
||||
|
||||
__ blrt(rscratch1, 1, 0, 1);
|
||||
__ blr(rscratch1);
|
||||
__ bind(retaddr);
|
||||
}
|
||||
|
||||
@@ -3152,7 +3002,7 @@ void OptoRuntime::generate_exception_blob() {
|
||||
__ set_last_Java_frame(sp, noreg, the_pc, rscratch1);
|
||||
__ mov(c_rarg0, rthread);
|
||||
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, OptoRuntime::handle_exception_C)));
|
||||
__ blrt(rscratch1, 1, 0, MacroAssembler::ret_type_integral);
|
||||
__ blr(rscratch1);
|
||||
__ maybe_isb();
|
||||
|
||||
// Set an oopmap for the call site. This oopmap will only be used if we
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user