mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-26 19:29:42 +01:00
Compare commits
353 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b6652871d | ||
|
|
10069846d5 | ||
|
|
f06f9fe734 | ||
|
|
348e538d10 | ||
|
|
5b9ff9a29e | ||
|
|
62b04983f2 | ||
|
|
c40b9c8b9e | ||
|
|
46dfaeecc9 | ||
|
|
e03c9829e3 | ||
|
|
97c0e96a5a | ||
|
|
2b559a30df | ||
|
|
73b4a7e79e | ||
|
|
7d8aeaf7de | ||
|
|
94390c3f1e | ||
|
|
78d509ac0f | ||
|
|
0b6238990b | ||
|
|
c0e4afcddd | ||
|
|
be6a2c4f0c | ||
|
|
0b8ff1a7e6 | ||
|
|
63134e091b | ||
|
|
50ab4690de | ||
|
|
c790bf3ebc | ||
|
|
746affd753 | ||
|
|
e766df4bcc | ||
|
|
847705dc96 | ||
|
|
f10e7aca70 | ||
|
|
9ee1550815 | ||
|
|
1de6eed0e1 | ||
|
|
78510922c5 | ||
|
|
41de3a4cb1 | ||
|
|
304eb7f919 | ||
|
|
442bb7eecc | ||
|
|
09941119e1 | ||
|
|
e3aaff5db4 | ||
|
|
99242748ee | ||
|
|
c1f4b0ca72 | ||
|
|
553e5ca631 | ||
|
|
aee4b48d20 | ||
|
|
bef85f8cea | ||
|
|
0161050077 | ||
|
|
a7c8b0b535 | ||
|
|
985a1c8426 | ||
|
|
2106b67380 | ||
|
|
58493967cd | ||
|
|
2c82032f4c | ||
|
|
c571f300c6 | ||
|
|
9d8b89962f | ||
|
|
af014f4c2d | ||
|
|
b1c1b24890 | ||
|
|
0c2b6e1c04 | ||
|
|
44d8b28b0b | ||
|
|
bd43a4298c | ||
|
|
0ed7deabaa | ||
|
|
56629e4c90 | ||
|
|
11732c2469 | ||
|
|
c356f37efc | ||
|
|
d987707b0d | ||
|
|
29a0e37cb2 | ||
|
|
9397a10682 | ||
|
|
5f0af9b0f7 | ||
|
|
2af72dec9c | ||
|
|
73802596bf | ||
|
|
10a677632d | ||
|
|
7dc0618259 | ||
|
|
3f4e205ed7 | ||
|
|
a9320f9a7c | ||
|
|
f2157fc2a3 | ||
|
|
10a904bd65 | ||
|
|
478314786d | ||
|
|
87b4f75c81 | ||
|
|
3cb8a371cf | ||
|
|
2be0650a3c | ||
|
|
38f59e7a39 | ||
|
|
9cae35c8fe | ||
|
|
d56539e2ef | ||
|
|
894c226ce0 | ||
|
|
8ad2c4c130 | ||
|
|
513fce6d1f | ||
|
|
6ce327bba0 | ||
|
|
a5182b1bc8 | ||
|
|
81e42d8949 | ||
|
|
534de1d9d3 | ||
|
|
d26d470f41 | ||
|
|
6ecddfb581 | ||
|
|
382093e49b | ||
|
|
de1b27c174 | ||
|
|
d0445b53b8 | ||
|
|
7c49be5fbf | ||
|
|
14bd84f9b6 | ||
|
|
4775d5b564 | ||
|
|
24d1124689 | ||
|
|
dc80bc7a42 | ||
|
|
913c60c2e3 | ||
|
|
20e6a76d22 | ||
|
|
67fa05a1d2 | ||
|
|
b101e233a0 | ||
|
|
dcecd60677 | ||
|
|
085a4aadcb | ||
|
|
f25553eb0b | ||
|
|
7debe89a72 | ||
|
|
7ac0ac677b | ||
|
|
c00a394007 | ||
|
|
98ec465085 | ||
|
|
6dd3a81c0b | ||
|
|
f8d939adaf | ||
|
|
2fbb8399e2 | ||
|
|
6f149720d0 | ||
|
|
f777d886f5 | ||
|
|
ce51e61fb4 | ||
|
|
79f7442e0f | ||
|
|
10e00dd573 | ||
|
|
797483db7f | ||
|
|
9263119a35 | ||
|
|
d121ff949d | ||
|
|
a06c43399c | ||
|
|
6acc706e26 | ||
|
|
94d5941cc1 | ||
|
|
e05c7d817c | ||
|
|
7f8de5ab98 | ||
|
|
5921410376 | ||
|
|
c0452cc7c5 | ||
|
|
e8f3d2efca | ||
|
|
e6d2594fea | ||
|
|
24e40f463e | ||
|
|
66c9c759a3 | ||
|
|
4f90bf87af | ||
|
|
86961069ef | ||
|
|
32d1f9a117 | ||
|
|
2da1b23e0a | ||
|
|
10fc5ddab4 | ||
|
|
6589997f4f | ||
|
|
b335abd5ba | ||
|
|
22a7c3d601 | ||
|
|
dfaaa4bad2 | ||
|
|
6cf1b086b9 | ||
|
|
3d7f44bda6 | ||
|
|
4c1cb2b327 | ||
|
|
94e531fafc | ||
|
|
34482f2d45 | ||
|
|
ba756da969 | ||
|
|
dded997fe2 | ||
|
|
e4cba90584 | ||
|
|
1ad4bb39b8 | ||
|
|
d9e062c03e | ||
|
|
30be19ce1b | ||
|
|
5f619d4a4d | ||
|
|
c1e592568f | ||
|
|
ae7be26205 | ||
|
|
6ab515ca7f | ||
|
|
7908ea4a00 | ||
|
|
87a402cce6 | ||
|
|
da219becdc | ||
|
|
54d6fe8a30 | ||
|
|
8b674ce700 | ||
|
|
fd882abe71 | ||
|
|
cee0a5a21b | ||
|
|
08d859c5e1 | ||
|
|
96f470b00d | ||
|
|
98fd06a58d | ||
|
|
2d7662cef9 | ||
|
|
bb5b8a47d2 | ||
|
|
ba0b40f364 | ||
|
|
d71e96da19 | ||
|
|
91cff3e686 | ||
|
|
da5cfa80d9 | ||
|
|
739a0d94ed | ||
|
|
e4a59bd712 | ||
|
|
6ebab37627 | ||
|
|
2437c2b79e | ||
|
|
9c64f005d4 | ||
|
|
13ff94ac5d | ||
|
|
9e3413ee97 | ||
|
|
efd9998e42 | ||
|
|
6dce86ebc4 | ||
|
|
6a5e116ae0 | ||
|
|
1aba60c958 | ||
|
|
ccc74a719c | ||
|
|
1d46c49052 | ||
|
|
7fe093cf22 | ||
|
|
02d123c56a | ||
|
|
fc9d253d07 | ||
|
|
a57acf85d5 | ||
|
|
e1ef260c8d | ||
|
|
5cb8539ef7 | ||
|
|
c2832bdca3 | ||
|
|
341d176e43 | ||
|
|
094ac647d8 | ||
|
|
f2ac092d37 | ||
|
|
fae5f81fdd | ||
|
|
0c621e96a6 | ||
|
|
b845d916f0 | ||
|
|
521c6e6b50 | ||
|
|
c783454707 | ||
|
|
cc127b2513 | ||
|
|
fdc81b4580 | ||
|
|
8fe37f1355 | ||
|
|
7c7689c284 | ||
|
|
7149dc2118 | ||
|
|
aba4cf9326 | ||
|
|
28110a97bd | ||
|
|
42d0b2714f | ||
|
|
659a86e3a4 | ||
|
|
cbb3a98a03 | ||
|
|
0534cff8c3 | ||
|
|
1e6d3bd27a | ||
|
|
ea8bf3a792 | ||
|
|
4a4ca84e39 | ||
|
|
29c749a870 | ||
|
|
65c673e873 | ||
|
|
39a5127d8f | ||
|
|
14bf91f59b | ||
|
|
ece7a22aed | ||
|
|
5edf0a5a18 | ||
|
|
1c12fa294a | ||
|
|
03c19f4da7 | ||
|
|
a2dd176afa | ||
|
|
d6f2d66235 | ||
|
|
7c718843a3 | ||
|
|
73b7915762 | ||
|
|
e29237b197 | ||
|
|
60fb3522a9 | ||
|
|
24a1d8e195 | ||
|
|
d71b35062c | ||
|
|
78895cf47f | ||
|
|
8c44afebf9 | ||
|
|
e228d72cfb | ||
|
|
51719b3e8c | ||
|
|
24960a2c2a | ||
|
|
88e7487067 | ||
|
|
a8922e6e16 | ||
|
|
a7083a3b57 | ||
|
|
05b6cf6205 | ||
|
|
57ee4e4733 | ||
|
|
a5d280c81f | ||
|
|
9165fafc08 | ||
|
|
30c9dc3799 | ||
|
|
3a97a8e4ab | ||
|
|
ba8b830efb | ||
|
|
4ec99bd75c | ||
|
|
12ff105a3d | ||
|
|
428e88994d | ||
|
|
76351ec45e | ||
|
|
50b24a147b | ||
|
|
e00b5ee977 | ||
|
|
ddda860f42 | ||
|
|
18580ed527 | ||
|
|
1c2bf33db2 | ||
|
|
45cf0422f9 | ||
|
|
515e38030d | ||
|
|
470c3bd1b5 | ||
|
|
ee298f5287 | ||
|
|
a7fd723e43 | ||
|
|
7e6db54f77 | ||
|
|
88ead5d9e3 | ||
|
|
eeef67a335 | ||
|
|
f1dd523ba8 | ||
|
|
84ff4eab21 | ||
|
|
0e7f9ce4ca | ||
|
|
1714d7b627 | ||
|
|
95be4351d4 | ||
|
|
8e6710213e | ||
|
|
1fe160783a | ||
|
|
a84736ebcc | ||
|
|
f02e31a440 | ||
|
|
809ae5fedc | ||
|
|
8a58a000e3 | ||
|
|
bfc6ed7f6e | ||
|
|
3dbd4af7ae | ||
|
|
2d9fb9e7b8 | ||
|
|
f37901ffb0 | ||
|
|
e15dad041c | ||
|
|
580a370d19 | ||
|
|
7642ffdd5a | ||
|
|
d8443a1cbe | ||
|
|
0718402ff5 | ||
|
|
4281b031e6 | ||
|
|
d2ee9bd66e | ||
|
|
bf7d47e3bf | ||
|
|
4b519165aa | ||
|
|
ca1ab64827 | ||
|
|
c18cb04d88 | ||
|
|
3b7443c997 | ||
|
|
5fead08584 | ||
|
|
598cf7049c | ||
|
|
8a8349defe | ||
|
|
bc4b8e593c | ||
|
|
b67de1a1e3 | ||
|
|
370727ad41 | ||
|
|
48cc9e5374 | ||
|
|
510fab2c07 | ||
|
|
aea9725329 | ||
|
|
1bc60057f4 | ||
|
|
81649c99de | ||
|
|
d2cadcef11 | ||
|
|
ac4e1f5be0 | ||
|
|
5d545329ad | ||
|
|
9e8db31e71 | ||
|
|
f8d7b9e0b9 | ||
|
|
9c6f6f2a12 | ||
|
|
3e8f36e723 | ||
|
|
db476a1787 | ||
|
|
740e6c6534 | ||
|
|
f317336a65 | ||
|
|
49c7d75922 | ||
|
|
06e1ffdccb | ||
|
|
9398632bdb | ||
|
|
c762636c1a | ||
|
|
8e9b28f521 | ||
|
|
00c3e8774a | ||
|
|
cfd633b9fe | ||
|
|
79371ddf34 | ||
|
|
73ac0cc856 | ||
|
|
9718b44236 | ||
|
|
3d9a4eef55 | ||
|
|
6ef822dd72 | ||
|
|
20750eaf89 | ||
|
|
072d69f050 | ||
|
|
4754d939e5 | ||
|
|
9c5d643170 | ||
|
|
c811c295c2 | ||
|
|
20fe78b650 | ||
|
|
9d86b4d235 | ||
|
|
0a9f16dc90 | ||
|
|
53489fab27 | ||
|
|
92b00d50b5 | ||
|
|
2e0b486c59 | ||
|
|
9b7113a6cf | ||
|
|
8dc3fcd392 | ||
|
|
4deb3bbe61 | ||
|
|
eda8e4d50e | ||
|
|
84d4918aa2 | ||
|
|
c8d46c2c23 | ||
|
|
f8c0077b2f | ||
|
|
1437ff8717 | ||
|
|
93cbab2f2d | ||
|
|
dd055b5970 | ||
|
|
2c8cdb221b | ||
|
|
d34d6528fe | ||
|
|
1d525a2d2f | ||
|
|
3038fc95c6 | ||
|
|
10a30e2135 | ||
|
|
b46c4429b4 | ||
|
|
e51648f368 | ||
|
|
235dbdc3f0 | ||
|
|
c8f68f23d9 | ||
|
|
5cc0870756 | ||
|
|
a50a5f1bea | ||
|
|
95a47810d5 | ||
|
|
9f835d753e | ||
|
|
387470fc07 | ||
|
|
72a9541a6c | ||
|
|
6a85e88e94 | ||
|
|
715e8d345a |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -24,3 +24,4 @@ test/nashorn/lib
|
||||
NashornProfile.txt
|
||||
**/JTreport/**
|
||||
**/JTwork/**
|
||||
/jb/project/java-gradle/.idea/workspace.xml
|
||||
|
||||
10
.hgtags
10
.hgtags
@@ -613,3 +613,13 @@ e872676174c7f171a9864becba83cb783cfec9d0 jdk-11.0.9+9
|
||||
4fd46d208f0a4b55924af8e0c2fb6bcf46e18ec6 jdk-11.0.9.1+0
|
||||
27723943c0dd65a191cbefe031cec001521e4b13 jdk-11.0.9.1+1
|
||||
31affc22b3b5f5d43783ffadf57f22848bad9db8 jdk-11.0.9.1-ga
|
||||
f3168de4eb0dd74bf8e81537f62742bde5e412c3 jdk-11.0.10+1
|
||||
a35aa07b57bab3690224e3af939ee085d50eb476 jdk-11.0.10+2
|
||||
bca12c00a776f8cee7a0eeaf788499b9eab9cf9d jdk-11.0.10+3
|
||||
9504fa6f98f5aad0aa1ac36d5bff3260a32020c8 jdk-11.0.10+4
|
||||
5f5c3544ccb4d0bbc638e665524b292860dd9515 jdk-11.0.10+5
|
||||
4b9bc2a1dde0631958393125997855382325964d jdk-11.0.10+6
|
||||
c45f74d45787a857d35b5a66c9b0304c91a9c5d0 jdk-11.0.10+7
|
||||
43428f69099f6f87f6e1922deacbf13e1adb751f jdk-11.0.10+8
|
||||
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10+9
|
||||
8b3498547395ee80a6e731078056b2aeb3e3c5e8 jdk-11.0.10-ga
|
||||
|
||||
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
@@ -8,7 +8,7 @@
|
||||
<option name="linkRegexp" value="http://youtrack.jetbrains.com/issue/$0" />
|
||||
</IssueNavigationLink>
|
||||
<IssueNavigationLink>
|
||||
<option name="issueRegexp" value="(\d+)\:" />
|
||||
<option name="issueRegexp" value="^(\d+)\:" />
|
||||
<option name="linkRegexp" value="https://bugs.openjdk.java.net/browse/JDK-$1" />
|
||||
</IssueNavigationLink>
|
||||
</list>
|
||||
|
||||
29
README.md
29
README.md
@@ -13,7 +13,7 @@
|
||||
[github.com/JetBrains/JetBrainsRuntime](https://github.com/JetBrains/JetBrainsRuntime)
|
||||
|
||||
## Getting sources
|
||||
__OSX, Linux:__
|
||||
__macOS, Linux:__
|
||||
```
|
||||
git config --global core.autocrlf input
|
||||
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||
@@ -25,12 +25,12 @@ git config --global core.autocrlf false
|
||||
git clone git@github.com:JetBrains/JetBrainsRuntime.git
|
||||
```
|
||||
|
||||
# Configure Local Build Environment
|
||||
# Configure local build environment
|
||||
[OpenJDK build docs](http://hg.openjdk.java.net/jdk/jdk11/raw-file/tip/doc/building.html)
|
||||
Tip for all platforms: run ./configure and check output.
|
||||
Tip for all platforms: run `./configure` and check output.
|
||||
Usually, it has meaningful advice how to solve your problem.
|
||||
|
||||
## Linux (docker)
|
||||
## Linux (Docker)
|
||||
```
|
||||
$ cd jb/project/docker
|
||||
$ docker build .
|
||||
@@ -42,7 +42,6 @@ $ docker run -v `pwd`../../../../:/JetBrainsRuntime -it 942ea9900054
|
||||
# cd /JetBrainsRuntime
|
||||
# sh ./configure
|
||||
# make images CONF=linux-x86_64-normal-server-release
|
||||
|
||||
```
|
||||
|
||||
## Linux (Ubuntu 18.10 desktop)
|
||||
@@ -56,35 +55,33 @@ $ make images
|
||||
|
||||
## Windows
|
||||
Install:
|
||||
|
||||
* [Cygwin x64](http://www.cygwin.com/)
|
||||
Required packages: autoconf, binutils, cpio, diffutils, file, gawk, gcc-core, make, m4, unzip, zip.
|
||||
**Install them while installing cygwin**.
|
||||
**Install them while installing Cygwin**.
|
||||
* Visual Studio compiler toolset [Download](https://visualstudio.microsoft.com/downloads/)
|
||||
Visual Studio 2015 has support by default.
|
||||
**Install with desktop development kit, it includes Windows SDK and compilers**.
|
||||
* [Java 11](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||
If you have problems while configuring [read java tips on cygwin](http://horstmann.com/articles/cygwin-tips.html)
|
||||
If you have problems while configuring [read Java tips on Cygwin](http://horstmann.com/articles/cygwin-tips.html)
|
||||
|
||||
From command line
|
||||
From command line:
|
||||
```
|
||||
"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
||||
"c:\Program_Files\cygwin64\bin\mintty.exe" /bin/bash -l
|
||||
```
|
||||
First command will set env vars, the second will run cygwin shell with proper environment.
|
||||
In cygwin shell
|
||||
First command will set env vars, the second will run Cygwin shell with proper environment.
|
||||
|
||||
In Cygwin shell:
|
||||
```
|
||||
cd JetBrainsRuntime
|
||||
bash configure --enable-option-checking=fatal --with-toolchain-version=2015 --with-boot-jdk="/cygdrive/c/Program Files/Java/jdk-11.0.5" --disable-warnings-as-errors
|
||||
make images
|
||||
```
|
||||
|
||||
## OSX
|
||||
|
||||
install Xcode console tools, autoconf (via homebrew)
|
||||
|
||||
run
|
||||
## macOS
|
||||
Install Xcode command line developer tools, autoconf (via Homebrew).
|
||||
|
||||
Run:
|
||||
```
|
||||
sh ./configure --prefix=$(pwd)/build --disable-warnings-as-errors
|
||||
make images
|
||||
|
||||
@@ -68,10 +68,12 @@
|
||||
</ul></li>
|
||||
<li><a href="#running-tests">Running Tests</a></li>
|
||||
<li><a href="#cross-compiling">Cross-compiling</a><ul>
|
||||
<li><a href="#cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</a></li>
|
||||
<li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
|
||||
<li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
|
||||
<li><a href="#toolchain-considerations">Toolchain Considerations</a></li>
|
||||
<li><a href="#native-libraries">Native Libraries</a></li>
|
||||
<li><a href="#creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</a></li>
|
||||
<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
|
||||
<li><a href="#verifying-the-build">Verifying the Build</a></li>
|
||||
</ul></li>
|
||||
@@ -565,6 +567,47 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
||||
<p>This requires a more complex setup and build procedure. This section assumes you are familiar with cross-compiling in general, and will only deal with the particularities of cross-compiling the JDK. If you are new to cross-compiling, please see the <a href="https://en.wikipedia.org/wiki/Cross_compiler#External_links">external links at Wikipedia</a> for a good start on reading materials.</p>
|
||||
<p>Cross-compiling the JDK requires you to be able to build both for the build platform and for the target platform. The reason for the former is that we need to build and execute tools during the build process, both native tools and Java tools.</p>
|
||||
<p>If all you want to do is to compile a 32-bit version, for the same OS, on a 64-bit machine, consider using <code>--with-target-bits=32</code> instead of doing a full-blown cross-compilation. (While this surely is possible, it's a lot more work and will take much longer to build.)</p>
|
||||
<h3 id="cross-compiling-the-easy-way-with-openjdk-devkits">Cross compiling the easy way with OpenJDK devkits</h3>
|
||||
<p>The OpenJDK build system provides out-of-the box support for creating and using so called devkits. A <code>devkit</code> is basically a collection of a cross-compiling toolchain and a sysroot environment which can easily be used together with the <code>--with-devkit</code> configure option to cross compile the OpenJDK. On Linux/x86_64, the following command:</p>
|
||||
<pre><code>bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make</code></pre>
|
||||
<p>will configure and build OpenJDK for Linux/ppc64 assuming that <code><devkit-path></code> points to a Linux/x86_64 to Linux/ppc64 devkit.</p>
|
||||
<p>Devkits can be created from the <code>make/devkit</code> directory by executing:</p>
|
||||
<pre><code>make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]</code></pre>
|
||||
<p>where <code>TARGETS</code> contains one or more <code>TARGET_TRIPLET</code>s of the form described in <a href="https://sourceware.org/autobook/autobook/autobook_17.html">section 3.4 of the GNU Autobook</a>. If no targets are given, a native toolchain for the current platform will be created. Currently, at least the following targets are known to work:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th style="text-align: left;">Supported devkit targets</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">x86_64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">ppc64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">ppc64le-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><code>BASE_OS</code> must be one of "OEL6" for Oracle Enterprise Linux 6 or "Fedora" (if not specified "OEL6" will be the default). If the base OS is "Fedora" the corresponding Fedora release can be specified with the help of the <code>BASE_OS_VERSION</code> option (with "27" as default version). If the build is successful, the new devkits can be found in the <code>build/devkit/result</code> subdirectory:</p>
|
||||
<pre><code>cd make/devkit
|
||||
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
||||
ls -1 ../../build/devkit/result/
|
||||
x86_64-linux-gnu-to-aarch64-linux-gnu
|
||||
x86_64-linux-gnu-to-ppc64le-linux-gnu</code></pre>
|
||||
<p>Notice that devkits are not only useful for targeting different build platforms. Because they contain the full build dependencies for a system (i.e. compiler and root file system), they can easily be used to build well-known, reliable and reproducible build environments. You can for example create and use a devkit with GCC 7.3 and a Fedora 12 sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't have GCC 7.3 by default) to produce OpenJDK binaries which will run on all Linux systems with runtime libraries newer than the ones from Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).</p>
|
||||
<h3 id="boot-jdk-and-build-jdk">Boot JDK and Build JDK</h3>
|
||||
<p>When cross-compiling, make sure you use a boot JDK that runs on the <em>build</em> system, and not on the <em>target</em> system.</p>
|
||||
<p>To be able to build, we need a "Build JDK", which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
|
||||
@@ -634,6 +677,72 @@ cp: cannot stat `arm-linux-gnueabihf/libSM.so': No such file or directory
|
||||
cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory</code></pre></li>
|
||||
<li><p>If the X11 libraries are not properly detected by <code>configure</code>, you can point them out by <code>--with-x</code>.</p></li>
|
||||
</ul>
|
||||
<h3 id="creating-and-using-sysroots-with-qemu-deboostrap">Creating And Using Sysroots With qemu-deboostrap</h3>
|
||||
<p>Fortunately, you can create sysroots for foreign architectures with tools provided by your OS. On Debian/Ubuntu systems, one could use <code>qemu-deboostrap</code> to create the <em>target</em> system chroot, which would have the native libraries and headers specific to that <em>target</em> system. After that, we can use the cross-compiler on the <em>build</em> system, pointing into chroot to get the build dependencies right. This allows building for foreign architectures with native compilation speed.</p>
|
||||
<p>For example, cross-compiling to AArch64 from x86_64 could be done like this:</p>
|
||||
<ul>
|
||||
<li><p>Install cross-compiler on the <em>build</em> system:</p>
|
||||
<pre><code>apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu</code></pre></li>
|
||||
<li><p>Create chroot on the <em>build</em> system, configuring it for <em>target</em> system:</p>
|
||||
<pre><code>sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/</code></pre></li>
|
||||
<li><p>Configure and build with newly created chroot as sysroot/toolchain-path:</p>
|
||||
<pre><code>CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
||||
</ul>
|
||||
<p>The build does not create new files in that chroot, so it can be reused for multiple builds without additional cleanup.</p>
|
||||
<p>Architectures that are known to successfully cross-compile like this are:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th style="text-align: left;">Target</th>
|
||||
<th style="text-align: left;"><code>CC</code></th>
|
||||
<th style="text-align: left;"><code>CXX</code></th>
|
||||
<th style="text-align: left;"><code>--arch=...</code></th>
|
||||
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">x86</td>
|
||||
<td style="text-align: left;">default</td>
|
||||
<td style="text-align: left;">default</td>
|
||||
<td style="text-align: left;">i386</td>
|
||||
<td style="text-align: left;">i386-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">armhf</td>
|
||||
<td style="text-align: left;">gcc-arm-linux-gnueabihf</td>
|
||||
<td style="text-align: left;">g++-arm-linux-gnueabihf</td>
|
||||
<td style="text-align: left;">armhf</td>
|
||||
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">aarch64</td>
|
||||
<td style="text-align: left;">gcc-aarch64-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-aarch64-linux-gnu</td>
|
||||
<td style="text-align: left;">arm64</td>
|
||||
<td style="text-align: left;">aarch64-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">ppc64el</td>
|
||||
<td style="text-align: left;">gcc-powerpc64le-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-powerpc64le-linux-gnu</td>
|
||||
<td style="text-align: left;">ppc64el</td>
|
||||
<td style="text-align: left;">powerpc64le-linux-gnu</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">s390x</td>
|
||||
<td style="text-align: left;">gcc-s390x-linux-gnu</td>
|
||||
<td style="text-align: left;">g++-s390x-linux-gnu</td>
|
||||
<td style="text-align: left;">s390x</td>
|
||||
<td style="text-align: left;">s390x-linux-gnu</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Additional architectures might be supported by Debian/Ubuntu Ports.</p>
|
||||
<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
|
||||
<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported by the JDK.</p>
|
||||
<p>The JDK contains two different ports for the aarch64 platform, one is the original aarch64 port from the <a href="http://openjdk.java.net/projects/aarch64-port">AArch64 Port Project</a> and one is a 64-bit version of the Oracle contributed ARM port. When targeting aarch64, by the default the original aarch64 port is used. To select the Oracle ARM 64 port, use <code>--with-cpu-port=arm64</code>. Also set the corresponding value (<code>aarch64</code> or <code>arm64</code>) to --with-abi-profile, to ensure a consistent build.</p>
|
||||
@@ -743,7 +852,12 @@ cannot create ... Permission denied
|
||||
spawn failed</code></pre>
|
||||
<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</p>
|
||||
<h3 id="getting-help">Getting Help</h3>
|
||||
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
|
||||
<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <script type="text/javascript">
|
||||
<!--
|
||||
h='openjdk.java.net';a='@';n='build-dev';e=n+a+h;
|
||||
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
|
||||
// -->
|
||||
</script><noscript>build-dev at openjdk dot java dot net</noscript>. Please include the relevant parts of the configure and/or build log.</p>
|
||||
<p>If you need general help or advice about developing for the JDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
|
||||
<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
|
||||
<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
|
||||
|
||||
103
doc/building.md
103
doc/building.md
@@ -875,6 +875,64 @@ If all you want to do is to compile a 32-bit version, for the same OS, on a
|
||||
full-blown cross-compilation. (While this surely is possible, it's a lot more
|
||||
work and will take much longer to build.)
|
||||
|
||||
### Cross compiling the easy way with OpenJDK devkits
|
||||
|
||||
The OpenJDK build system provides out-of-the box support for creating and using
|
||||
so called devkits. A `devkit` is basically a collection of a cross-compiling
|
||||
toolchain and a sysroot environment which can easily be used together with the
|
||||
`--with-devkit` configure option to cross compile the OpenJDK. On Linux/x86_64,
|
||||
the following command:
|
||||
```
|
||||
bash configure --with-devkit=<devkit-path> --openjdk-target=ppc64-linux-gnu && make
|
||||
```
|
||||
|
||||
will configure and build OpenJDK for Linux/ppc64 assuming that `<devkit-path>`
|
||||
points to a Linux/x86_64 to Linux/ppc64 devkit.
|
||||
|
||||
Devkits can be created from the `make/devkit` directory by executing:
|
||||
```
|
||||
make [ TARGETS="<TARGET_TRIPLET>+" ] [ BASE_OS=<OS> ] [ BASE_OS_VERSION=<VER> ]
|
||||
```
|
||||
|
||||
where `TARGETS` contains one or more `TARGET_TRIPLET`s of the form
|
||||
described in [section 3.4 of the GNU Autobook](
|
||||
https://sourceware.org/autobook/autobook/autobook_17.html). If no
|
||||
targets are given, a native toolchain for the current platform will be
|
||||
created. Currently, at least the following targets are known to work:
|
||||
|
||||
Supported devkit targets
|
||||
------------------------
|
||||
x86_64-linux-gnu
|
||||
aarch64-linux-gnu
|
||||
arm-linux-gnueabihf
|
||||
ppc64-linux-gnu
|
||||
ppc64le-linux-gnu
|
||||
s390x-linux-gnu
|
||||
|
||||
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or
|
||||
"Fedora" (if not specified "OEL6" will be the default). If the base OS
|
||||
is "Fedora" the corresponding Fedora release can be specified with the
|
||||
help of the `BASE_OS_VERSION` option (with "27" as default version).
|
||||
If the build is successful, the new devkits can be found in the
|
||||
`build/devkit/result` subdirectory:
|
||||
```
|
||||
cd make/devkit
|
||||
make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
|
||||
ls -1 ../../build/devkit/result/
|
||||
x86_64-linux-gnu-to-aarch64-linux-gnu
|
||||
x86_64-linux-gnu-to-ppc64le-linux-gnu
|
||||
```
|
||||
|
||||
Notice that devkits are not only useful for targeting different build
|
||||
platforms. Because they contain the full build dependencies for a
|
||||
system (i.e. compiler and root file system), they can easily be used
|
||||
to build well-known, reliable and reproducible build environments. You
|
||||
can for example create and use a devkit with GCC 7.3 and a Fedora 12
|
||||
sysroot environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't
|
||||
have GCC 7.3 by default) to produce OpenJDK binaries which will run on
|
||||
all Linux systems with runtime libraries newer than the ones from
|
||||
Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6).
|
||||
|
||||
### Boot JDK and Build JDK
|
||||
|
||||
When cross-compiling, make sure you use a boot JDK that runs on the *build*
|
||||
@@ -1018,6 +1076,51 @@ Note that X11 is needed even if you only want to build a headless JDK.
|
||||
* If the X11 libraries are not properly detected by `configure`, you can
|
||||
point them out by `--with-x`.
|
||||
|
||||
### Creating And Using Sysroots With qemu-deboostrap
|
||||
|
||||
Fortunately, you can create sysroots for foreign architectures with tools
|
||||
provided by your OS. On Debian/Ubuntu systems, one could use `qemu-deboostrap` to
|
||||
create the *target* system chroot, which would have the native libraries and headers
|
||||
specific to that *target* system. After that, we can use the cross-compiler on the *build*
|
||||
system, pointing into chroot to get the build dependencies right. This allows building
|
||||
for foreign architectures with native compilation speed.
|
||||
|
||||
For example, cross-compiling to AArch64 from x86_64 could be done like this:
|
||||
|
||||
* Install cross-compiler on the *build* system:
|
||||
```
|
||||
apt install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
|
||||
```
|
||||
|
||||
* Create chroot on the *build* system, configuring it for *target* system:
|
||||
```
|
||||
sudo qemu-debootstrap --arch=arm64 --verbose \
|
||||
--include=fakeroot,build-essential,libx11-dev,libxext-dev,libxrender-dev,libxtst-dev,libxt-dev,libcups2-dev,libfontconfig1-dev,libasound2-dev,libfreetype6-dev,libpng12-dev \
|
||||
--resolve-deps jessie /chroots/arm64 http://httpredir.debian.org/debian/
|
||||
```
|
||||
|
||||
* Configure and build with newly created chroot as sysroot/toolchain-path:
|
||||
```
|
||||
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure --openjdk-target=aarch64-linux-gnu --with-sysroot=/chroots/arm64/ --with-toolchain-path=/chroots/arm64/
|
||||
make images
|
||||
ls build/linux-aarch64-normal-server-release/
|
||||
```
|
||||
|
||||
The build does not create new files in that chroot, so it can be reused for multiple builds
|
||||
without additional cleanup.
|
||||
|
||||
Architectures that are known to successfully cross-compile like this are:
|
||||
|
||||
Target `CC` `CXX` `--arch=...` `--openjdk-target=...`
|
||||
------------ ------------------------- --------------------------- ------------ ----------------------
|
||||
x86 default default i386 i386-linux-gnu
|
||||
armhf gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf armhf arm-linux-gnueabihf
|
||||
aarch64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu arm64 aarch64-linux-gnu
|
||||
ppc64el gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu ppc64el powerpc64le-linux-gnu
|
||||
s390x gcc-s390x-linux-gnu g++-s390x-linux-gnu s390x s390x-linux-gnu
|
||||
|
||||
Additional architectures might be supported by Debian/Ubuntu Ports.
|
||||
|
||||
### Building for ARM/aarch64
|
||||
|
||||
A common cross-compilation target is the ARM CPU. When building for ARM, it is
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
@@ -32,6 +31,7 @@ sh configure \
|
||||
--with-debug-level=release \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to be built; possible values:
|
||||
# jcef - the release bundles with jcef
|
||||
# jfx - the release bundles with javafx
|
||||
# jcef_jfx - the release bundles with jcef and javafx
|
||||
# dcevm - the release bundles with dcevm patches
|
||||
# nomod - the release bundles without any additional modules (jcef)
|
||||
# fd - the fastdebug bundles which also include the jcef module
|
||||
@@ -41,12 +39,9 @@ function create_jbr {
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
|
||||
case "${bundle_type}" in
|
||||
"jfx" | "jcef" | "dcevm" | "nomod" | "fd")
|
||||
"jcef" | "dcevm" | "nomod" | "fd")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||
;;
|
||||
@@ -80,19 +75,10 @@ WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||
RELEASE_NAME=linux-x86_64-normal-server-release
|
||||
JBSDK=${JBRSDK_BASE_NAME}-linux-x64-b${build_number}
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jfx_jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"dcevm")
|
||||
HEAD_REVISION=$(git rev-parse HEAD)
|
||||
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||
@@ -120,6 +106,7 @@ sh configure \
|
||||
$WITH_DEBUG_LEVEL \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
@@ -32,6 +31,7 @@ linux32 bash configure \
|
||||
--with-debug-level=release \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=$JDK_BUILD_NUMBER \
|
||||
--with-version-opt=b${build_number} \
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to be built; possible values:
|
||||
# jcef - the release bundles with jcef
|
||||
# jfx - the release bundles with javafx
|
||||
# jcef_jfx - the release bundles with jcef and javafx
|
||||
# dcevm - the release bundles with dcevm patches
|
||||
# nomod - the release bundles without any additional modules (jcef)
|
||||
# fd - the fastdebug bundles which also include the jcef module
|
||||
@@ -30,28 +28,41 @@ JBSDK_VERSION=$1
|
||||
JDK_BUILD_NUMBER=$2
|
||||
build_number=$3
|
||||
bundle_type=$4
|
||||
architecture=$5 # aarch64 or x64
|
||||
enable_aot=$6 # temporary param for building test jre with aot under aarch64
|
||||
JBSDK_VERSION_WITH_DOTS=$(echo $JBSDK_VERSION | sed 's/_/\./g')
|
||||
WITH_IMPORT_MODULES="--with-import-modules=${MODULAR_SDK_PATH:=./modular-sdk}"
|
||||
JCEF_PATH=${JCEF_PATH:=./jcef_mac}
|
||||
architecture=${architecture:=x64}
|
||||
|
||||
source jb/project/tools/common.sh
|
||||
|
||||
function copyJNF {
|
||||
__contents_dir=$1
|
||||
mkdir -p ${__contents_dir}/Frameworks
|
||||
cp -Rp Frameworks/JavaNativeFoundation.framework ${__contents_dir}/Frameworks
|
||||
}
|
||||
function create_jbr {
|
||||
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
|
||||
case "${bundle_type}" in
|
||||
"jfx" | "jcef" | "dcevm" | "nomod" | "fd")
|
||||
"jcef" | "dcevm" | "nomod" | "fd")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||
;;
|
||||
esac
|
||||
cat modules.list > modules_tmp.list
|
||||
if [[ "${architecture}" == *aarch64* ]] && [[ "${enable_aot}" != *enable_aot* ]]; then
|
||||
# aot isn't supported yet, so remove dependent modules
|
||||
echo "Exclude jdk.internal.vm.compiler and jdk.aot (because aot not supported yet)"
|
||||
cat modules.list | \
|
||||
grep -v "jdk.internal.vm.compiler\|jdk.aot" \
|
||||
> modules_tmp.list
|
||||
else
|
||||
cat modules.list > modules_tmp.list
|
||||
fi
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
|
||||
JRE_CONTENTS=${BASE_DIR}/${JBR_BUNDLE}/Contents
|
||||
@@ -61,7 +72,7 @@ function create_jbr {
|
||||
fi
|
||||
mkdir -p ${JRE_CONTENTS}
|
||||
|
||||
JBR=${JBR_BASE_NAME}-osx-x64-b${build_number}
|
||||
JBR=${JBR_BASE_NAME}-osx-${architecture}-b${build_number}
|
||||
|
||||
echo Running jlink....
|
||||
${BASE_DIR}/$JBRSDK_BUNDLE/Contents/Home/bin/jlink \
|
||||
@@ -71,36 +82,38 @@ function create_jbr {
|
||||
cp -R ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/MacOS ${JRE_CONTENTS}
|
||||
cp ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Info.plist ${JRE_CONTENTS}
|
||||
|
||||
rm -rf ${JRE_CONTENTS}/Frameworks || do_exit $?
|
||||
if [[ "${architecture}" == *aarch64* ]]; then
|
||||
# we can't notarize this library as usual framework (with headers and tbd-file)
|
||||
# but single library notarizes correctly
|
||||
copyJNF ${JRE_CONTENTS}
|
||||
fi
|
||||
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||
rm -rf ${JRE_CONTENTS}/Frameworks || do_exit $?
|
||||
cp -a ${JCEF_PATH}/Frameworks ${JRE_CONTENTS} || do_exit $?
|
||||
fi
|
||||
|
||||
echo Creating ${JBR}.tar.gz ...
|
||||
rm -rf ${BASE_DIR}/jbr
|
||||
cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
|
||||
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBR}.tar.gz --exclude='*.dSYM' --exclude='man' -C ${BASE_DIR} jbr || do_exit $?
|
||||
rm -rf ${BASE_DIR}/${JBR_BUNDLE}
|
||||
}
|
||||
|
||||
JBRSDK_BASE_NAME=jbrsdk-${JBSDK_VERSION}
|
||||
WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||
RELEASE_NAME=macosx-x86_64-normal-server-release
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-b${build_number}
|
||||
CONF_ARCHITECTURE=x86_64
|
||||
if [[ "${architecture}" == *aarch64* ]]; then
|
||||
CONF_ARCHITECTURE=aarch64
|
||||
fi
|
||||
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-release
|
||||
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-b${build_number}
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jfx_jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"dcevm")
|
||||
HEAD_REVISION=$(git rev-parse HEAD)
|
||||
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||
@@ -115,30 +128,56 @@ case "$bundle_type" in
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
WITH_DEBUG_LEVEL="--with-debug-level=fastdebug"
|
||||
RELEASE_NAME=macosx-x86_64-normal-server-fastdebug
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-x64-fastdebug-b${build_number}
|
||||
CONF_NAME=macosx-${CONF_ARCHITECTURE}-normal-server-fastdebug
|
||||
JBSDK=${JBRSDK_BASE_NAME}-osx-${architecture}-fastdebug-b${build_number}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
sh configure \
|
||||
if [[ "${architecture}" == *aarch64* ]]; then
|
||||
# NOTE: aot, cds aren't supported yet
|
||||
WITH_JVM_FEATURES="--with-jvm-features=-aot"
|
||||
if [[ "${enable_aot}" == *enable_aot* ]]; then
|
||||
echo "Enable unstable jvm feature: AOT"
|
||||
WITH_JVM_FEATURES=""
|
||||
fi
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
$WITH_DEBUG_LEVEL \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
$WITH_IMPORT_MODULES \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||
--enable-cds=yes || do_exit $?
|
||||
--disable-hotspot-gtest --disable-javac-server --disable-full-docs --disable-manpages \
|
||||
--enable-cds=no \
|
||||
$WITH_JVM_FEATURES \
|
||||
--with-extra-cflags="-F$(pwd)/Frameworks" \
|
||||
--with-extra-cxxflags="-F$(pwd)/Frameworks" \
|
||||
--with-extra-ldflags="-F$(pwd)/Frameworks" || do_exit $?
|
||||
else
|
||||
sh configure \
|
||||
--disable-warnings-as-errors \
|
||||
$WITH_DEBUG_LEVEL \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
$WITH_IMPORT_MODULES \
|
||||
--with-boot-jdk=`/usr/libexec/java_home -v 11` \
|
||||
--enable-cds=yes || do_exit $?
|
||||
fi
|
||||
|
||||
make clean CONF=$RELEASE_NAME || do_exit $?
|
||||
make images CONF=$RELEASE_NAME || do_exit $?
|
||||
make clean CONF=$CONF_NAME || do_exit $?
|
||||
make images CONF=$CONF_NAME || do_exit $?
|
||||
|
||||
JSDK=build/${RELEASE_NAME}/images/jdk-bundle
|
||||
JSDK=build/${CONF_NAME}/images/jdk-bundle
|
||||
|
||||
BASE_DIR=jre
|
||||
JBRSDK_BUNDLE=jbrsdk
|
||||
@@ -146,17 +185,19 @@ JBRSDK_BUNDLE=jbrsdk
|
||||
rm -rf $BASE_DIR
|
||||
mkdir $BASE_DIR || do_exit $?
|
||||
cp -a $JSDK/jdk-$JBSDK_VERSION_WITH_DOTS.jdk $BASE_DIR/$JBRSDK_BUNDLE || do_exit $?
|
||||
|
||||
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||
if [[ "${bundle_type}" == *jcef* ]] || [[ "${bundle_type}" == *dcevm* ]] || [[ "${bundle_type}" == fd ]]; then
|
||||
cp -a ${JCEF_PATH}/Frameworks $BASE_DIR/$JBRSDK_BUNDLE/Contents/
|
||||
fi
|
||||
if [ "${bundle_type}" == "jcef" ] || [ "${bundle_type}" == "fd" ]; then
|
||||
echo Creating $JBSDK.tar.gz ...
|
||||
if [[ "${architecture}" == *aarch64* ]]; then
|
||||
copyJNF $BASE_DIR/$JBRSDK_BUNDLE/Contents
|
||||
fi
|
||||
sed 's/JBR/JBRSDK/g' ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release > release
|
||||
mv release ${BASE_DIR}/${JBRSDK_BUNDLE}/Contents/Home/release
|
||||
[ -f "${JBSDK}.tar.gz" ] && rm "${JBSDK}.tar.gz"
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBSDK}.tar.gz -C ${BASE_DIR} \
|
||||
--exclude='._*' --exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='.DS_Store' --exclude='*~' \
|
||||
--exclude='Home/demo' --exclude='Home/man' --exclude='Home/sample' \
|
||||
${JBRSDK_BUNDLE} || do_exit $?
|
||||
fi
|
||||
@@ -164,13 +205,13 @@ fi
|
||||
create_jbr || do_exit $?
|
||||
|
||||
if [ "$bundle_type" == "jcef" ]; then
|
||||
make test-image CONF=$RELEASE_NAME || do_exit $?
|
||||
make test-image CONF=$CONF_NAME || do_exit $?
|
||||
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-x64-b$build_number
|
||||
JBRSDK_TEST=$JBRSDK_BASE_NAME-osx-test-${architecture}-b$build_number
|
||||
|
||||
echo Creating $JBRSDK_TEST.tar.gz ...
|
||||
[ -f "${JBRSDK_TEST}.tar.gz" ] && rm "${JBRSDK_TEST}.tar.gz"
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${RELEASE_NAME}/images \
|
||||
COPYFILE_DISABLE=1 tar -pczf ${JBRSDK_TEST}.tar.gz -C build/${CONF_NAME}/images \
|
||||
--exclude='test/jdk/demos' test || do_exit $?
|
||||
fi
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ file="$APP_NAME.zip"
|
||||
|
||||
log "Zipping $file..."
|
||||
rm -rf "$file"
|
||||
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY/Contents" "$file"
|
||||
ditto -c -k --sequesterRsrc --keepParent "$APP_DIRECTORY" "$file"
|
||||
|
||||
log "Notarizing $file..."
|
||||
rm -rf "altool.init.out" "altool.check.out"
|
||||
|
||||
@@ -26,17 +26,30 @@ log "Signing libraries and executables..."
|
||||
# -perm +111 searches for executables
|
||||
for f in \
|
||||
"Contents/Home/bin" \
|
||||
"Contents/Home/lib" \
|
||||
"Contents/Frameworks"; do
|
||||
"Contents/Home/lib"; do
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-exec codesign --timestamp --force \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -d "$APP_DIRECTORY/Contents/Frameworks" ]; then
|
||||
log "Signing frameworks..."
|
||||
for f in $APP_DIRECTORY/Contents/Frameworks/*; do
|
||||
find "$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" \) \
|
||||
-exec codesign --timestamp --force \
|
||||
-v -s "$JB_CERT" \
|
||||
--entitlements entitlements.xml {} \;
|
||||
codesign --timestamp --force \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml "$f"
|
||||
done
|
||||
fi
|
||||
|
||||
log "Signing libraries in jars in $PWD"
|
||||
|
||||
# todo: add set -euo pipefail; into the inner sh -c
|
||||
@@ -55,7 +68,7 @@ find "$APP_DIRECTORY" -name '*.jar' \
|
||||
|
||||
find jarfolder \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -name "jattach" \) \
|
||||
-exec codesign --timestamp \
|
||||
-exec codesign --timestamp --force \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
|
||||
@@ -71,7 +84,7 @@ for f in \
|
||||
if [ -d "$APP_DIRECTORY/$f" ]; then
|
||||
find "$APP_DIRECTORY/$f" \
|
||||
-type f \( -name "*.jnilib" -o -name "*.dylib" -o -name "*.so" -o -perm +111 \) \
|
||||
-exec codesign --timestamp \
|
||||
-exec codesign --timestamp --force \
|
||||
-v -s "$JB_CERT" --options=runtime \
|
||||
--entitlements entitlements.xml {} \;
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash -x
|
||||
|
||||
#immediately exit script with an error if a command fails
|
||||
set -euo pipefail
|
||||
@@ -32,8 +32,10 @@ mkdir "$BACKUP_JMODS"
|
||||
|
||||
log "Unzipping $INPUT_FILE to $EXPLODED ..."
|
||||
tar -xzvf "$INPUT_FILE" --directory $EXPLODED
|
||||
rm "$INPUT_FILE"
|
||||
BUILD_NAME="$(ls "$EXPLODED")"
|
||||
sed -i '' s/BNDL/APPL/ $EXPLODED/$BUILD_NAME/Contents/Info.plist
|
||||
rm -f $EXPLODED/$BUILD_NAME/Contents/CodeResources
|
||||
rm "$INPUT_FILE"
|
||||
if test -d $EXPLODED/$BUILD_NAME/Contents/Home/jmods; then
|
||||
mv $EXPLODED/$BUILD_NAME/Contents/Home/jmods $BACKUP_JMODS
|
||||
fi
|
||||
@@ -125,8 +127,8 @@ log "Zipping $BUILD_NAME to $INPUT_FILE ..."
|
||||
mv $BACKUP_JMODS/jmods $EXPLODED/$BUILD_NAME/Contents/Home
|
||||
fi
|
||||
|
||||
COPYFILE_DISABLE=1 tar -pczf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||
tar -pczvf $INPUT_FILE --exclude='*.dSYM' --exclude='man' -C $EXPLODED $BUILD_NAME
|
||||
log "Finished zipping"
|
||||
)
|
||||
rm -rf "$EXPLODED"
|
||||
log "Done"
|
||||
log "Done"
|
||||
@@ -1,18 +1,18 @@
|
||||
diff --git modules.list modules.list
|
||||
index e23d793..368d022 100644
|
||||
index 33375b527c4..76539cbc0e0 100644
|
||||
--- modules.list
|
||||
+++ modules.list
|
||||
@@ -54,4 +54,7 @@ jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
@@ -55,4 +55,7 @@ jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs,
|
||||
-jdk.hotspot.agent
|
||||
+jdk.hotspot.agent,
|
||||
jdk.hotspot.agent,
|
||||
-jdk.jcmd
|
||||
+jdk.jcmd,
|
||||
+jcef,
|
||||
+gluegen.rt,
|
||||
+jogl.all
|
||||
diff --git src/java.desktop/share/classes/module-info.java src/java.desktop/share/classes/module-info.java
|
||||
index b663b38..3e9acdc 100644
|
||||
index b663b382f52..3e9acdc0c27 100644
|
||||
--- src/java.desktop/share/classes/module-info.java
|
||||
+++ src/java.desktop/share/classes/module-info.java
|
||||
@@ -109,7 +109,11 @@ module java.desktop {
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
diff --git modules.list modules.list
|
||||
index e23d793ca61..14b9a6c8e50 100644
|
||||
--- modules.list
|
||||
+++ modules.list
|
||||
@@ -20,6 +20,13 @@ java.sql.rowset,
|
||||
java.transaction.xa,
|
||||
java.xml,
|
||||
java.xml.crypto,
|
||||
+javafx.base,
|
||||
+javafx.controls,
|
||||
+javafx.fxml,
|
||||
+javafx.graphics,
|
||||
+javafx.media,
|
||||
+javafx.swing,
|
||||
+javafx.web,
|
||||
jdk.accessibility,
|
||||
jdk.aot,
|
||||
jdk.attach,
|
||||
@@ -1,7 +1,7 @@
|
||||
From b36887fca0b0b251c914567d0ee2871c6d786c09 Mon Sep 17 00:00:00 2001
|
||||
From d75ca6d0d1799ffde4199f6ef5047699b98d3ff2 Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:09:39 +0100
|
||||
Subject: [PATCH 01/17] Apply basic dcevm11 patch
|
||||
Subject: [PATCH 01/18] Apply basic dcevm11 patch
|
||||
|
||||
---
|
||||
src/hotspot/share/ci/ciObjectFactory.cpp | 25 +
|
||||
@@ -236,10 +236,10 @@ index 3bdfd34e39f..d792ab4bb3f 100644
|
||||
ReferenceType reference_type() const { return _rt; }
|
||||
AccessFlags access_flags() const { return _access_flags; }
|
||||
diff --git a/src/hotspot/share/classfile/classLoader.cpp b/src/hotspot/share/classfile/classLoader.cpp
|
||||
index f0cf1fb7cb1..5713bb9e98c 100644
|
||||
index 78eb096458a..368c59e2cbf 100644
|
||||
--- a/src/hotspot/share/classfile/classLoader.cpp
|
||||
+++ b/src/hotspot/share/classfile/classLoader.cpp
|
||||
@@ -1501,6 +1501,7 @@ InstanceKlass* ClassLoader::load_class(Symbol* name, bool search_append_only, TR
|
||||
@@ -1505,6 +1505,7 @@ InstanceKlass* ClassLoader::load_class(Symbol* name, bool search_append_only, TR
|
||||
protection_domain,
|
||||
NULL, // host_klass
|
||||
NULL, // cp_patches
|
||||
@@ -449,10 +449,10 @@ index d26f1f11fb4..fd4b134d7a7 100644
|
||||
|
||||
// An entry in the class loader data dictionaries, this describes a class as
|
||||
diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp
|
||||
index 6d320fb0d30..1004f41b277 100644
|
||||
index fc4efecc6e7..903979c9ef2 100644
|
||||
--- a/src/hotspot/share/classfile/javaClasses.cpp
|
||||
+++ b/src/hotspot/share/classfile/javaClasses.cpp
|
||||
@@ -2444,6 +2444,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
|
||||
@@ -2446,6 +2446,8 @@ void java_lang_Throwable::fill_in_stack_trace(Handle throwable, const methodHand
|
||||
skip_throwableInit_check = true;
|
||||
}
|
||||
}
|
||||
@@ -461,7 +461,7 @@ index 6d320fb0d30..1004f41b277 100644
|
||||
if (method->is_hidden()) {
|
||||
if (skip_hidden) continue;
|
||||
}
|
||||
@@ -3626,6 +3628,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
|
||||
@@ -3628,6 +3630,62 @@ void java_lang_invoke_DirectMethodHandle::serialize_offsets(SerializeClosure* f)
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -524,7 +524,7 @@ index 6d320fb0d30..1004f41b277 100644
|
||||
// Support for java_lang_invoke_MethodHandle
|
||||
|
||||
int java_lang_invoke_MethodHandle::_type_offset;
|
||||
@@ -3812,6 +3870,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
|
||||
@@ -3814,6 +3872,11 @@ void java_lang_invoke_ResolvedMethodName::set_vmtarget(oop resolved_method, Meth
|
||||
resolved_method->address_field_put(_vmtarget_offset, (address)m);
|
||||
}
|
||||
|
||||
@@ -685,10 +685,10 @@ index c08f8b9a119..b7b96c5cfdc 100644
|
||||
public:
|
||||
static InstanceKlass* check_shared_class_file_load_hook(
|
||||
diff --git a/src/hotspot/share/classfile/loaderConstraints.cpp b/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
index 9cd141bbfa2..e4a23e8a27c 100644
|
||||
index 7cccf23efb7..a26b9d1cb55 100644
|
||||
--- a/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
+++ b/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
@@ -87,6 +87,19 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
|
||||
@@ -90,6 +90,19 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
|
||||
return pp;
|
||||
}
|
||||
|
||||
@@ -708,7 +708,7 @@ index 9cd141bbfa2..e4a23e8a27c 100644
|
||||
|
||||
void LoaderConstraintTable::purge_loader_constraints() {
|
||||
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
|
||||
@@ -442,7 +455,7 @@ void LoaderConstraintTable::verify(PlaceholderTable* placeholders) {
|
||||
@@ -445,7 +458,7 @@ void LoaderConstraintTable::verify(PlaceholderTable* placeholders) {
|
||||
if (k != NULL) {
|
||||
// We found the class in the dictionary, so we should
|
||||
// make sure that the Klass* matches what we already have.
|
||||
@@ -732,7 +732,7 @@ index 8a7a1248e62..611e18aaf85 100644
|
||||
bool add_entry(Symbol* name, InstanceKlass* klass1, Handle loader1,
|
||||
InstanceKlass* klass2, Handle loader2);
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index 5c8ff453823..669de5e56a5 100644
|
||||
index bfd67334f82..5a745b6fca6 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -201,6 +201,7 @@ Klass* SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader
|
||||
@@ -952,10 +952,10 @@ index ad638e26579..32de261588a 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/hotspot/share/classfile/verifier.cpp b/src/hotspot/share/classfile/verifier.cpp
|
||||
index ea4f74fc783..472216b6a40 100644
|
||||
index 9402f628b03..f55ececb086 100644
|
||||
--- a/src/hotspot/share/classfile/verifier.cpp
|
||||
+++ b/src/hotspot/share/classfile/verifier.cpp
|
||||
@@ -237,7 +237,7 @@ bool Verifier::is_eligible_for_verification(InstanceKlass* klass, bool should_ve
|
||||
@@ -244,7 +244,7 @@ bool Verifier::is_eligible_for_verification(InstanceKlass* klass, bool should_ve
|
||||
Symbol* name = klass->name();
|
||||
Klass* refl_magic_klass = SystemDictionary::reflect_MagicAccessorImpl_klass();
|
||||
|
||||
@@ -1684,7 +1684,7 @@ index 81998728f66..b9ccdee8cca 100644
|
||||
}
|
||||
}
|
||||
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
index b532101c9b5..8afe8985026 100644
|
||||
index 77c28924b0d..84891b48c2a 100644
|
||||
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
@@ -1467,6 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
@@ -1919,7 +1919,7 @@ index 2a93500b794..2a9eb978b43 100644
|
||||
|
||||
// RedefineClasses support
|
||||
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
index c6752eb373f..e9c1d4e5226 100644
|
||||
index 645a63e71be..f059a05ebe7 100644
|
||||
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
@@ -832,7 +832,8 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
|
||||
@@ -2248,7 +2248,7 @@ index 18c706187df..4533476ff8f 100644
|
||||
Symbol* signature() const { return constants()->symbol_at(signature_index()); }
|
||||
int signature_index() const { return constMethod()->signature_index(); }
|
||||
diff --git a/src/hotspot/share/prims/jni.cpp b/src/hotspot/share/prims/jni.cpp
|
||||
index f9a69ef0c8b..231ada3f0ab 100644
|
||||
index 21e7f652652..e9cc3de9652 100644
|
||||
--- a/src/hotspot/share/prims/jni.cpp
|
||||
+++ b/src/hotspot/share/prims/jni.cpp
|
||||
@@ -353,6 +353,7 @@ JNI_ENTRY(jclass, jni_DefineClass(JNIEnv *env, const char *name, jobject loaderR
|
||||
@@ -2260,10 +2260,10 @@ index f9a69ef0c8b..231ada3f0ab 100644
|
||||
|
||||
if (log_is_enabled(Debug, class, resolve) && k != NULL) {
|
||||
diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp
|
||||
index 24c66ab3918..82b359ee9a3 100644
|
||||
index 378dcce8cf5..f92d2697e0e 100644
|
||||
--- a/src/hotspot/share/prims/jvm.cpp
|
||||
+++ b/src/hotspot/share/prims/jvm.cpp
|
||||
@@ -935,6 +935,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
|
||||
@@ -936,6 +936,7 @@ static jclass jvm_define_class_common(JNIEnv *env, const char *name,
|
||||
class_loader,
|
||||
protection_domain,
|
||||
&st,
|
||||
@@ -4741,7 +4741,7 @@ index 00000000000..3f95cf42645
|
||||
+};
|
||||
+#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES2_HPP
|
||||
diff --git a/src/hotspot/share/prims/jvmtiEnv.cpp b/src/hotspot/share/prims/jvmtiEnv.cpp
|
||||
index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
index f54c9b713be..54617f05b5a 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiEnv.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiEnv.cpp
|
||||
@@ -50,6 +50,7 @@
|
||||
@@ -4752,7 +4752,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
#include "prims/jvmtiTagMap.hpp"
|
||||
#include "prims/jvmtiThreadState.inline.hpp"
|
||||
#include "prims/jvmtiUtil.hpp"
|
||||
@@ -381,8 +382,13 @@ JvmtiEnv::GetClassLoaderClasses(jobject initiating_loader, jint* class_count_ptr
|
||||
@@ -382,8 +383,13 @@ JvmtiEnv::GetClassLoaderClasses(jobject initiating_loader, jint* class_count_ptr
|
||||
// is_modifiable_class_ptr - pre-checked for NULL
|
||||
jvmtiError
|
||||
JvmtiEnv::IsModifiableClass(oop k_mirror, jboolean* is_modifiable_class_ptr) {
|
||||
@@ -4768,7 +4768,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
return JVMTI_ERROR_NONE;
|
||||
} /* end IsModifiableClass */
|
||||
|
||||
@@ -412,7 +418,8 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
@@ -413,7 +419,8 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
return JVMTI_ERROR_INVALID_CLASS;
|
||||
}
|
||||
|
||||
@@ -4778,7 +4778,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
return JVMTI_ERROR_UNMODIFIABLE_CLASS;
|
||||
}
|
||||
|
||||
@@ -444,6 +451,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
@@ -445,6 +452,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
}
|
||||
class_definitions[index].klass = jcls;
|
||||
}
|
||||
@@ -4791,7 +4791,7 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
VM_RedefineClasses op(class_count, class_definitions, jvmti_class_load_kind_retransform);
|
||||
VMThread::execute(&op);
|
||||
return (op.check_error());
|
||||
@@ -454,7 +467,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
@@ -455,7 +468,12 @@ JvmtiEnv::RetransformClasses(jint class_count, const jclass* classes) {
|
||||
// class_definitions - pre-checked for NULL
|
||||
jvmtiError
|
||||
JvmtiEnv::RedefineClasses(jint class_count, const jvmtiClassDefinition* class_definitions) {
|
||||
@@ -4806,10 +4806,10 @@ index 1dd911fd8d8..bc6ebb2d4af 100644
|
||||
VMThread::execute(&op);
|
||||
return (op.check_error());
|
||||
diff --git a/src/hotspot/share/prims/jvmtiExport.cpp b/src/hotspot/share/prims/jvmtiExport.cpp
|
||||
index 375aa5f54f8..08f910bd2ac 100644
|
||||
index 6600848e2d3..9337b6ab585 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiExport.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiExport.cpp
|
||||
@@ -2813,7 +2813,7 @@ JvmtiDynamicCodeEventCollector::JvmtiDynamicCodeEventCollector() : _code_blobs(N
|
||||
@@ -2780,7 +2780,7 @@ JvmtiDynamicCodeEventCollector::JvmtiDynamicCodeEventCollector() : _code_blobs(N
|
||||
// iterate over any code blob descriptors collected and post a
|
||||
// DYNAMIC_CODE_GENERATED event to the profiler.
|
||||
JvmtiDynamicCodeEventCollector::~JvmtiDynamicCodeEventCollector() {
|
||||
@@ -4819,10 +4819,10 @@ index 375aa5f54f8..08f910bd2ac 100644
|
||||
if (_code_blobs != NULL) {
|
||||
for (int i=0; i<_code_blobs->length(); i++) {
|
||||
diff --git a/src/hotspot/share/prims/jvmtiExport.hpp b/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
index 557d10543c6..ef8c266bc6e 100644
|
||||
index cc5868f1e93..a6cbac03bb2 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiExport.hpp
|
||||
@@ -178,6 +178,7 @@ class JvmtiExport : public AllStatic {
|
||||
@@ -176,6 +176,7 @@ class JvmtiExport : public AllStatic {
|
||||
// systems as needed to relax invariant checks.
|
||||
static bool _has_redefined_a_class;
|
||||
friend class VM_RedefineClasses;
|
||||
@@ -4850,10 +4850,10 @@ index 61a616271f6..60604c645ff 100644
|
||||
|
||||
int extract(jclass* result_list) {
|
||||
diff --git a/src/hotspot/share/prims/jvmtiImpl.cpp b/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
index 001c592807a..2a92ece916e 100644
|
||||
index a0a6a6cbd18..39953a71244 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
@@ -293,6 +293,11 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
|
||||
@@ -295,6 +295,11 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
|
||||
Symbol* m_name = _method->name();
|
||||
Symbol* m_signature = _method->signature();
|
||||
|
||||
@@ -4997,7 +4997,7 @@ index bd439aab073..cc7f71a4404 100644
|
||||
static size_t max_heap_for_compressed_oops();
|
||||
|
||||
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||
index 3cd51a1ac95..7b061359c1d 100644
|
||||
index 4a53ecb37a8..a6c33744760 100644
|
||||
--- a/src/hotspot/share/runtime/globals.hpp
|
||||
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||
@@ -2674,7 +2674,11 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||
@@ -5014,7 +5014,7 @@ index 3cd51a1ac95..7b061359c1d 100644
|
||||
#define VM_FLAGS(develop, \
|
||||
develop_pd, \
|
||||
diff --git a/src/hotspot/share/runtime/interfaceSupport.inline.hpp b/src/hotspot/share/runtime/interfaceSupport.inline.hpp
|
||||
index 0267345b535..bcdd8e5d3e6 100644
|
||||
index f39687a25bc..7b1aa3cc58e 100644
|
||||
--- a/src/hotspot/share/runtime/interfaceSupport.inline.hpp
|
||||
+++ b/src/hotspot/share/runtime/interfaceSupport.inline.hpp
|
||||
@@ -276,8 +276,8 @@ class ThreadToNativeFromVM : public ThreadStateTransition {
|
||||
@@ -5029,7 +5029,7 @@ index 0267345b535..bcdd8e5d3e6 100644
|
||||
trans_and_fence(_thread_in_vm, _thread_in_native);
|
||||
// Check for pending. async. exceptions or suspends.
|
||||
diff --git a/src/hotspot/share/runtime/javaCalls.cpp b/src/hotspot/share/runtime/javaCalls.cpp
|
||||
index 32040586b36..0eb2fc1ec6b 100644
|
||||
index 563ffdbd446..55f06eadcc2 100644
|
||||
--- a/src/hotspot/share/runtime/javaCalls.cpp
|
||||
+++ b/src/hotspot/share/runtime/javaCalls.cpp
|
||||
@@ -57,7 +57,8 @@ JavaCallWrapper::JavaCallWrapper(const methodHandle& callee_method, Handle recei
|
||||
@@ -5043,7 +5043,7 @@ index 32040586b36..0eb2fc1ec6b 100644
|
||||
_result = result;
|
||||
|
||||
diff --git a/src/hotspot/share/runtime/mutexLocker.cpp b/src/hotspot/share/runtime/mutexLocker.cpp
|
||||
index b56b44eab69..2e1514cf750 100644
|
||||
index d504ef00f90..982ba1b69d5 100644
|
||||
--- a/src/hotspot/share/runtime/mutexLocker.cpp
|
||||
+++ b/src/hotspot/share/runtime/mutexLocker.cpp
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 8ab0856ab3446eb08ad773b0225232a899527298 Mon Sep 17 00:00:00 2001
|
||||
From ebd5c9df33771ad5181a225cccc0cca3881a4dbe Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:18:22 +0100
|
||||
Subject: [PATCH 02/17] dcevm11 fixes
|
||||
Subject: [PATCH 02/18] dcevm11 fixes
|
||||
|
||||
1. We need to set classRedefinitionCount on new class, not old class.
|
||||
|
||||
@@ -223,7 +223,7 @@ index fd4b134d7a7..5eaa741d500 100644
|
||||
return (k != NULL && k->is_redefining()) ? ((InstanceKlass* )k->old_version()) : k;
|
||||
}
|
||||
diff --git a/src/hotspot/share/classfile/loaderConstraints.cpp b/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
index e4a23e8a27c..bca73b5e0dc 100644
|
||||
index a26b9d1cb55..3d5a59a04ff 100644
|
||||
--- a/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
+++ b/src/hotspot/share/classfile/loaderConstraints.cpp
|
||||
@@ -4,7 +4,7 @@
|
||||
@@ -235,7 +235,7 @@ index e4a23e8a27c..bca73b5e0dc 100644
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
@@ -87,6 +87,7 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
|
||||
@@ -90,6 +90,7 @@ LoaderConstraintEntry** LoaderConstraintTable::find_loader_constraint(
|
||||
return pp;
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ index e4a23e8a27c..bca73b5e0dc 100644
|
||||
for (int index = 0; index < table_size(); index++) {
|
||||
LoaderConstraintEntry** p = bucket_addr(index);
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index 669de5e56a5..e464b94b420 100644
|
||||
index 5a745b6fca6..19bc8d9899a 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -876,7 +876,8 @@ Klass* SystemDictionary::resolve_instance_class_or_null(Symbol* name,
|
||||
@@ -376,7 +376,7 @@ index 47040d51f0c..4318df227d1 100644
|
||||
}
|
||||
|
||||
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
index e9c1d4e5226..312d9af2527 100644
|
||||
index f059a05ebe7..c28ed956ccf 100644
|
||||
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
@@ -178,6 +178,7 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
|
||||
@@ -1511,10 +1511,10 @@ index 3f95cf42645..a48e07e3a6a 100644
|
||||
};
|
||||
#endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES2_HPP
|
||||
diff --git a/src/hotspot/share/prims/jvmtiImpl.cpp b/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
index 2a92ece916e..d2044541d38 100644
|
||||
index 39953a71244..b59d3046b88 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiImpl.cpp
|
||||
@@ -294,8 +294,10 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
|
||||
@@ -296,8 +296,10 @@ void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
|
||||
Symbol* m_signature = _method->signature();
|
||||
|
||||
// (DCEVM) Go through old versions of method
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From dcf2c02f9ce950170b0e448b8ef3aceb19732a86 Mon Sep 17 00:00:00 2001
|
||||
From aaefe6f66a8d363eb35fcdc8ce29bb25be67fe1c Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 12 Dec 2018 19:38:28 +0100
|
||||
Subject: [PATCH 03/17] Support for Concurrent Mark Sweep (CMS) collector
|
||||
Subject: [PATCH 03/18] Support for Concurrent Mark Sweep (CMS) collector
|
||||
|
||||
---
|
||||
.../share/gc/cms/compactibleFreeListSpace.cpp | 139 ++++++++++++------
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 663ccc831cc21ffddc5bc035de2c72666df00a4e Mon Sep 17 00:00:00 2001
|
||||
From 002ad1880190d0749f8f8d325c587fd9275bdab2 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@mailprofiler.com>
|
||||
Date: Wed, 11 Mar 2020 14:19:34 +0100
|
||||
Subject: [PATCH 04/17] Fix class cast exception on redefinition of class A,
|
||||
Subject: [PATCH 04/18] Fix class cast exception on redefinition of class A,
|
||||
that is superclass of B that has anonymous class C
|
||||
|
||||
---
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH 04/17] Fix class cast exception on redefinition of class A,
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
index 312d9af2527..4312c2c4ca9 100644
|
||||
index c28ed956ccf..7eb1b01c785 100644
|
||||
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
@@ -788,7 +788,10 @@ bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 25cb9b5fa97749d3bc13dc6c848c7eb9cc1b66bb Mon Sep 17 00:00:00 2001
|
||||
From a00292280f4e3754bffc7a0c562dca1d7552eb39 Mon Sep 17 00:00:00 2001
|
||||
From: skybber <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 14 Nov 2018 21:20:08 +0100
|
||||
Subject: [PATCH 05/17] HotswapAgent integration
|
||||
Subject: [PATCH 05/18] HotswapAgent integration
|
||||
|
||||
It include:
|
||||
|
||||
@@ -513,7 +513,7 @@ index cc7f71a4404..b2bab2e1f44 100644
|
||||
static size_t max_heap_for_compressed_oops();
|
||||
|
||||
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||
index 7b061359c1d..fc0405b5df2 100644
|
||||
index a6c33744760..b8dba232fc1 100644
|
||||
--- a/src/hotspot/share/runtime/globals.hpp
|
||||
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||
@@ -32,6 +32,12 @@
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 28d352b4b7cda96a37f95d75cf576570271157e3 Mon Sep 17 00:00:00 2001
|
||||
From 62f3578e0a73913c1262a1612a464d19abfeb626 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 4 Oct 2020 21:12:12 +0200
|
||||
Subject: [PATCH 06/17] Support for Lambda class redefinition
|
||||
Subject: [PATCH 06/18] Support for Lambda class redefinition
|
||||
|
||||
---
|
||||
.../share/classfile/classLoaderData.cpp | 9 +++
|
||||
@@ -47,7 +47,7 @@ index 7e357929971..00a84610b43 100644
|
||||
|
||||
void unload();
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index e464b94b420..791b49c68ad 100644
|
||||
index 19bc8d9899a..a6a03d3c0e9 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -971,12 +971,16 @@ InstanceKlass* SystemDictionary::parse_stream(Symbol* class_name,
|
||||
@@ -242,10 +242,10 @@ index af2ec48c2e1..7741328979f 100644
|
||||
assert(newer_method != NULL, "method_with_idnum() should not be NULL");
|
||||
assert(old_method != newer_method, "sanity check");
|
||||
diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp
|
||||
index 2f14e01ce0d..d0e0367d8eb 100644
|
||||
index c071f8b7cc6..e484b8991d1 100644
|
||||
--- a/src/hotspot/share/prims/unsafe.cpp
|
||||
+++ b/src/hotspot/share/prims/unsafe.cpp
|
||||
@@ -818,6 +818,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
|
||||
@@ -820,6 +820,7 @@ Unsafe_DefineAnonymousClass_impl(JNIEnv *env,
|
||||
host_domain,
|
||||
&st,
|
||||
InstanceKlass::cast(host_klass),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 3b6c7d2f807857712df6fd51a36a5a906b705f57 Mon Sep 17 00:00:00 2001
|
||||
From 4b445e7a7f77f82f757c12010e3c88b2eb4698f9 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 23 May 2020 10:02:15 +0200
|
||||
Subject: [PATCH 07/17] Fix "no original bytecode found" error if method with
|
||||
Subject: [PATCH 07/18] Fix "no original bytecode found" error if method with
|
||||
bkp is missing
|
||||
|
||||
Sometimes IDE can deploy class with erroneous method, such method has
|
||||
@@ -28,10 +28,10 @@ index e377e36b88c..262ecc021b2 100644
|
||||
|
||||
int Bytecodes::special_length_at(Bytecodes::Code code, address bcp, address end) {
|
||||
diff --git a/src/hotspot/share/interpreter/interpreterRuntime.cpp b/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||
index f367e658879..71bbd15a4f5 100644
|
||||
index c25e13d83e8..2a66419908c 100644
|
||||
--- a/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||
+++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp
|
||||
@@ -834,7 +834,7 @@ IRT_END
|
||||
@@ -819,7 +819,7 @@ IRT_END
|
||||
// Invokes
|
||||
|
||||
IRT_ENTRY(Bytecodes::Code, InterpreterRuntime::get_original_bytecode_at(JavaThread* thread, Method* method, address bcp))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 102b7a0ba69c1411ec926985c79a36a2fc1978dd Mon Sep 17 00:00:00 2001
|
||||
From c022124c6e0680d2dfc174f66fc858b0eb2591dc Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 24 May 2020 12:07:42 +0200
|
||||
Subject: [PATCH 08/17] Replace deleted method with
|
||||
Subject: [PATCH 08/18] Replace deleted method with
|
||||
Universe::throw_no_such_method_error
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a89a7aad1d44b540e4704332939d639e66392bd5 Mon Sep 17 00:00:00 2001
|
||||
From aa1d291c7349e5cecf9d93e817d0866460deb903 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 12 Jun 2020 17:43:52 +0200
|
||||
Subject: [PATCH 09/17] Support for G1 gc
|
||||
Subject: [PATCH 09/18] Support for G1 gc
|
||||
|
||||
---
|
||||
src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 20 +++
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2c6512bb54400e3836a3c348c10c78557c1abbf5 Mon Sep 17 00:00:00 2001
|
||||
From b6ea0ee6fcc376f575be0f461c494664d55ed986 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sat, 13 Jun 2020 18:50:59 +0200
|
||||
Subject: [PATCH 10/17] Change log level in advanced redefinition
|
||||
Subject: [PATCH 10/18] Change log level in advanced redefinition
|
||||
|
||||
- Change log level for "Comparing different class ver.." to debug
|
||||
- Fix adjust_method_entries_dcevm logging levels and severity
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9c8d44a088bfd73f9be3678110a67a5ed8954c8a Mon Sep 17 00:00:00 2001
|
||||
From ef1098751c596a03fd1721affc20d221b3544d37 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Tue, 6 Oct 2020 22:15:31 +0200
|
||||
Subject: [PATCH 11/17] AllowEnhancedClassRedefinition is false (disabled) by
|
||||
Subject: [PATCH 11/18] AllowEnhancedClassRedefinition is false (disabled) by
|
||||
default
|
||||
|
||||
---
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH 11/17] AllowEnhancedClassRedefinition is false (disabled) by
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hotspot/share/runtime/globals.hpp b/src/hotspot/share/runtime/globals.hpp
|
||||
index fc0405b5df2..607a39449dc 100644
|
||||
index b8dba232fc1..d4453de1ff5 100644
|
||||
--- a/src/hotspot/share/runtime/globals.hpp
|
||||
+++ b/src/hotspot/share/runtime/globals.hpp
|
||||
@@ -2682,7 +2682,7 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 69bc6c03ad25d485182d1b17f265a59ff98e3352 Mon Sep 17 00:00:00 2001
|
||||
From 6a78dda15c66cbba1ca6a2d7f3df3a55fc087f50 Mon Sep 17 00:00:00 2001
|
||||
From: Artem Khvastunov <artem.khvastunov@jetbrains.com>
|
||||
Date: Tue, 14 Apr 2020 19:11:35 +0200
|
||||
Subject: [PATCH 12/17] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
|
||||
Subject: [PATCH 12/18] add jvmtiEnhancedRedefineClasses.* to CMakeLists.txt
|
||||
|
||||
---
|
||||
jb/project/hotspot-cmake/CMakeLists.txt | 2 ++
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
From 5e66d1cd39dcae56adfa3a4785e8da47218d7b72 Mon Sep 17 00:00:00 2001
|
||||
From 80c1cd01b45735928e3b3e9283b5484ea6a70a7f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Mon, 19 Oct 2020 20:00:04 +0200
|
||||
Subject: [PATCH 13/17] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
|
||||
Subject: [PATCH 13/18] Set HOTSPOT_VM_DISTRO=Dynamic Code Evolution
|
||||
|
||||
---
|
||||
make/autoconf/version-numbers | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/make/autoconf/version-numbers b/make/autoconf/version-numbers
|
||||
index bb9d863c992..e462ab57217 100644
|
||||
index 1d08f6a80dc..88b4d460ee8 100644
|
||||
--- a/make/autoconf/version-numbers
|
||||
+++ b/make/autoconf/version-numbers
|
||||
@@ -44,7 +44,7 @@ PRODUCT_NAME=OpenJDK
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 5b1408b47bd86a5bd2a4aa1f39705687efc73223 Mon Sep 17 00:00:00 2001
|
||||
From 122562d31005edd3573a645c3a02c1d8fe843c5e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Sun, 11 Oct 2020 10:43:28 +0200
|
||||
Subject: [PATCH 14/17] Fix G1 nmethod registration
|
||||
Subject: [PATCH 14/18] Fix G1 nmethod registration
|
||||
|
||||
---
|
||||
.../prims/jvmtiEnhancedRedefineClasses.cpp | 19 ++++++++++++++++---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c5bae0e9c9c0b0a6e05a966648fb2ddaf9a16564 Mon Sep 17 00:00:00 2001
|
||||
From 0156b2084be20579b407e112a00ba15f54248003 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Thu, 22 Oct 2020 20:15:20 +0200
|
||||
Subject: [PATCH 15/17] Initialize method's _new_version/_old_version to NULL
|
||||
Subject: [PATCH 15/18] Initialize method's _new_version/_old_version to NULL
|
||||
|
||||
---
|
||||
src/hotspot/share/oops/method.cpp | 3 ++-
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 5504812403a0673c428fc5589cd94f2c3fea7616 Mon Sep 17 00:00:00 2001
|
||||
From 81ba8f1d120e158a7b0cfa09b5dd51295d51901f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 23 Oct 2020 10:20:26 +0200
|
||||
Subject: [PATCH 16/17] Clear dcevm code separation
|
||||
Subject: [PATCH 16/18] Clear dcevm code separation
|
||||
|
||||
---
|
||||
src/hotspot/share/classfile/systemDictionary.cpp | 4 ++--
|
||||
@@ -15,7 +15,7 @@ Subject: [PATCH 16/17] Clear dcevm code separation
|
||||
8 files changed, 27 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/classfile/systemDictionary.cpp b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
index 791b49c68ad..011a14eab32 100644
|
||||
index a6a03d3c0e9..9e0f4dd3c96 100644
|
||||
--- a/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
+++ b/src/hotspot/share/classfile/systemDictionary.cpp
|
||||
@@ -1152,7 +1152,7 @@ InstanceKlass* SystemDictionary::resolve_from_stream(Symbol* class_name,
|
||||
@@ -93,7 +93,7 @@ index 9dc184d02f5..bff1c3627b0 100644
|
||||
is_static ? "static" : "non-static", resolved_klass->external_name(), fd.name()->as_C_string(),
|
||||
current_klass->external_name());
|
||||
diff --git a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
index 8afe8985026..4e7b39406fa 100644
|
||||
index 84891b48c2a..6f19e2939a2 100644
|
||||
--- a/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
+++ b/src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp
|
||||
@@ -1467,7 +1467,7 @@ static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStre
|
||||
@@ -106,7 +106,7 @@ index 8afe8985026..4e7b39406fa 100644
|
||||
if (HAS_PENDING_EXCEPTION) {
|
||||
log_pending_exception(PENDING_EXCEPTION);
|
||||
diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
index 4312c2c4ca9..7335f0cffc9 100644
|
||||
index 7eb1b01c785..710e0ddc930 100644
|
||||
--- a/src/hotspot/share/oops/instanceKlass.cpp
|
||||
+++ b/src/hotspot/share/oops/instanceKlass.cpp
|
||||
@@ -178,7 +178,9 @@ bool InstanceKlass::has_nest_member(InstanceKlass* k, TRAPS) const {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a9bc3c0b7acfe8432f4f50362df3d8f95d7b5d9d Mon Sep 17 00:00:00 2001
|
||||
From a022248d12e37084c8f8987a44d567ba0e02fb6d Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Fri, 23 Oct 2020 11:07:40 +0200
|
||||
Subject: [PATCH 17/17] Fix metadataOnStack bug
|
||||
Subject: [PATCH 17/18] Fix metadataOnStack bug
|
||||
|
||||
---
|
||||
.../share/classfile/classLoaderData.cpp | 7 +-
|
||||
@@ -143,7 +143,7 @@ index 8da4ac6f92b..6d327ab98f2 100644
|
||||
|
||||
static void record(Metadata* m);
|
||||
diff --git a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||
index 1b2070d686f..1178c863c30 100644
|
||||
index fb81189d9c2..18bc7f4eea4 100644
|
||||
--- a/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||
+++ b/src/hotspot/share/prims/jvmtiRedefineClasses.cpp
|
||||
@@ -199,7 +199,7 @@ void VM_RedefineClasses::doit() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From dbce1c2db6bcb28327fd715d389c824805174690 Mon Sep 17 00:00:00 2001
|
||||
From 46795cd6c086e2008b270f89971bb07ad34ac355 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <lada.dvorak7@gmail.com>
|
||||
Date: Wed, 11 Nov 2020 18:45:15 +0100
|
||||
Subject: [PATCH 18/18] Fix LoadedClassesClosure - fixes problems with remote
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 62fc66fa74886bd8bb15cd3e2084175f7ad5d0c7 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Dvorak <vladimir.dvorak@jetbrains.com>
|
||||
Date: Fri, 5 Feb 2021 23:30:49 +0100
|
||||
Subject: [PATCH 19/19] Disable AllowEnhancedClassRedefinition in flight
|
||||
recorder
|
||||
|
||||
---
|
||||
src/hotspot/share/runtime/arguments.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp
|
||||
index 5053ad7ee61..c5635bb8537 100644
|
||||
--- a/src/hotspot/share/runtime/arguments.cpp
|
||||
+++ b/src/hotspot/share/runtime/arguments.cpp
|
||||
@@ -3962,6 +3962,13 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
|
||||
// Set object alignment values.
|
||||
set_object_alignment();
|
||||
|
||||
+ if (FlightRecorder) {
|
||||
+ if (AllowEnhancedClassRedefinition) {
|
||||
+ warning("EnhancedClassRedefinition was disabled, it is not allowed in FlightRecorder.");
|
||||
+ AllowEnhancedClassRedefinition = false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
setup_hotswap_agent();
|
||||
|
||||
#if !INCLUDE_CDS
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to be built; possible values:
|
||||
# jcef - the release bundles with jcef
|
||||
# jfx - the release bundles with javafx
|
||||
# jcef_jfx - the release bundles with jcef and javafx
|
||||
# dcevm - the release bundles with dcevm patches
|
||||
# nomod - the release bundles without any additional modules (jcef)
|
||||
# fd - the fastdebug bundles which also include the jcef module
|
||||
@@ -43,12 +41,9 @@ function create_jbr {
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
|
||||
case "${bundle_type}" in
|
||||
"jfx" | "jcef" | "dcevm" | "nomod" | "fd")
|
||||
"jcef" | "dcevm" | "nomod" | "fd")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||
;;
|
||||
@@ -73,19 +68,10 @@ WITH_DEBUG_LEVEL="--with-debug-level=release"
|
||||
RELEASE_NAME=windows-x86_64-normal-server-release
|
||||
JBSDK=${JBRSDK_BASE_NAME}-windows-x64-b${build_number}
|
||||
case "$bundle_type" in
|
||||
"jfx")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"jfx_jcef")
|
||||
git apply -p0 < jb/project/tools/patches/add_jfx_module.patch || do_exit $?
|
||||
git apply -p0 < jb/project/tools/patches/add_jcef_module.patch || do_exit $?
|
||||
do_reset_changes=1
|
||||
;;
|
||||
"dcevm")
|
||||
HEAD_REVISION=$(git rev-parse HEAD)
|
||||
git am jb/project/tools/patches/dcevm/*.patch || do_exit $?
|
||||
@@ -114,6 +100,7 @@ sh ./configure \
|
||||
$WITH_DEBUG_LEVEL \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
@@ -35,6 +34,7 @@ PATH="/usr/local/bin:/usr/bin:${PATH}"
|
||||
--with-target-bits=32 \
|
||||
--with-vendor-name="${VENDOR_NAME}" \
|
||||
--with-vendor-version-string="${VENDOR_VERSION_STRING}" \
|
||||
--with-jvm-features=shenandoahgc \
|
||||
--with-version-pre= \
|
||||
--with-version-build=${JDK_BUILD_NUMBER} \
|
||||
--with-version-opt=b${build_number} \
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to be built; possible values:
|
||||
# jcef - the release bundles with jcef
|
||||
# jfx - the release bundles with javafx
|
||||
# jcef_jfx - the release bundles with jcef and javafx
|
||||
# dcevm - the release bundles with dcevm patches
|
||||
# nomod - the release bundles without any additional modules (jcef)
|
||||
# fd - the fastdebug bundles which also include the jcef module
|
||||
@@ -38,12 +36,9 @@ function pack_jbr {
|
||||
JBR_BUNDLE=jbr_${bundle_type}
|
||||
|
||||
case "${bundle_type}" in
|
||||
"jfx" | "jcef" | "dcevm" | "nomod" | "fd")
|
||||
"jcef" | "dcevm" | "nomod" | "fd")
|
||||
JBR_BASE_NAME=jbr_${bundle_type}-${JBSDK_VERSION}
|
||||
;;
|
||||
"jfx_jcef")
|
||||
JBR_BASE_NAME=jbr-${JBSDK_VERSION}
|
||||
;;
|
||||
*)
|
||||
echo "***ERR*** bundle was not specified" && do_exit 1
|
||||
;;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# build_number - specifies the number of JetBrainsRuntime build
|
||||
# bundle_type - specifies bundle to bu built; possible values:
|
||||
# jcef - the bundles 1) jbr with jcef+javafx, 2) jbrsdk and 3) test will be created
|
||||
# jfx - the bundle 1) jbr with javafx only will be created
|
||||
#
|
||||
# jbrsdk-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
# jbr-${JBSDK_VERSION}-osx-x64-b${build_number}.tar.gz
|
||||
|
||||
@@ -77,7 +77,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
|
||||
# s390x : remove unused code+data in link step
|
||||
if test "x$OPENJDK_TARGET_CPU" = xs390x; then
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections -Wl,--print-gc-sections"
|
||||
BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections"
|
||||
fi
|
||||
|
||||
BASIC_LDFLAGS_JVM_ONLY="-Wl,-O1"
|
||||
|
||||
@@ -224,10 +224,12 @@ AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
|
||||
# We also need -iframework<path>/System/Library/Frameworks
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
|
||||
# These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
|
||||
# set this here so it doesn't have to be peppered throughout the forest
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||
if test -d "[$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks" ; then
|
||||
# These always need to be set on macOS 10.X, or we can't find the frameworks embedded in JavaVM.framework
|
||||
# set this here so it doesn't have to be peppered throughout the forest
|
||||
$1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||
$1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST($1SYSROOT_CFLAGS)
|
||||
|
||||
@@ -99,6 +99,8 @@ apt_help() {
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libfontconfig1-dev" ;;
|
||||
freetype)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
|
||||
harfbuzz)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libharfbuzz-dev" ;;
|
||||
ffi)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
|
||||
x11)
|
||||
@@ -124,6 +126,8 @@ yum_help() {
|
||||
PKGHANDLER_COMMAND="sudo yum install fontconfig-devel" ;;
|
||||
freetype)
|
||||
PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
|
||||
harfbuzz)
|
||||
PKGHANDLER_COMMAND="sudo yum install harfbuzz-devel" ;;
|
||||
x11)
|
||||
PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel" ;;
|
||||
ccache)
|
||||
|
||||
@@ -274,6 +274,14 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_CDS],
|
||||
fi
|
||||
fi
|
||||
|
||||
# Disable CDS on macos-aarch64
|
||||
if test "x$OPENJDK_TARGET_OS" = "xmacosx" && test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
|
||||
ENABLE_CDS="false"
|
||||
if test "x$enable_cds" = "xyes"; then
|
||||
AC_MSG_ERROR([CDS is currently not supported on AIX. Remove --enable-cds.])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(ENABLE_CDS)
|
||||
])
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS],
|
||||
LIB_SETUP_LIBPNG
|
||||
LIB_SETUP_ZLIB
|
||||
LIB_SETUP_LCMS
|
||||
LIB_SETUP_HARFBUZZ
|
||||
])
|
||||
|
||||
################################################################################
|
||||
@@ -260,3 +261,43 @@ AC_DEFUN_ONCE([LIB_SETUP_LCMS],
|
||||
AC_SUBST(LCMS_CFLAGS)
|
||||
AC_SUBST(LCMS_LIBS)
|
||||
])
|
||||
|
||||
################################################################################
|
||||
# Setup harfbuzz
|
||||
################################################################################
|
||||
AC_DEFUN_ONCE([LIB_SETUP_HARFBUZZ],
|
||||
[
|
||||
AC_ARG_WITH(harfbuzz, [AS_HELP_STRING([--with-harfbuzz],
|
||||
[use harfbuzz from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
|
||||
|
||||
AC_MSG_CHECKING([for which harfbuzz to use])
|
||||
|
||||
DEFAULT_HARFBUZZ=bundled
|
||||
# If user didn't specify, use DEFAULT_HARFBUZZ
|
||||
if test "x${with_harfbuzz}" = "x"; then
|
||||
with_harfbuzz=${DEFAULT_HARFBUZZ}
|
||||
fi
|
||||
|
||||
if test "x${with_harfbuzz}" = "xbundled"; then
|
||||
USE_EXTERNAL_HARFBUZZ=false
|
||||
HARFBUZZ_CFLAGS=""
|
||||
HARFBUZZ_LIBS=""
|
||||
AC_MSG_RESULT([bundled])
|
||||
elif test "x${with_harfbuzz}" = "xsystem"; then
|
||||
AC_MSG_RESULT([system])
|
||||
PKG_CHECK_MODULES([HARFBUZZ], [harfbuzz], [HARFBUZZ_FOUND=yes], [HARFBUZZ_FOUND=no])
|
||||
if test "x${HARFBUZZ_FOUND}" = "xyes"; then
|
||||
# PKG_CHECK_MODULES will set HARFBUZZ_CFLAGS and HARFBUZZ_LIBS
|
||||
USE_EXTERNAL_HARFBUZZ=true
|
||||
else
|
||||
HELP_MSG_MISSING_DEPENDENCY([harfbuzz])
|
||||
AC_MSG_ERROR([--with-harfbuzz=system specified, but no harfbuzz found! $HELP_MSG])
|
||||
fi
|
||||
else
|
||||
AC_MSG_ERROR([Invalid value for --with-harfbuzz: ${with_harfbuzz}, use 'system' or 'bundled'])
|
||||
fi
|
||||
|
||||
AC_SUBST(USE_EXTERNAL_HARFBUZZ)
|
||||
AC_SUBST(HARFBUZZ_CFLAGS)
|
||||
AC_SUBST(HARFBUZZ_LIBS)
|
||||
])
|
||||
|
||||
@@ -49,10 +49,23 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
arm*)
|
||||
VAR_CPU=arm
|
||||
VAR_CPU_ARCH=arm
|
||||
VAR_CPU_BITS=32
|
||||
VAR_CPU_ENDIAN=little
|
||||
# Second argument is the os name from the trip/quad.
|
||||
# on macos-aarch64, triplet returned by autoconf is
|
||||
# arm-darwin*, but on darwin only aarch64 is present.
|
||||
case "$2" in
|
||||
*darwin*)
|
||||
VAR_CPU=aarch64
|
||||
VAR_CPU_ARCH=aarch64
|
||||
VAR_CPU_BITS=64
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
*)
|
||||
VAR_CPU=arm
|
||||
VAR_CPU_ARCH=arm
|
||||
VAR_CPU_BITS=32
|
||||
VAR_CPU_ENDIAN=little
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
aarch64)
|
||||
VAR_CPU=aarch64
|
||||
@@ -215,7 +228,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu, $build_os)
|
||||
# ..and setup our own variables. (Do this explicitly to facilitate searching)
|
||||
OPENJDK_BUILD_OS="$VAR_OS"
|
||||
if test "x$VAR_OS_TYPE" != x; then
|
||||
@@ -245,7 +258,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
|
||||
|
||||
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
|
||||
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
|
||||
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu, $host_os)
|
||||
# ... and setup our own variables. (Do this explicitly to facilitate searching)
|
||||
OPENJDK_TARGET_OS="$VAR_OS"
|
||||
if test "x$VAR_OS_TYPE" != x; then
|
||||
|
||||
@@ -617,7 +617,7 @@ JAVA_JAVAC=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_JAVAC) $(JAVA_FLAGS)
|
||||
JAVAC=@FIXPATH@ $(JAVAC_CMD)
|
||||
JAVADOC=@FIXPATH@ $(JAVADOC_CMD)
|
||||
JAR=@FIXPATH@ $(JAR_CMD)
|
||||
JLINK = @FIXPATH@ $(JLINK_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
||||
JLINK = @FIXPATH@ $(JLINK_CMD)
|
||||
JMOD = @FIXPATH@ $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
|
||||
JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
|
||||
# A specific java binary with specific options can be used to run
|
||||
@@ -832,6 +832,10 @@ USE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
|
||||
LCMS_CFLAGS:=@LCMS_CFLAGS@
|
||||
LCMS_LIBS:=@LCMS_LIBS@
|
||||
|
||||
USE_EXTERNAL_HARFBUZZ:=@USE_EXTERNAL_HARFBUZZ@
|
||||
HARFBUZZ_CFLAGS:=@HARFBUZZ_CFLAGS@
|
||||
HARFBUZZ_LIBS:=@HARFBUZZ_LIBS@
|
||||
|
||||
USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
|
||||
PNG_LIBS:=@PNG_LIBS@
|
||||
PNG_CFLAGS:=@PNG_CFLAGS@
|
||||
|
||||
@@ -948,9 +948,14 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
|
||||
# FIXME: we should list the discovered compilers as an exclude pattern!
|
||||
# If we do that, we can do this detection before POST_DETECTION, and still
|
||||
# find the build compilers in the tools dir, if needed.
|
||||
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
|
||||
if test "x$OPENJDK_BUILD_OS" = xmacosx; then
|
||||
BASIC_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
|
||||
BASIC_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
|
||||
else
|
||||
BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
|
||||
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
|
||||
fi
|
||||
BASIC_FIXUP_EXECUTABLE(BUILD_CC)
|
||||
BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
|
||||
BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
|
||||
BASIC_PATH_PROGS(BUILD_NM, nm gcc-nm)
|
||||
BASIC_FIXUP_EXECUTABLE(BUILD_NM)
|
||||
|
||||
@@ -28,12 +28,12 @@
|
||||
|
||||
DEFAULT_VERSION_FEATURE=11
|
||||
DEFAULT_VERSION_INTERIM=0
|
||||
DEFAULT_VERSION_UPDATE=9
|
||||
DEFAULT_VERSION_PATCH=1
|
||||
DEFAULT_VERSION_UPDATE=10
|
||||
DEFAULT_VERSION_PATCH=0
|
||||
DEFAULT_VERSION_EXTRA1=0
|
||||
DEFAULT_VERSION_EXTRA2=0
|
||||
DEFAULT_VERSION_EXTRA3=0
|
||||
DEFAULT_VERSION_DATE=2020-11-04
|
||||
DEFAULT_VERSION_DATE=2021-01-19
|
||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||
|
||||
@@ -1189,7 +1189,7 @@ define SetupNativeCompilationBody
|
||||
# This only works if the openjdk_codesign identity is present on the system. Let
|
||||
# silently fail otherwise.
|
||||
ifneq ($(CODESIGN), )
|
||||
$(CODESIGN) -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||
$(CODESIGN) -f -s "$(MACOSX_CODESIGN_IDENTITY)" --timestamp --options runtime \
|
||||
--entitlements $$(call GetEntitlementsFile, $$@) $$@
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -73,6 +73,10 @@ ifeq ($(FREETYPE_TO_USE), system)
|
||||
LEGAL_EXCLUDES += freetype.md
|
||||
endif
|
||||
|
||||
ifeq ($(USE_EXTERNAL_HARFBUZZ), true)
|
||||
LEGAL_EXCLUDES += harfbuzz.md
|
||||
endif
|
||||
|
||||
$(eval $(call SetupCopyLegalFiles, COPY_LEGAL, \
|
||||
EXCLUDES := $(LEGAL_EXCLUDES), \
|
||||
))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@@ -50,7 +50,7 @@ all=ADP020-AED784-AFA004-AFN971-ALL008-AMD051-ANG532-AOA973-ARS032-ATS040-AUD036
|
||||
LVL428-LYD434-MAD504-MDL498-MGA969-MGF450-MKD807-MMK104-MNT496-MOP446-MRO478-MRU929-\
|
||||
MTL470-MUR480-MVR462-MWK454-MXN484-MXV979-MYR458-MZM508-MZN943-NAD516-NGN566-\
|
||||
NIO558-NLG528-NOK578-NPR524-NZD554-OMR512-PAB590-PEN604-PGK598-PHP608-\
|
||||
PKR586-PLN985-PTE620-PYG600-QAR634-ROL946-RON946-RSD941-RUB643-RUR810-RWF646-SAR682-\
|
||||
PKR586-PLN985-PTE620-PYG600-QAR634-ROL642-RON946-RSD941-RUB643-RUR810-RWF646-SAR682-\
|
||||
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-\
|
||||
@@ -588,7 +588,7 @@ ZW=ZWL
|
||||
|
||||
minor0=\
|
||||
ADP-BEF-BIF-BYB-BYR-CLP-DJF-ESP-GNF-\
|
||||
GRD-ISK-ITL-JPY-KMF-KRW-LUF-MGF-PYG-PTE-RWF-\
|
||||
GRD-ISK-ITL-JPY-KMF-KRW-LUF-MGF-PYG-PTE-ROL-RWF-\
|
||||
TPE-TRL-UGX-UYI-VND-VUV-XAF-XOF-XPF
|
||||
minor3=\
|
||||
BHD-IQD-JOD-KWD-LYD-OMR-TND
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
tzdata2020a
|
||||
tzdata2020d
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
# Corrections are welcome.
|
||||
|
||||
# Algeria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -110,10 +110,9 @@ Rule Algeria 1978 only - Mar 24 1:00 1:00 S
|
||||
Rule Algeria 1978 only - Sep 22 3:00 0 -
|
||||
Rule Algeria 1980 only - Apr 25 0:00 1:00 S
|
||||
Rule Algeria 1980 only - Oct 31 2:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
|
||||
Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
0:00 Algeria WE%sT 1940 Feb 25 2:00
|
||||
1:00 Algeria CE%sT 1946 Oct 7
|
||||
@@ -199,7 +198,7 @@ Link Africa/Abidjan Atlantic/St_Helena # St Helena
|
||||
# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
|
||||
# did not apply to Cairo, Alexandria, or Port Said.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Egypt 1940 only - Jul 15 0:00 1:00 S
|
||||
Rule Egypt 1940 only - Oct 1 0:00 0 -
|
||||
Rule Egypt 1941 only - Apr 15 0:00 1:00 S
|
||||
@@ -434,7 +433,7 @@ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
|
||||
# now Ghana observed different DST regimes in different years. For
|
||||
# lack of better info, use Shanks except treat the minus sign as a
|
||||
# typo, and assume DST started in 1920 not 1936.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ghana 1920 1942 - Sep 1 0:00 0:20 -
|
||||
Rule Ghana 1920 1942 - Dec 31 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -524,7 +523,7 @@ Zone Africa/Monrovia -0:43:08 - LMT 1882
|
||||
# From Paul Eggert (2013-10-25):
|
||||
# For now, assume they're reverting to the pre-2012 rules of permanent UT +02.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Libya 1951 only - Oct 14 2:00 1:00 S
|
||||
Rule Libya 1952 only - Jan 1 0:00 0 -
|
||||
Rule Libya 1953 only - Oct 9 2:00 1:00 S
|
||||
@@ -647,7 +646,7 @@ Zone Africa/Tripoli 0:52:44 - LMT 1920
|
||||
# "The trial ended on March 29, 2009, when the clocks moved back by one hour
|
||||
# at 2am (or 02:00) local time..."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
|
||||
Rule Mauritius 1983 only - Mar 21 0:00 0 -
|
||||
Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
|
||||
@@ -898,17 +897,30 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# https://maroc-diplomatique.net/maroc-le-retour-a-lheure-gmt-est-prevu-dimanche-prochain/
|
||||
# http://aujourdhui.ma/actualite/gmt1-retour-a-lheure-normale-dimanche-prochain-1
|
||||
#
|
||||
# From Paul Eggert (2020-04-14):
|
||||
# From Milamber (2020-05-31)
|
||||
# In Morocco (where I live), the end of Ramadan (Arabic month) is followed by
|
||||
# the Eid al-Fitr, and concretely it's 1 or 2 day offs for the people (with
|
||||
# traditional visiting of family, big lunches/dinners, etc.). So for this
|
||||
# year the astronomical calculations don't include the following 2 days off in
|
||||
# the calc. These 2 days fall in a Sunday/Monday, so it's not acceptable by
|
||||
# people to have a time shift during these 2 days off. Perhaps you can modify
|
||||
# the (predicted) rules for next years: if the end of Ramadan is a (probable)
|
||||
# Friday or Saturday (and so the 2 days off are on a weekend), the next time
|
||||
# shift will be the next weekend.
|
||||
#
|
||||
# From Paul Eggert (2020-05-31):
|
||||
# For now, guess that in the future Morocco will fall back at 03:00
|
||||
# the last Sunday before Ramadan, and spring forward at 02:00 the
|
||||
# first Sunday after the day after Ramadan. To implement this,
|
||||
# transition dates for 2021 through 2087 were determined by running
|
||||
# the following program under GNU Emacs 26.3.
|
||||
# (let ((islamic-year 1442))
|
||||
# first Sunday after two days after Ramadan. To implement this,
|
||||
# transition dates and times for 2019 through 2087 were determined by
|
||||
# running the following program under GNU Emacs 26.3. (This algorithm
|
||||
# also produces the correct transition dates for 2016 through 2018,
|
||||
# though the times differ due to Morocco's time zone change in 2018.)
|
||||
# (let ((islamic-year 1440))
|
||||
# (require 'cal-islam)
|
||||
# (while (< islamic-year 1511)
|
||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||
# (b (1+ (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (b (+ 2 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
|
||||
# (sunday 0))
|
||||
# (while (/= sunday (mod (setq a (1- a)) 7)))
|
||||
# (while (/= sunday (mod b 7))
|
||||
@@ -923,7 +935,7 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
||||
# (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
|
||||
# (setq islamic-year (+ 1 islamic-year))))
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Morocco 1939 only - Sep 12 0:00 1:00 -
|
||||
Rule Morocco 1939 only - Nov 19 0:00 0 -
|
||||
Rule Morocco 1940 only - Feb 25 0:00 1:00 -
|
||||
@@ -974,7 +986,7 @@ Rule Morocco 2021 only - May 16 2:00 0 -
|
||||
Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
|
||||
Rule Morocco 2022 only - May 8 2:00 0 -
|
||||
Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
|
||||
Rule Morocco 2023 only - Apr 23 2:00 0 -
|
||||
Rule Morocco 2023 only - Apr 30 2:00 0 -
|
||||
Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
|
||||
Rule Morocco 2024 only - Apr 14 2:00 0 -
|
||||
Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
|
||||
@@ -990,7 +1002,7 @@ Rule Morocco 2029 only - Feb 18 2:00 0 -
|
||||
Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
|
||||
Rule Morocco 2030 only - Feb 10 2:00 0 -
|
||||
Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
|
||||
Rule Morocco 2031 only - Jan 26 2:00 0 -
|
||||
Rule Morocco 2031 only - Feb 2 2:00 0 -
|
||||
Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
|
||||
Rule Morocco 2032 only - Jan 18 2:00 0 -
|
||||
Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
|
||||
@@ -1006,7 +1018,7 @@ Rule Morocco 2036 only - Nov 23 2:00 0 -
|
||||
Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
|
||||
Rule Morocco 2037 only - Nov 15 2:00 0 -
|
||||
Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
|
||||
Rule Morocco 2038 only - Oct 31 2:00 0 -
|
||||
Rule Morocco 2038 only - Nov 7 2:00 0 -
|
||||
Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
|
||||
Rule Morocco 2039 only - Oct 23 2:00 0 -
|
||||
Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
|
||||
@@ -1022,7 +1034,7 @@ Rule Morocco 2044 only - Aug 28 2:00 0 -
|
||||
Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
|
||||
Rule Morocco 2045 only - Aug 20 2:00 0 -
|
||||
Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
|
||||
Rule Morocco 2046 only - Aug 5 2:00 0 -
|
||||
Rule Morocco 2046 only - Aug 12 2:00 0 -
|
||||
Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
|
||||
Rule Morocco 2047 only - Jul 28 2:00 0 -
|
||||
Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
|
||||
@@ -1038,7 +1050,7 @@ Rule Morocco 2052 only - Jun 2 2:00 0 -
|
||||
Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
|
||||
Rule Morocco 2053 only - May 25 2:00 0 -
|
||||
Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
|
||||
Rule Morocco 2054 only - May 10 2:00 0 -
|
||||
Rule Morocco 2054 only - May 17 2:00 0 -
|
||||
Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
|
||||
Rule Morocco 2055 only - May 2 2:00 0 -
|
||||
Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
|
||||
@@ -1054,7 +1066,7 @@ Rule Morocco 2060 only - Mar 7 2:00 0 -
|
||||
Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
|
||||
Rule Morocco 2061 only - Feb 27 2:00 0 -
|
||||
Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
|
||||
Rule Morocco 2062 only - Feb 12 2:00 0 -
|
||||
Rule Morocco 2062 only - Feb 19 2:00 0 -
|
||||
Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
|
||||
Rule Morocco 2063 only - Feb 4 2:00 0 -
|
||||
Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
|
||||
@@ -1070,7 +1082,7 @@ Rule Morocco 2067 only - Dec 11 2:00 0 -
|
||||
Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
|
||||
Rule Morocco 2068 only - Dec 2 2:00 0 -
|
||||
Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
|
||||
Rule Morocco 2069 only - Nov 17 2:00 0 -
|
||||
Rule Morocco 2069 only - Nov 24 2:00 0 -
|
||||
Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
|
||||
Rule Morocco 2070 only - Nov 9 2:00 0 -
|
||||
Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
|
||||
@@ -1086,7 +1098,7 @@ Rule Morocco 2075 only - Sep 15 2:00 0 -
|
||||
Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
|
||||
Rule Morocco 2076 only - Sep 6 2:00 0 -
|
||||
Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
|
||||
Rule Morocco 2077 only - Aug 22 2:00 0 -
|
||||
Rule Morocco 2077 only - Aug 29 2:00 0 -
|
||||
Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
|
||||
Rule Morocco 2078 only - Aug 14 2:00 0 -
|
||||
Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
|
||||
@@ -1096,13 +1108,13 @@ Rule Morocco 2080 only - Jul 21 2:00 0 -
|
||||
Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
|
||||
Rule Morocco 2081 only - Jul 13 2:00 0 -
|
||||
Rule Morocco 2082 only - May 24 3:00 -1:00 -
|
||||
Rule Morocco 2082 only - Jun 28 2:00 0 -
|
||||
Rule Morocco 2082 only - Jul 5 2:00 0 -
|
||||
Rule Morocco 2083 only - May 16 3:00 -1:00 -
|
||||
Rule Morocco 2083 only - Jun 20 2:00 0 -
|
||||
Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
|
||||
Rule Morocco 2084 only - Jun 11 2:00 0 -
|
||||
Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
|
||||
Rule Morocco 2085 only - May 27 2:00 0 -
|
||||
Rule Morocco 2085 only - Jun 3 2:00 0 -
|
||||
Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
|
||||
Rule Morocco 2086 only - May 19 2:00 0 -
|
||||
Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
|
||||
@@ -1203,7 +1215,7 @@ Link Africa/Maputo Africa/Lusaka # Zambia
|
||||
# Use plain "WAT" and "CAT" for the time zone abbreviations, to be compatible
|
||||
# with Namibia's neighbors.
|
||||
|
||||
# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Vanguard section, for zic and other parsers that support negative DST.
|
||||
Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
|
||||
Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
|
||||
@@ -1326,7 +1338,7 @@ Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
|
||||
# See Africa/Nairobi.
|
||||
|
||||
# South Africa
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
|
||||
Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1359,7 +1371,7 @@ Link Africa/Johannesburg Africa/Mbabane # Eswatini
|
||||
# Abdalla of NTC, archived at:
|
||||
# https://mm.icann.org/pipermail/tz/2017-October/025333.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Sudan 1970 only - May 1 0:00 1:00 S
|
||||
Rule Sudan 1970 1985 - Oct 15 0:00 0 -
|
||||
Rule Sudan 1971 only - Apr 30 0:00 1:00 S
|
||||
@@ -1447,7 +1459,7 @@ Zone Africa/Juba 2:06:28 - LMT 1931
|
||||
# http://www.almadenahnews.com/newss/news.php?c=118&id=38036
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_tunis02.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
|
||||
Rule Tunisia 1939 only - Nov 18 23:00s 0 -
|
||||
Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
|
||||
@@ -1474,9 +1486,7 @@ Rule Tunisia 2005 only - Sep 30 1:00s 0 -
|
||||
Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
|
||||
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
|
||||
# See Europe/Paris for PMT-related transitions.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
|
||||
@@ -93,15 +93,30 @@
|
||||
# Australian Antarctica Division informed us that Casey changed time
|
||||
# zone to UTC+11 in "the morning of 22nd October 2016".
|
||||
|
||||
# From Steffen Thorsen (2020-10-02, as corrected):
|
||||
# Based on information we have received from the Australian Antarctic
|
||||
# Division, Casey station and Macquarie Island station will move to Tasmanian
|
||||
# daylight savings time on Sunday 4 October. This will take effect from 0001
|
||||
# hrs on Sunday 4 October 2020 and will mean Casey and Macquarie Island will
|
||||
# be on the same time zone as Hobart. Some past dates too for this 3 hour
|
||||
# time change back and forth between UTC+8 and UTC+11 for Casey:
|
||||
# - 2018 Oct 7 4:00 - 2019 Mar 17 3:00 - 2019 Oct 4 3:00 - 2020 Mar 8 3:00
|
||||
# and now - 2020 Oct 4 0:01
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
Zone Antarctica/Casey 0 - -00 1969
|
||||
8:00 - +08 2009 Oct 18 2:00
|
||||
11:00 - +11 2010 Mar 5 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
8:00 - +08 2011 Oct 28 2:00
|
||||
11:00 - +11 2012 Feb 21 17:00u
|
||||
8:00 - +08 2016 Oct 22
|
||||
8:00 - +08 2016 Oct 22
|
||||
11:00 - +11 2018 Mar 11 4:00
|
||||
8:00 - +08
|
||||
8:00 - +08 2018 Oct 7 4:00
|
||||
11:00 - +11 2019 Mar 17 3:00
|
||||
8:00 - +08 2019 Oct 4 3:00
|
||||
11:00 - +11 2020 Mar 8 3:00
|
||||
8:00 - +08 2020 Oct 4 0:01
|
||||
11:00 - +11
|
||||
Zone Antarctica/Davis 0 - -00 1957 Jan 13
|
||||
7:00 - +07 1964 Nov
|
||||
0 - -00 1969 Feb
|
||||
@@ -247,7 +262,7 @@ Zone Antarctica/Syowa 0 - -00 1957 Jan 29
|
||||
# suggested by Bengt-Inge Larsson comment them out for now, and approximate
|
||||
# with only UTC and CEST. Uncomment them when 2014b is more prevalent.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
#Rule Troll 2005 max - Mar 1 1:00u 1:00 +01
|
||||
Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
|
||||
#Rule Troll 2005 max - Oct lastSun 1:00u 1:00 +01
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
###############################################################################
|
||||
|
||||
# These rules are stolen from the 'europe' file.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
|
||||
Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
|
||||
Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
|
||||
@@ -137,7 +137,7 @@ Zone Asia/Kabul 4:36:48 - LMT 1890
|
||||
# or
|
||||
# (brief)
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
|
||||
Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -163,7 +163,7 @@ Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
|
||||
# http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
|
||||
# http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
|
||||
Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -250,7 +250,7 @@ Zone Asia/Baku 3:19:24 - LMT 1924 May 2
|
||||
# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
|
||||
Rule Dhaka 2009 only - Dec 31 24:00 0 -
|
||||
|
||||
@@ -326,7 +326,7 @@ Zone Asia/Yangon 6:24:47 - LMT 1880 # or Rangoon
|
||||
# generally esteemed a success, it was announced early in 1920 that it would
|
||||
# not be repeated."
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Shang 1919 only - Apr 12 24:00 1:00 D
|
||||
Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
|
||||
@@ -422,7 +422,7 @@ Rule Shang 1919 only - Sep 30 24:00 0 S
|
||||
# the Yangtze river delta area during that period of time although the scope
|
||||
# of such use will need to be investigated to determine.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Shang 1940 only - Jun 1 0:00 1:00 D
|
||||
Rule Shang 1940 only - Oct 12 24:00 0 S
|
||||
Rule Shang 1941 only - Mar 15 0:00 1:00 D
|
||||
@@ -485,7 +485,7 @@ Rule Shang 1948 1949 - Sep 30 24:00 0 S #plan
|
||||
# to begin on 17 April.
|
||||
# http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule PRC 1986 only - May 4 2:00 1:00 D
|
||||
Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
|
||||
Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
|
||||
@@ -869,7 +869,7 @@ Zone Asia/Urumqi 5:50:20 - LMT 1928
|
||||
# or dates for the 1942 and 1945 transitions.
|
||||
# The Japanese occupation of Hong Kong began 1941-12-25.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule HK 1946 only - Apr 21 0:00 1:00 S
|
||||
Rule HK 1946 only - Dec 1 3:30s 0 -
|
||||
Rule HK 1947 only - Apr 13 3:30s 1:00 S
|
||||
@@ -996,7 +996,7 @@ Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42
|
||||
# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
|
||||
# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Taiwan 1946 only - May 15 0:00 1:00 D
|
||||
Rule Taiwan 1946 only - Oct 1 0:00 0 S
|
||||
Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
|
||||
@@ -1122,7 +1122,7 @@ Zone Asia/Taipei 8:06:00 - LMT 1896 Jan 1
|
||||
# The 1904 decree says that Macau changed from the meridian of
|
||||
# Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
|
||||
Rule Macau 1942 only - Nov 17 23:00 0 -
|
||||
Rule Macau 1943 only - Sep 30 23:00 0 S
|
||||
@@ -1180,7 +1180,7 @@ Zone Asia/Macau 7:34:10 - LMT 1904 Oct 30
|
||||
# Cyprus to remain united in time. Cyprus Mail 2017-10-17.
|
||||
# https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
|
||||
Rule Cyprus 1975 only - Oct 12 0:00 0 -
|
||||
Rule Cyprus 1976 only - May 15 0:00 1:00 S
|
||||
@@ -1557,7 +1557,7 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
||||
# be changed back to its previous state on the 24 hours of the
|
||||
# thirtieth day of Shahrivar.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
|
||||
Rule Iran 1978 only - Oct 20 24:00 0 -
|
||||
Rule Iran 1979 only - Sep 18 24:00 0 -
|
||||
@@ -1699,7 +1699,7 @@ Zone Asia/Tehran 3:25:44 - LMT 1916
|
||||
# We have published a short article in English about the change:
|
||||
# https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iraq 1982 only - May 1 0:00 1:00 -
|
||||
Rule Iraq 1982 1984 - Oct 1 0:00 0 -
|
||||
Rule Iraq 1983 only - Mar 31 0:00 1:00 -
|
||||
@@ -1722,6 +1722,10 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
|
||||
# Israel
|
||||
|
||||
# For more info about the motivation for DST in Israel, see:
|
||||
# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
|
||||
# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564
|
||||
|
||||
# From Ephraim Silverberg (2001-01-11):
|
||||
#
|
||||
# I coined "IST/IDT" circa 1988. Until then there were three
|
||||
@@ -1743,7 +1747,7 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890
|
||||
# family is from India).
|
||||
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1940 only - Jun 1 0:00 1:00 D
|
||||
Rule Zion 1942 1944 - Nov 1 0:00 0 S
|
||||
Rule Zion 1943 only - Apr 1 2:00 1:00 D
|
||||
@@ -1835,7 +1839,7 @@ Rule Zion 1988 only - Sep 4 0:00 0 S
|
||||
# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
|
||||
# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1989 only - Apr 30 0:00 1:00 D
|
||||
Rule Zion 1989 only - Sep 3 0:00 0 S
|
||||
Rule Zion 1990 only - Mar 25 0:00 1:00 D
|
||||
@@ -1851,7 +1855,7 @@ Rule Zion 1993 only - Sep 5 0:00 0 S
|
||||
# Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
|
||||
# calling the office directly at 972-2-6701447 or 972-2-6701448.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1994 only - Apr 1 0:00 1:00 D
|
||||
Rule Zion 1994 only - Aug 28 0:00 0 S
|
||||
Rule Zion 1995 only - Mar 31 0:00 1:00 D
|
||||
@@ -1871,7 +1875,7 @@ Rule Zion 1995 only - Sep 3 0:00 0 S
|
||||
#
|
||||
# where YYYY is the relevant year.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 1996 only - Mar 15 0:00 1:00 D
|
||||
Rule Zion 1996 only - Sep 16 0:00 0 S
|
||||
Rule Zion 1997 only - Mar 21 0:00 1:00 D
|
||||
@@ -1894,7 +1898,7 @@ Rule Zion 1999 only - Sep 3 2:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2000 only - Apr 14 2:00 1:00 D
|
||||
Rule Zion 2000 only - Oct 6 1:00 0 S
|
||||
Rule Zion 2001 only - Apr 9 1:00 1:00 D
|
||||
@@ -1916,7 +1920,7 @@ Rule Zion 2004 only - Sep 22 1:00 0 S
|
||||
#
|
||||
# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
|
||||
Rule Zion 2005 only - Oct 9 2:00 0 S
|
||||
Rule Zion 2006 only - Oct 1 2:00 0 S
|
||||
@@ -1936,7 +1940,7 @@ Rule Zion 2012 only - Sep 23 2:00 0 S
|
||||
# As of 2013, DST starts at 02:00 on the Friday before the last Sunday
|
||||
# in March. DST ends at 02:00 on the last Sunday of October.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
|
||||
Rule Zion 2013 max - Oct lastSun 2:00 0 S
|
||||
|
||||
@@ -2036,7 +2040,7 @@ Zone Asia/Jerusalem 2:20:54 - LMT 1880
|
||||
# do in any POSIX or C platform. The "25:00" assumes zic from 2007 or later,
|
||||
# which should be safe now.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
|
||||
Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
|
||||
Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
|
||||
@@ -2113,7 +2117,7 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
|
||||
# From Paul Eggert (2013-12-11):
|
||||
# As Steffen suggested, consider the past 21-month experiment to be DST.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Jordan 1973 only - Jun 6 0:00 1:00 S
|
||||
Rule Jordan 1973 1975 - Oct 1 0:00 0 -
|
||||
Rule Jordan 1974 1977 - May 1 0:00 1:00 S
|
||||
@@ -2439,7 +2443,7 @@ Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
|
||||
# Our government cancels daylight saving time 6th of August 2005.
|
||||
# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
|
||||
Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
|
||||
Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
|
||||
@@ -2495,7 +2499,7 @@ Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
|
||||
# follow and continued to use GMT+9:00 for interoperability.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule ROK 1948 only - Jun 1 0:00 1:00 D
|
||||
Rule ROK 1948 only - Sep 12 24:00 0 S
|
||||
Rule ROK 1949 only - Apr 3 0:00 1:00 D
|
||||
@@ -2583,7 +2587,7 @@ Zone Asia/Pyongyang 8:23:00 - LMT 1908 Apr 1
|
||||
|
||||
|
||||
# Lebanon
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
|
||||
Rule Lebanon 1920 only - Oct 25 0:00 0 -
|
||||
Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
|
||||
@@ -2613,7 +2617,7 @@ Zone Asia/Beirut 2:22:00 - LMT 1880
|
||||
2:00 Lebanon EE%sT
|
||||
|
||||
# Malaysia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
|
||||
Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
|
||||
#
|
||||
@@ -2758,7 +2762,7 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
|
||||
# September daylight saving time ends. Source:
|
||||
# http://zasag.mn/news/view/8969
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
|
||||
Rule Mongol 1983 only - Oct 1 0:00 0 -
|
||||
# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
|
||||
@@ -2946,7 +2950,7 @@ Zone Asia/Kathmandu 5:41:16 - LMT 1920
|
||||
# "People laud PM's announcement to end DST"
|
||||
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
|
||||
Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
|
||||
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
|
||||
@@ -3240,15 +3244,42 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
|
||||
# From Sharef Mustafa (2019-10-18):
|
||||
# Palestine summer time will end on midnight Oct 26th 2019 ...
|
||||
# http://www.palestinecabinet.gov.ps/website/ar/ViewDetails?ID=43948
|
||||
#
|
||||
# From Steffen Thorsen (2020-10-20):
|
||||
# Some sources such as these say, and display on clocks, that DST ended at
|
||||
# midnight last year...
|
||||
# https://www.amad.ps/ar/post/320006
|
||||
#
|
||||
# From Tim Parenti (2020-10-20):
|
||||
# The report of the Palestinian Cabinet meeting of 2019-10-14 confirms
|
||||
# a decision on (translated): "The start of the winter time in Palestine, by
|
||||
# delaying the clock by sixty minutes, starting from midnight on Friday /
|
||||
# Saturday corresponding to 26/10/2019."
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/43948
|
||||
|
||||
# From Sharef Mustafa (2020-10-20):
|
||||
# As per the palestinian cabinet announcement yesterday , the day light saving
|
||||
# shall [end] on Oct 24th 2020 at 01:00AM by delaying the clock by 60 minutes.
|
||||
# http://www.palestinecabinet.gov.ps/portal/Meeting/Details/51584
|
||||
|
||||
# From Tim Parenti (2020-10-20):
|
||||
# Predict future fall transitions at 01:00 on the Saturday preceding October's
|
||||
# last Sunday (i.e., Sat>=24). This is consistent with our predictions since
|
||||
# 2016, although the time of the change differed slightly in 2019.
|
||||
|
||||
# From Pierre Cashon (2020-10-20):
|
||||
# The summer time this year started on March 28 at 00:00.
|
||||
# https://wafa.ps/ar_page.aspx?id=GveQNZa872839351758aGveQNZ
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/50284
|
||||
# The winter time in 2015 started on October 23 at 01:00.
|
||||
# https://wafa.ps/ar_page.aspx?id=CgpCdYa670694628582aCgpCdY
|
||||
# http://www.palestinecabinet.gov.ps/portal/meeting/details/27583
|
||||
#
|
||||
# From Paul Eggert (2019-04-10):
|
||||
# For now, guess spring-ahead transitions are March's last Friday at 00:00.
|
||||
#
|
||||
# From Tim Parenti (2016-10-19):
|
||||
# Predict fall transitions on October's last Saturday at 01:00 from now on.
|
||||
# For now, guess spring-ahead transitions are at 00:00 on the Saturday
|
||||
# preceding March's last Sunday (i.e., Sat>=24).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
|
||||
Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
|
||||
Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
|
||||
@@ -3262,10 +3293,10 @@ Rule Palestine 2004 only - Oct 1 1:00 0 -
|
||||
Rule Palestine 2005 only - Oct 4 2:00 0 -
|
||||
Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
|
||||
Rule Palestine 2006 only - Sep 22 0:00 0 -
|
||||
Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
|
||||
Rule Palestine 2007 only - Sep 13 2:00 0 -
|
||||
Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
|
||||
Rule Palestine 2008 only - Sep 1 0:00 0 -
|
||||
Rule Palestine 2009 only - Sep Fri>=1 1:00 0 -
|
||||
Rule Palestine 2009 only - Sep 4 1:00 0 -
|
||||
Rule Palestine 2010 only - Mar 26 0:00 1:00 S
|
||||
Rule Palestine 2010 only - Aug 11 0:00 0 -
|
||||
Rule Palestine 2011 only - Apr 1 0:01 1:00 S
|
||||
@@ -3274,12 +3305,16 @@ Rule Palestine 2011 only - Aug 30 0:00 1:00 S
|
||||
Rule Palestine 2011 only - Sep 30 0:00 0 -
|
||||
Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
|
||||
Rule Palestine 2012 only - Sep 21 1:00 0 -
|
||||
Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
|
||||
Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 -
|
||||
Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S
|
||||
Rule Palestine 2013 only - Sep 27 0:00 0 -
|
||||
Rule Palestine 2014 only - Oct 24 0:00 0 -
|
||||
Rule Palestine 2015 only - Mar 28 0:00 1:00 S
|
||||
Rule Palestine 2015 only - Oct 23 1:00 0 -
|
||||
Rule Palestine 2016 2018 - Mar Sat>=24 1:00 1:00 S
|
||||
Rule Palestine 2016 max - Oct lastSat 1:00 0 -
|
||||
Rule Palestine 2019 max - Mar lastFri 0:00 1:00 S
|
||||
Rule Palestine 2016 2018 - Oct Sat>=24 1:00 0 -
|
||||
Rule Palestine 2019 only - Mar 29 0:00 1:00 S
|
||||
Rule Palestine 2019 only - Oct Sat>=24 0:00 0 -
|
||||
Rule Palestine 2020 max - Mar Sat>=24 0:00 1:00 S
|
||||
Rule Palestine 2020 max - Oct Sat>=24 1:00 0 -
|
||||
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
|
||||
@@ -3348,7 +3383,7 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
||||
# influence of the sources. There is no current abbreviation for DST,
|
||||
# so use "PDT", the usual American style.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Phil 1936 only - Nov 1 0:00 1:00 D
|
||||
Rule Phil 1937 only - Feb 1 0:00 0 S
|
||||
Rule Phil 1954 only - Apr 12 0:00 1:00 D
|
||||
@@ -3496,7 +3531,7 @@ Zone Asia/Colombo 5:19:24 - LMT 1880
|
||||
5:30 - +0530
|
||||
|
||||
# Syria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
|
||||
Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
|
||||
Rule Syria 1962 only - Apr 29 2:00 1:00 S
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
# Please see the notes below for the controversy about "EST" versus "AEST" etc.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Aus 1917 only - Jan 1 0:01 1:00 D
|
||||
Rule Aus 1917 only - Mar 25 2:00 0 S
|
||||
Rule Aus 1942 only - Jan 1 2:00 1:00 D
|
||||
@@ -55,7 +55,7 @@ Zone Australia/Darwin 8:43:20 - LMT 1895 Feb
|
||||
9:30 Aus AC%sT
|
||||
# Western Australia
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
|
||||
Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
|
||||
@@ -93,7 +93,7 @@ Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
|
||||
# applies to all of the Whitsundays.
|
||||
# http://www.australia.gov.au/about-australia/australian-story/austn-islands
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
|
||||
Rule AQ 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -109,7 +109,7 @@ Zone Australia/Lindeman 9:55:56 - LMT 1895
|
||||
10:00 Holiday AE%sT
|
||||
|
||||
# South Australia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AS 1986 only - Oct 19 2:00s 1:00 D
|
||||
Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -137,7 +137,7 @@ Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
|
||||
# http://www.bom.gov.au/climate/averages/tables/dst_times.shtml
|
||||
# says King Island didn't observe DST from WWII until late 1971.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
|
||||
Rule AT 1968 only - Mar lastSun 2:00s 0 S
|
||||
Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
|
||||
@@ -170,7 +170,7 @@ Zone Australia/Currie 9:35:28 - LMT 1895 Sep
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Victoria
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AV 1972 only - Feb lastSun 2:00s 0 S
|
||||
Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -191,7 +191,7 @@ Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb
|
||||
10:00 AV AE%sT
|
||||
|
||||
# New South Wales
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
|
||||
Rule AN 1972 only - Feb 27 2:00s 0 S
|
||||
Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
|
||||
@@ -220,7 +220,7 @@ Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb
|
||||
9:30 AS AC%sT
|
||||
|
||||
# Lord Howe Island
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
|
||||
Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
|
||||
Rule LH 1985 only - Oct lastSun 2:00 0:30 -
|
||||
@@ -275,8 +275,9 @@ Zone Antarctica/Macquarie 0 - -00 1899 Nov
|
||||
10:00 Aus AE%sT 1919 Apr 1 0:00s
|
||||
0 - -00 1948 Mar 25
|
||||
10:00 Aus AE%sT 1967
|
||||
10:00 AT AE%sT 2010 Apr 4 3:00
|
||||
11:00 - +11
|
||||
10:00 AT AE%sT 2010
|
||||
10:00 1:00 AEDT 2011
|
||||
10:00 AT AE%sT
|
||||
|
||||
# Christmas
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -403,7 +404,20 @@ Zone Indian/Cocos 6:27:40 - LMT 1900
|
||||
# From Michael Deckers (2019-08-06):
|
||||
# https://www.laws.gov.fj/LawsAsMade/downloadfile/848
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Raymond Kumar (2020-10-08):
|
||||
# [DST in Fiji] is from December 20th 2020, till 17th January 2021.
|
||||
# From Alan Mintz (2020-10-08):
|
||||
# https://www.laws.gov.fj/LawsAsMade/GetFile/1071
|
||||
# From Tim Parenti (2020-10-08):
|
||||
# https://www.fijivillage.com/news/Daylight-saving-from-Dec-20th-this-year-to-Jan-17th-2021-8rf4x5/
|
||||
# "Minister for Employment, Parveen Bala says they had never thought of
|
||||
# stopping daylight saving. He says it was just to decide on when it should
|
||||
# start and end. Bala says it is a short period..."
|
||||
# Since the end date is still in line with our ongoing predictions, assume for
|
||||
# now that the later-than-usual start date is a one-time departure from the
|
||||
# recent second Sunday in November pattern.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
|
||||
Rule Fiji 2009 only - Nov 29 2:00 1:00 -
|
||||
@@ -414,7 +428,9 @@ Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
|
||||
Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
|
||||
Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
|
||||
Rule Fiji 2015 max - Jan Sun>=12 3:00 0 -
|
||||
Rule Fiji 2019 max - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
|
||||
Rule Fiji 2020 only - Dec 20 2:00 1:00 -
|
||||
Rule Fiji 2021 max - Nov Sun>=8 2:00 1:00 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva
|
||||
12:00 Fiji +12/+13
|
||||
@@ -432,7 +448,7 @@ Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
|
||||
|
||||
# Guam
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# http://guamlegislature.com/Public_Laws_5th/PL05-025.pdf
|
||||
# http://documents.guam.gov/wp-content/uploads/E.O.-59-7-Guam-Daylight-Savings-Time-May-6-1959.pdf
|
||||
Rule Guam 1959 only - Jun 27 2:00 1:00 D
|
||||
@@ -543,7 +559,7 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
|
||||
12:00 - +12
|
||||
|
||||
# New Caledonia
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
|
||||
Rule NC 1978 1979 - Feb 27 0:00 0 -
|
||||
Rule NC 1996 only - Dec 1 2:00s 1:00 -
|
||||
@@ -558,7 +574,7 @@ Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 # Nouméa
|
||||
|
||||
# New Zealand
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NZ 1927 only - Nov 6 2:00 1:00 S
|
||||
Rule NZ 1928 only - Mar 4 2:00 0 M
|
||||
Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
|
||||
@@ -610,7 +626,7 @@ Link Pacific/Auckland Antarctica/McMurdo
|
||||
|
||||
# Cook Is
|
||||
# From Shanks & Pottenger:
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cook 1978 only - Nov 12 0:00 0:30 -
|
||||
Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
|
||||
Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
|
||||
@@ -755,7 +771,7 @@ Link Pacific/Pago_Pago Pacific/Midway # in US minor outlying islands
|
||||
# That web page currently lists transitions for 2012/3 and 2013/4.
|
||||
# Assume the pattern instituted in 2012 will continue indefinitely.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule WS 2010 only - Sep lastSun 0:00 1 -
|
||||
Rule WS 2011 only - Apr Sat>=1 4:00 0 -
|
||||
Rule WS 2011 only - Sep lastSat 3:00 1 -
|
||||
@@ -799,7 +815,7 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 1901
|
||||
13:00 - +13
|
||||
|
||||
# Tonga
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
|
||||
Rule Tonga 2000 only - Mar 19 2:00s 0 -
|
||||
Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
|
||||
@@ -880,7 +896,7 @@ Zone Pacific/Wake 11:06:28 - LMT 1901
|
||||
|
||||
|
||||
# Vanuatu
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanuatu 1983 only - Sep 25 0:00 1:00 -
|
||||
Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
|
||||
Rule Vanuatu 1984 only - Oct 23 0:00 1:00 -
|
||||
|
||||
@@ -411,7 +411,7 @@
|
||||
# http://www.irishstatutebook.ie/eli/1926/sro/919/made/en/print
|
||||
# http://www.irishstatutebook.ie/eli/1947/sro/71/made/en/print
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Summer Time Act, 1916
|
||||
Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
|
||||
Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
|
||||
@@ -552,7 +552,7 @@ Link Europe/London Europe/Isle_of_Man
|
||||
# The following is like GB-Eire and EU, except with standard time in
|
||||
# summer and negative daylight saving time in winter. It is for when
|
||||
# negative SAVE values are used.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Eire 1971 only - Oct 31 2:00u -1:00 -
|
||||
Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
|
||||
Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
|
||||
@@ -589,7 +589,7 @@ Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
|
||||
# predecessor organization, the European Communities.
|
||||
# For brevity they are called "EU rules" elsewhere in this file.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
|
||||
Rule EU 1977 only - Sep lastSun 1:00u 0 -
|
||||
Rule EU 1978 only - Oct 1 1:00u 0 -
|
||||
@@ -629,13 +629,13 @@ Rule C-Eur 1944 only - Oct 2 2:00s 0 -
|
||||
# corrected in version 2008d). The circumstantial evidence is simply the
|
||||
# tz database itself, as seen below:
|
||||
#
|
||||
# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# Zone Europe/Paris ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# Zone Europe/Monaco ...
|
||||
# 0:00 France WE%sT 1945 Sep 16 3:00
|
||||
#
|
||||
# Zone Europe/Belgrade 1:22:00 - LMT 1884
|
||||
# Zone Europe/Belgrade ...
|
||||
# 1:00 1:00 CEST 1945 Sep 16 2:00s
|
||||
#
|
||||
# Rule France 1945 only - Sep 16 3:00 0 -
|
||||
@@ -681,7 +681,7 @@ Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
|
||||
#
|
||||
# The 1917-1921 decree URLs are from Alexander Belopolsky (2016-08-23).
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
|
||||
#
|
||||
# Decree No. 142 (1917-12-22) http://istmat.info/node/28137
|
||||
@@ -795,7 +795,7 @@ Zone EET 2:00 EU EE%sT
|
||||
|
||||
|
||||
# Albania
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Albania 1940 only - Jun 16 0:00 1:00 S
|
||||
Rule Albania 1942 only - Nov 2 3:00 0 -
|
||||
Rule Albania 1943 only - Mar 29 2:00 1:00 S
|
||||
@@ -849,7 +849,7 @@ Zone Europe/Andorra 0:06:04 - LMT 1901
|
||||
# In 1946 the end of DST was on Monday, 7 October 1946, at 3:00 am.
|
||||
# Shanks had this right. Source: Die Weltpresse, 5. Oktober 1946, page 5.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Austria 1920 only - Apr 5 2:00s 1:00 S
|
||||
Rule Austria 1920 only - Sep 13 2:00s 0 -
|
||||
Rule Austria 1946 only - Apr 14 2:00s 1:00 S
|
||||
@@ -936,7 +936,7 @@ Zone Europe/Minsk 1:50:16 - LMT 1880
|
||||
# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
|
||||
# Assume Brussels switched to WET in 1918 when the armistice took effect.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
|
||||
Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
|
||||
Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
|
||||
@@ -996,7 +996,7 @@ Zone Europe/Brussels 0:17:30 - LMT 1880
|
||||
# EET -> EETDST is in 03:00 Local time in last Sunday of March ...
|
||||
# EETDST -> EET is in 04:00 Local time in last Sunday of October
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bulg 1979 only - Mar 31 23:00 1:00 S
|
||||
Rule Bulg 1979 only - Oct 1 1:00 0 -
|
||||
Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
|
||||
@@ -1028,7 +1028,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880
|
||||
# We know of no English-language name for historical Czech winter time;
|
||||
# abbreviate it as "GMT", as it happened to be GMT.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
|
||||
Rule Czech 1945 only - Oct 1 2:00s 0 -
|
||||
Rule Czech 1946 only - May 6 2:00s 1:00 S
|
||||
@@ -1052,17 +1052,16 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# Denmark, Faroe Islands, and Greenland
|
||||
|
||||
# From Jesper Nørgaard Welen (2005-04-26):
|
||||
# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
|
||||
# [introducing standard time] was in effect from 1894-01-01....
|
||||
# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
|
||||
# the law [introducing standard time] was in effect from 1894-01-01....
|
||||
# The page https://www.retsinformation.dk/eli/lta/1893/83
|
||||
# confirms this, and states that the law was put forth 1893-03-29.
|
||||
#
|
||||
# The EU [actually, EEC and Euratom] treaty with effect from 1973:
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
|
||||
# https://www.retsinformation.dk/eli/lta/1972/21100
|
||||
#
|
||||
# This provoked a new law from 1974 to make possible summer time changes
|
||||
# in subsequent decrees with the law
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
|
||||
# https://www.retsinformation.dk/eli/lta/1974/223
|
||||
#
|
||||
# It seems however that no decree was set forward until 1980. I have
|
||||
# not found any decree, but in another related law, the effecting DST
|
||||
@@ -1074,7 +1073,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# The law is about the management of the extra hour, concerning
|
||||
# working hours reported and effect on obligatory-rest rules (which
|
||||
# was suspended on that night):
|
||||
# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
|
||||
# https://web.archive.org/web/20140104053304/https://www.retsinformation.dk/Forms/R0710.aspx?id=60267
|
||||
|
||||
# From Jesper Nørgaard Welen (2005-06-11):
|
||||
# The Herning Folkeblad (1980-09-26) reported that the night between
|
||||
@@ -1084,7 +1083,7 @@ Zone Europe/Prague 0:57:44 - LMT 1850
|
||||
# Hence the "02:00" of the 1980 law refers to standard time, not
|
||||
# wall-clock time, and so the EU rules were in effect in 1980.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Denmark 1916 only - May 14 23:00 1:00 S
|
||||
Rule Denmark 1916 only - Sep 30 23:00 0 -
|
||||
Rule Denmark 1940 only - May 15 0:00 1:00 S
|
||||
@@ -1186,7 +1185,7 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
|
||||
# http://naalakkersuisut.gl/~/media/Nanoq/Files/Attached%20Files/Engelske-tekster/Legislation/Executive%20Order%20National%20Park.rtf
|
||||
# It is their only National Park.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
|
||||
Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
|
||||
Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
|
||||
@@ -1317,7 +1316,7 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880
|
||||
# From Paul Eggert (2014-06-14):
|
||||
# Go with Oja over Shanks.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Finland 1942 only - Apr 2 24:00 1:00 S
|
||||
Rule Finland 1942 only - Oct 4 1:00 0 -
|
||||
Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
|
||||
@@ -1349,10 +1348,58 @@ Link Europe/Helsinki Europe/Mariehamn
|
||||
# Françoise Gauquelin, Problèmes de l'heure résolus en astrologie,
|
||||
# Guy Trédaniel, Paris 1987
|
||||
|
||||
# From Michael Deckers (2020-06-11):
|
||||
# the law of 1891 <https://gallica.bnf.fr/ark:/12148/bpt6k64415343.texteImage>
|
||||
# was published on 1891-03-15, so it could only take force on 1891-03-16.
|
||||
|
||||
# From Michael Deckers (2020-06-10):
|
||||
# Le Gaulois, 1911-03-11, page 1/6, online at
|
||||
# https://www.retronews.fr/societe/echo-de-presse/2018/01/29/1911-change-lheure-de-paris
|
||||
# ... [ Instantly, all pressure driven clock dials halted... Nine minutes and
|
||||
# twenty-one seconds later the hands resumed their circular motion. ]
|
||||
# There are also precise reports about how the change was prepared in train
|
||||
# stations: all the publicly visible clocks stopped at midnight railway time
|
||||
# (or were covered), only the chief of service had a watch, labeled
|
||||
# "Heure ancienne", that he kept running until it reached 00:04:21, when
|
||||
# he announced "Heure nouvelle". See the "Le Petit Journal 1911-03-11".
|
||||
# https://gallica.bnf.fr/ark:/12148/bpt6k6192911/f1.item.zoom
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# That "all French clocks stopped" for 00:09:21 is a misreading of French
|
||||
# newspapers; this sort of adjustment applies only to certain
|
||||
# remote-controlled clocks ("pendules pneumatiques", of which there existed
|
||||
# perhaps a dozen in Paris, and which simply could not be set back remotely),
|
||||
# but not to all the clocks in all French towns and villages. For instance,
|
||||
# the following story in the "Courrier de Saône-et-Loire" 1911-03-11, page 2:
|
||||
# only works if legal time was stepped back (was not monotone): ...
|
||||
# [One can observe that children who had been born at midnight less 5
|
||||
# minutes and who had died at midnight of the old time, would turn out to
|
||||
# be dead before being born, time having been set back and having
|
||||
# suppressed 9 minutes and 25 seconds of their existence, that is, more
|
||||
# than they could spend.]
|
||||
#
|
||||
# From Paul Eggert (2020-06-12):
|
||||
# French time in railway stations was legally five minutes behind civil time,
|
||||
# which explains why railway "old time" ran to 00:04:21 instead of to 00:09:21.
|
||||
# The law's text (which Michael Deckers noted is at
|
||||
# <https://gallica.bnf.fr/ark:/12148/bpt6k2022333z/f2>) says only that
|
||||
# at 1911-03-11 00:00 legal time was that of Paris mean time delayed by
|
||||
# nine minutes and twenty-one seconds, and does not say how the
|
||||
# transition from Paris mean time was to occur.
|
||||
#
|
||||
# tzdb has no way to represent stopped clocks. As the railway practice
|
||||
# was to keep a watch running on "old time" to decide when to restart
|
||||
# the other clocks, this could be modeled as a transition for "old time" at
|
||||
# 00:09:21. However, since the law was ambiguous and clocks outside railway
|
||||
# stations were probably done haphazardly with the popular impression being
|
||||
# that the transition was done at 00:00 "old time", simply leave the time
|
||||
# blank; this causes zic to default to 00:00 "old time" which is good enough.
|
||||
# Do something similar for the 1891-03-16 transition. There are similar
|
||||
# problems in Algiers, Monaco and Tunis.
|
||||
|
||||
#
|
||||
# Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule France 1916 only - Jun 14 23:00s 1:00 S
|
||||
Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
|
||||
Rule France 1917 only - Mar 24 23:00s 1:00 S
|
||||
@@ -1412,13 +1459,11 @@ Rule France 1945 only - Sep 16 3:00 0 -
|
||||
# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
|
||||
Rule France 1976 only - Mar 28 1:00 1:00 S
|
||||
Rule France 1976 only - Sep 26 1:00 0 -
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
|
||||
# but Howse quotes the actual French legislation as saying 0:09:21.
|
||||
# Go with Howse. Howse writes that the time in France was officially based
|
||||
# Howse writes that the time in France was officially based
|
||||
# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
|
||||
Zone Europe/Paris 0:09:21 - LMT 1891 Mar 16
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
|
||||
0:00 France WE%sT 1940 Jun 14 23:00
|
||||
# Le Corre says Paris stuck with occupied-France time after the liberation;
|
||||
@@ -1447,7 +1492,7 @@ Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
|
||||
# this was equivalent to UT +03, not +04.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Germany 1946 only - Apr 14 2:00s 1:00 S
|
||||
Rule Germany 1946 only - Oct 7 2:00s 0 -
|
||||
Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
@@ -1499,7 +1544,7 @@ Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Greece
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
|
||||
Rule Greece 1932 only - Jul 7 0:00 1:00 S
|
||||
Rule Greece 1932 only - Sep 1 0:00 0 -
|
||||
@@ -1534,38 +1579,73 @@ Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14
|
||||
2:00 EU EE%sT
|
||||
|
||||
# Hungary
|
||||
# From Paul Eggert (2014-07-15):
|
||||
# Dates for 1916-1945 are taken from:
|
||||
# Oross A. Jelen a múlt jövője: a nyári időszámítás Magyarországon 1916-1945.
|
||||
# National Archives of Hungary (2012-10-29).
|
||||
# http://mnl.gov.hu/a_het_dokumentuma/a_nyari_idoszamitas_magyarorszagon_19161945.html
|
||||
# This source does not always give times, which are taken from Shanks
|
||||
# & Pottenger (which disagree about the dates).
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Hungary 1918 only - Apr 1 3:00 1:00 S
|
||||
Rule Hungary 1918 only - Sep 16 3:00 0 -
|
||||
Rule Hungary 1919 only - Apr 15 3:00 1:00 S
|
||||
Rule Hungary 1919 only - Nov 24 3:00 0 -
|
||||
|
||||
# From Michael Deckers (2020-06-09):
|
||||
# an Austrian encyclopedia of railroads of 1913, online at
|
||||
# http://www.zeno.org/Roell-1912/A/Eisenbahnzeit
|
||||
# says that the switch [to CET] happened on 1890-11-01.
|
||||
|
||||
# From Géza Nyáry (2020-06-07):
|
||||
# Data for 1918-1983 are based on the archive database of Library Hungaricana.
|
||||
# The dates are collected from original, scanned governmental orders,
|
||||
# bulletins, instructions and public press.
|
||||
# [See URLs below.]
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1918/?pg=238
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1919/?pg=808
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1920/?pg=201
|
||||
Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
|
||||
Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
|
||||
Rule Hungary 1920 only - Apr 5 2:00 1:00 S
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1945/?pg=882
|
||||
Rule Hungary 1945 only - May 1 23:00 1:00 S
|
||||
Rule Hungary 1945 only - Nov 1 0:00 0 -
|
||||
Rule Hungary 1945 only - Nov 1 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_03/?pg=49
|
||||
Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
|
||||
Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1946_09/?pg=54
|
||||
Rule Hungary 1946 only - Oct 7 2:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1947_04_1__001-123/?pg=90
|
||||
# https://library.hungaricana.hu/hu/view/DunantuliNaplo_1947_09/?pg=128
|
||||
# https://library.hungaricana.hu/hu/view/KulfBelfHirek_1948_03_3__001-123/?pg=304
|
||||
# https://library.hungaricana.hu/hu/view/Zala_1948_09/?pg=64
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=53
|
||||
# https://library.hungaricana.hu/hu/view/SatoraljaujhelyiLeveltar_ZempleniNepujsag_1948/?pg=160
|
||||
# https://library.hungaricana.hu/hu/view/UjSzo_1949_01-04/?pg=102
|
||||
# https://library.hungaricana.hu/hu/view/KeletMagyarorszag_1949_03/?pg=96
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1949_09/?pg=94
|
||||
Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
|
||||
Rule Hungary 1950 only - Oct 23 2:00s 0 -
|
||||
Rule Hungary 1954 1955 - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 1955 - Oct 3 0:00 0 -
|
||||
Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
|
||||
Rule Hungary 1956 only - Sep lastSun 0:00 0 -
|
||||
Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
|
||||
Rule Hungary 1957 only - Sep lastSun 3:00 0 -
|
||||
Rule Hungary 1980 only - Apr 6 1:00 1:00 S
|
||||
Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1954/?pg=513
|
||||
Rule Hungary 1954 only - May 23 0:00 1:00 S
|
||||
Rule Hungary 1954 only - Oct 3 0:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1955/?pg=398
|
||||
Rule Hungary 1955 only - May 22 2:00 1:00 S
|
||||
Rule Hungary 1955 only - Oct 2 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/HevesMegyeiNepujsag_1956_06/?pg=0
|
||||
# https://library.hungaricana.hu/hu/view/EszakMagyarorszag_1956_06/?pg=6
|
||||
# https://library.hungaricana.hu/hu/view/SzolnokMegyeiNeplap_1957_04/?pg=120
|
||||
# https://library.hungaricana.hu/hu/view/PestMegyeiHirlap_1957_09/?pg=143
|
||||
Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
|
||||
Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=189
|
||||
Rule Hungary 1980 only - Apr 6 0:00 1:00 S
|
||||
Rule Hungary 1980 only - Sep 28 1:00 0 -
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1980/?pg=1227
|
||||
# https://library.hungaricana.hu/hu/view/Delmagyarorszag_1981_01/?pg=79
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1982/?pg=115
|
||||
# https://library.hungaricana.hu/hu/view/DTT_KOZL_TanacsokKozlonye_1983/?pg=85
|
||||
Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
|
||||
Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
Zone Europe/Budapest 1:16:20 - LMT 1890 Nov 1
|
||||
1:00 C-Eur CE%sT 1918
|
||||
1:00 Hungary CE%sT 1941 Apr 8
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1941/?pg=1204
|
||||
# https://library.hungaricana.hu/hu/view/OGYK_RT_1942/?pg=3955
|
||||
1:00 Hungary CE%sT 1941 Apr 7 23:00
|
||||
1:00 C-Eur CE%sT 1945
|
||||
1:00 Hungary CE%sT 1980 Sep 28 2:00s
|
||||
1:00 Hungary CE%sT 1984
|
||||
1:00 EU CE%sT
|
||||
|
||||
# Iceland
|
||||
@@ -1601,7 +1681,7 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
|
||||
# The information below is taken from the 1988 Almanak; see
|
||||
# http://www.almanak.hi.is/klukkan.html
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
|
||||
Rule Iceland 1917 only - Oct 21 1:00 0 -
|
||||
Rule Iceland 1918 1919 - Nov 16 1:00 0 -
|
||||
@@ -1693,7 +1773,7 @@ Zone Atlantic/Reykjavik -1:28 - LMT 1908
|
||||
# to 1944-06-04; although Rome was an open city during this period, it
|
||||
# was effectively controlled by Germany.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Italy 1916 only - Jun 3 24:00 1:00 S
|
||||
Rule Italy 1916 1917 - Sep 30 24:00 0 -
|
||||
Rule Italy 1917 only - Mar 31 24:00 1:00 S
|
||||
@@ -1803,7 +1883,7 @@ Link Europe/Rome Europe/San_Marino
|
||||
# urged Lithuania and Estonia to adopt a similar time policy, but it
|
||||
# appears that they will not do so....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
|
||||
Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
|
||||
|
||||
@@ -1896,7 +1976,7 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880
|
||||
# Luxembourg
|
||||
# Whitman disagrees with most of these dates in minor ways;
|
||||
# go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Lux 1916 only - May 14 23:00 1:00 S
|
||||
Rule Lux 1916 only - Oct 1 1:00 0 -
|
||||
Rule Lux 1917 only - Apr 28 23:00 1:00 S
|
||||
@@ -1937,7 +2017,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
|
||||
# From Paul Eggert (2016-10-21):
|
||||
# Assume 1900-1972 was like Rome, overriding Shanks.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Malta 1973 only - Mar 31 0:00s 1:00 S
|
||||
Rule Malta 1973 only - Sep 29 0:00s 0 -
|
||||
Rule Malta 1974 only - Apr 21 0:00s 1:00 S
|
||||
@@ -2010,7 +2090,7 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
|
||||
# says the 2014-03-30 spring-forward transition was at 02:00 local time.
|
||||
# Guess that since 1997 Moldova has switched one hour before the EU.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
|
||||
Rule Moldova 1997 max - Oct lastSun 3:00 0 -
|
||||
|
||||
@@ -2028,11 +2108,24 @@ Zone Europe/Chisinau 1:55:20 - LMT 1880
|
||||
2:00 Moldova EE%sT
|
||||
|
||||
# Monaco
|
||||
# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
|
||||
# more precise 0:09:21.
|
||||
#
|
||||
# From Michael Deckers (2020-06-12):
|
||||
# In the "Journal de Monaco" of 1892-05-24, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
|
||||
# we read: ...
|
||||
# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
|
||||
# legal time in the Principality will be set to, from the date of June 1,
|
||||
# 1892 onwards, to the meridian of Paris, as in France.]
|
||||
# In the "Journal de Monaco" of 1911-03-28, online at
|
||||
# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
|
||||
# we read an ordinance of 1911-03-16: ...
|
||||
# [Legal time in the Principality will be set, from the date of promulgation
|
||||
# of the present ordinance, to legal time in France.... Consequently, legal
|
||||
# time will be retarded by 9 minutes and 21 seconds.]
|
||||
#
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
|
||||
Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
|
||||
0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
|
||||
0:00 France WE%sT 1945 Sep 16 3:00
|
||||
1:00 France CE%sT 1977
|
||||
1:00 EU CE%sT
|
||||
@@ -2080,7 +2173,7 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
|
||||
# The data entries before 1945 are taken from
|
||||
# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
|
||||
Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
|
||||
Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
|
||||
@@ -2117,7 +2210,7 @@ Zone Europe/Amsterdam 0:19:32 - LMT 1835
|
||||
# Norway
|
||||
# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
|
||||
# Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Norway 1916 only - May 22 1:00 1:00 S
|
||||
Rule Norway 1916 only - Sep 30 0:00 0 -
|
||||
Rule Norway 1945 only - Apr 2 2:00s 1:00 S
|
||||
@@ -2186,7 +2279,7 @@ Link Europe/Oslo Arctic/Longyearbyen
|
||||
# The 1919 dates and times can be found in Tygodnik Urzędowy nr 1 (1919-03-20),
|
||||
# <http://www.wbc.poznan.pl/publication/32156> pp 1-2.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Poland 1918 1919 - Sep 16 2:00s 0 -
|
||||
Rule Poland 1919 only - Apr 15 2:00s 1:00 S
|
||||
Rule Poland 1944 only - Apr 3 2:00s 1:00 S
|
||||
@@ -2257,7 +2350,7 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880
|
||||
# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
|
||||
# harmonized with EU rules), and that they stayed +0:00 that winter.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
|
||||
# done every year, depending on what Spain did, because of railroad schedules.
|
||||
# Go with Shanks & Pottenger.
|
||||
@@ -2370,7 +2463,7 @@ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
|
||||
# assume that Romania and Moldova switched to EU rules in 1997,
|
||||
# the same year as Bulgaria.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Romania 1932 only - May 21 0:00s 1:00 S
|
||||
Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
|
||||
Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
|
||||
@@ -3468,14 +3561,14 @@ Link Europe/Prague Europe/Bratislava
|
||||
# fallback transition from the next day's 00:59... to 00:00.
|
||||
|
||||
# From Michael Deckers (2016-12-15):
|
||||
# The Royal Decree of 1900-06-26 quoted by Planesas, online at
|
||||
# The Royal Decree of 1900-07-26 quoted by Planesas, online at
|
||||
# https://www.boe.es/datos/pdfs/BOE//1900/209/A00383-00384.pdf
|
||||
# says in its article 5 (my translation):
|
||||
# These dispositions will enter into force beginning with the
|
||||
# instant at which, according to the time indicated in article 1,
|
||||
# the 1st day of January of 1901 will begin.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Spain 1918 only - Apr 15 23:00 1:00 S
|
||||
Rule Spain 1918 1919 - Oct 6 24:00s 0 -
|
||||
Rule Spain 1919 only - Apr 6 23:00 1:00 S
|
||||
@@ -3612,7 +3705,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# By the end of the 18th century clocks and watches became commonplace
|
||||
# and their performance improved enormously. Communities began to keep
|
||||
# mean time in preference to apparent time - Geneva from 1780 ....
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# From Whitman (who writes "Midnight?"):
|
||||
# Rule Swiss 1940 only - Nov 2 0:00 1:00 S
|
||||
# Rule Swiss 1940 only - Dec 31 0:00 0 -
|
||||
@@ -3699,7 +3792,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
|
||||
# 1853-07-16, though it probably occurred at some other date in Zurich, and
|
||||
# legal civil time probably changed at still some other transition date.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
|
||||
Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -3848,7 +3941,7 @@ Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 # See above comment.
|
||||
# Although Google Translate misfires on that source, it looks like
|
||||
# Turkey reversed last month's decision, and so will stay at +03.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Turkey 1916 only - May 1 0:00 1:00 S
|
||||
Rule Turkey 1916 only - Oct 1 0:00 0 -
|
||||
Rule Turkey 1920 only - Mar 28 0:00 1:00 S
|
||||
@@ -4006,7 +4099,7 @@ Zone Europe/Kiev 2:02:04 - LMT 1880
|
||||
2:00 1:00 EEST 1991 Sep 29 3:00
|
||||
2:00 E-Eur EE%sT 1995
|
||||
2:00 EU EE%sT
|
||||
# Ruthenia used CET 1990/1991.
|
||||
# Transcarpathia used CET 1990/1991.
|
||||
# "Uzhhorod" is the transliteration of the Rusyn/Ukrainian pronunciation, but
|
||||
# "Uzhgorod" is more common in English.
|
||||
Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
|
||||
|
||||
@@ -91,11 +91,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
||||
# Any additional leap seconds will come after this.
|
||||
# This Expires line is commented out for now,
|
||||
# so that pre-2020a zic implementations do not reject this file.
|
||||
#Expires 2020 Dec 28 00:00:00
|
||||
#Expires 2021 Jun 28 00:00:00
|
||||
|
||||
# POSIX timestamps for the data in this file:
|
||||
#updated 1467936000 (2016-07-08 00:00:00 UTC)
|
||||
#expires 1609113600 (2020-12-28 00:00:00 UTC)
|
||||
#expires 1624838400 (2021-06-28 00:00:00 UTC)
|
||||
|
||||
# Updated through IERS Bulletin C59
|
||||
# File expires on: 28 December 2020
|
||||
# Updated through IERS Bulletin C60
|
||||
# File expires on: 28 June 2021
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
# U.S. government action. So even though the "US" rules have changed
|
||||
# in the latest release, other countries won't be affected.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
|
||||
Rule US 1918 1919 - Oct lastSun 2:00 0 S
|
||||
Rule US 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -370,7 +370,7 @@ Zone PST8PDT -8:00 US P%sT
|
||||
# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
|
||||
# nearest second.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
|
||||
Rule NYC 1920 only - Oct lastSun 2:00 0 S
|
||||
Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
|
||||
@@ -454,7 +454,7 @@ Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
|
||||
# The Tennessean 2007-05-11, republished 2015-04-06.
|
||||
# https://www.tennessean.com/story/insider/extras/2015/04/06/archives-seigenthaler-for-100-years-the-tennessean-had-it-covered/25348545/
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Chicago 1920 only - Jun 13 2:00 1:00 D
|
||||
Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
|
||||
Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
|
||||
@@ -523,7 +523,7 @@ Zone America/North_Dakota/Beulah -6:47:07 - LMT 1883 Nov 18 12:12:53
|
||||
# El Paso Times. 2018-10-24 06:40 -06.
|
||||
# https://www.elpasotimes.com/story/news/local/el-paso/2018/10/24/el-pasoans-were-time-rebels-fought-stay-mountain-zone/1744509002/
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
|
||||
Rule Denver 1920 only - Oct lastSun 2:00 0 S
|
||||
Rule Denver 1921 only - May 22 2:00 0 S
|
||||
@@ -576,7 +576,7 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1501&context=ca_ballot_props
|
||||
# https://repository.uchastings.edu/cgi/viewcontent.cgi?article=1636&context=ca_ballot_props
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule CA 1948 only - Mar 14 2:01 1:00 D
|
||||
Rule CA 1949 only - Jan 1 2:00 0 S
|
||||
Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
|
||||
@@ -934,7 +934,7 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
|
||||
# going to switch from Central to Eastern Time on March 11, 2007....
|
||||
# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
|
||||
Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -953,7 +953,7 @@ Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
|
||||
#
|
||||
# Eastern Crawford County, Indiana, left its clocks alone in 1974,
|
||||
# as well as from 1976 through 2005.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Marengo 1951 only - Sep lastSun 2:00 0 S
|
||||
Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
|
||||
@@ -972,7 +972,7 @@ Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37
|
||||
# Daviess, Dubois, Knox, and Martin Counties, Indiana,
|
||||
# switched from eastern to central time in April 2006, then switched back
|
||||
# in November 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
|
||||
@@ -997,7 +997,7 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
|
||||
# The Indianapolis News, Friday 27 October 1967 states that Perry County
|
||||
# returned to CST. It went again to EST on 27 April 1969, as documented by the
|
||||
# Indianapolis star of Saturday 26 April.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Perry 1955 only - May 1 0:00 1:00 D
|
||||
Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
|
||||
@@ -1014,7 +1014,7 @@ Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57
|
||||
#
|
||||
# Pike County, Indiana moved from central to eastern time in 1977,
|
||||
# then switched back in 2006, then switched back again in 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pike 1955 only - May 1 0:00 1:00 D
|
||||
Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
|
||||
Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
|
||||
@@ -1035,7 +1035,7 @@ Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53
|
||||
# An article on page A3 of the Sunday, 1991-10-27 Washington Post
|
||||
# notes that Starke County switched from Central time to Eastern time as of
|
||||
# 1991-10-27.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
|
||||
Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1052,7 +1052,7 @@ Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30
|
||||
#
|
||||
# Pulaski County, Indiana, switched from eastern to central time in
|
||||
# April 2006 and then switched back in March 2007.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
|
||||
Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
|
||||
Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
|
||||
@@ -1094,7 +1094,7 @@ Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44
|
||||
#
|
||||
# Part of Kentucky left its clocks alone in 1974.
|
||||
# This also includes Clark, Floyd, and Harrison counties in Indiana.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Louisville 1921 only - May 1 2:00 1:00 D
|
||||
Rule Louisville 1921 only - Sep 1 2:00 0 S
|
||||
Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1208,7 +1208,7 @@ Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36
|
||||
# election Michigan voters narrowly repealed DST, effective 1969.
|
||||
#
|
||||
# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Detroit 1948 only - Sep lastSun 2:00 0 S
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1225,7 +1225,7 @@ Zone America/Detroit -5:32:11 - LMT 1905
|
||||
#
|
||||
# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
|
||||
# switched from EST to CST/CDT in 1973.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER
|
||||
Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
|
||||
Rule Menominee 1946 only - Sep lastSun 2:00 0 S
|
||||
Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
|
||||
@@ -1395,7 +1395,7 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
|
||||
# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
|
||||
# than Thursday) in all Canadian rulesets.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Canada 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Canada 1918 only - Oct 27 2:00 0 S
|
||||
Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -1418,7 +1418,7 @@ Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
|
||||
# that follows the rules is the southeast corner, including Port Hope
|
||||
# Simpson and Mary's Harbour, but excluding, say, Black Tickle.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule StJohns 1917 only - Apr 8 2:00 1:00 D
|
||||
Rule StJohns 1917 only - Sep 17 2:00 0 S
|
||||
# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
|
||||
@@ -1520,7 +1520,7 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
|
||||
# bill say that it is "accommodating the customs and practices" of those
|
||||
# regions, which suggests that they have always been in-line with Halifax.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Halifax 1916 only - Apr 1 0:00 1:00 D
|
||||
Rule Halifax 1916 only - Oct 1 0:00 0 S
|
||||
Rule Halifax 1920 only - May 9 0:00 1:00 D
|
||||
@@ -1586,7 +1586,7 @@ Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
|
||||
# clear that this was the case since at least 1993.
|
||||
# For now, assume it started in 1993.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
|
||||
Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
|
||||
Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
|
||||
@@ -1795,7 +1795,7 @@ Zone America/Blanc-Sablon -3:48:28 - LMT 1884
|
||||
# With some exceptions, the use of daylight saving may be said to be limited
|
||||
# to those cities and towns lying between Quebec city and Windsor, Ont.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Toronto 1919 only - Mar 30 23:30 1:00 D
|
||||
Rule Toronto 1919 only - Oct 26 0:00 0 S
|
||||
Rule Toronto 1920 only - May 2 2:00 1:00 D
|
||||
@@ -1893,7 +1893,7 @@ Zone America/Atikokan -6:06:28 - LMT 1895
|
||||
# starting 1966. Since 02:00s is clearly correct for 1967 on, assume
|
||||
# it was also 02:00s in 1966.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Winn 1916 only - Apr 23 0:00 1:00 D
|
||||
Rule Winn 1916 only - Sep 17 0:00 0 S
|
||||
Rule Winn 1918 only - Apr 14 2:00 1:00 D
|
||||
@@ -1984,7 +1984,7 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
|
||||
# long and rather painful to read.
|
||||
# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Regina 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Regina 1918 only - Oct 27 2:00 0 S
|
||||
Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
|
||||
@@ -2034,7 +2034,7 @@ Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
|
||||
# Boyer JP. Forcing Choice: The Risky Reward of Referendums. Dundum. 2017.
|
||||
# ISBN 978-1459739123.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
|
||||
Rule Edm 1918 only - Oct 27 2:00 0 S
|
||||
Rule Edm 1919 only - May 27 2:00 0 S
|
||||
@@ -2143,7 +2143,7 @@ Zone America/Edmonton -7:33:52 - LMT 1906 Sep
|
||||
# https://searcharchives.vancouver.ca/daylight-saving-1918-starts-again-july-7-1941-start-d-s-sept-27-end-of-d-s-1941
|
||||
# We have no further details, so omit them for now.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Vanc 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule Vanc 1918 only - Oct 27 2:00 0 S
|
||||
Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
|
||||
@@ -2472,7 +2472,19 @@ Zone America/Creston -7:46:04 - LMT 1884
|
||||
# consistency with nearby Dawson Creek, Creston, and Fort Nelson.
|
||||
# https://yukon.ca/en/news/yukon-end-seasonal-time-change
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# From Andrew G. Smith (2020-09-24):
|
||||
# Yukon has completed its regulatory change to be on UTC -7 year-round....
|
||||
# http://www.gov.yk.ca/legislation/regs/oic2020_125.pdf
|
||||
# What we have done is re-defined Yukon Standard Time, as we are
|
||||
# authorized to do under section 33 of our Interpretation Act:
|
||||
# http://www.gov.yk.ca/legislation/acts/interpretation_c.pdf
|
||||
#
|
||||
# From Paul Eggert (2020-09-24):
|
||||
# tzdb uses the obsolete YST abbreviation for standard time in Yukon through
|
||||
# about 1970, and uses PST for standard time in Yukon since then. Consistent
|
||||
# with that, use MST for -07, the new standard time in Yukon effective Nov. 1.
|
||||
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
|
||||
Rule NT_YK 1918 only - Oct 27 2:00 0 S
|
||||
Rule NT_YK 1919 only - May 25 2:00 1:00 D
|
||||
@@ -2526,12 +2538,12 @@ Zone America/Inuvik 0 - -00 1953 # Inuvik founded
|
||||
Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1967 May 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
-9:00 NT_YK Y%sT 1973 Oct 28 0:00
|
||||
-8:00 NT_YK P%sT 1980
|
||||
-8:00 Canada P%sT 2020 Mar 8 2:00
|
||||
-8:00 Canada P%sT 2020 Nov 1
|
||||
-7:00 - MST
|
||||
|
||||
|
||||
@@ -2746,7 +2758,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
||||
# 5- The islands, reefs and keys shall take their timezone from the
|
||||
# longitude they are located at.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
||||
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
||||
Rule Mexico 1940 only - Dec 9 0:00 1:00 D
|
||||
@@ -2951,7 +2963,7 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
|
||||
# rules to sync with the U.S. starting in 2007....
|
||||
# http://www.jonesbahamas.com/?c=45&a=10412
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
|
||||
Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -2963,7 +2975,7 @@ Zone America/Nassau -5:09:30 - LMT 1912 Mar 2
|
||||
|
||||
# For 1899 Milne gives -3:58:29.2; round that.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Barb 1977 only - Jun 12 2:00 1:00 D
|
||||
Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
|
||||
Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
|
||||
@@ -2976,7 +2988,7 @@ Zone America/Barbados -3:58:29 - LMT 1924 # Bridgetown
|
||||
|
||||
# Belize
|
||||
# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 -0530
|
||||
Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 CST
|
||||
Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
|
||||
@@ -3013,7 +3025,7 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
|
||||
# Milne gives -5:36:13.3 as San José mean time; round to nearest.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
|
||||
Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
|
||||
Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
|
||||
@@ -3187,7 +3199,7 @@ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José
|
||||
# From Paul Eggert (2012-11-03):
|
||||
# For now, assume the future rule is first Sunday in November.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Cuba 1928 only - Jun 10 0:00 1:00 D
|
||||
Rule Cuba 1928 only - Oct 10 0:00 0 S
|
||||
Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
|
||||
@@ -3256,7 +3268,7 @@ Zone America/Havana -5:29:28 - LMT 1890
|
||||
# decided to revert.
|
||||
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule DR 1966 only - Oct 30 0:00 1:00 EDT
|
||||
Rule DR 1967 only - Feb 28 0:00 0 EST
|
||||
Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
|
||||
@@ -3273,7 +3285,7 @@ Zone America/Santo_Domingo -4:39:36 - LMT 1890
|
||||
|
||||
# El Salvador
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
|
||||
# There are too many San Salvadors elsewhere, so use America/El_Salvador
|
||||
@@ -3302,7 +3314,7 @@ Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
|
||||
# (2006-04-19), says DST ends at 24:00. See
|
||||
# http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Guat 1973 only - Nov 25 0:00 1:00 D
|
||||
Rule Guat 1974 only - Feb 24 0:00 0 S
|
||||
Rule Guat 1983 only - May 21 0:00 1:00 D
|
||||
@@ -3383,7 +3395,7 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
|
||||
# I have not been able to find a more authoritative source:
|
||||
# https://www.haitilibre.com/en/news-20319-haiti-notices-time-change-in-haiti.html
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Haiti 1983 only - May 8 0:00 1:00 D
|
||||
Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
|
||||
Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
|
||||
@@ -3431,7 +3443,7 @@ Zone America/Port-au-Prince -4:49:20 - LMT 1890
|
||||
# http://www.laprensahn.com/pais_nota.php?id04962=7386
|
||||
# So it seems that Honduras will not enter DST this year....
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
|
||||
Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
|
||||
Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
|
||||
@@ -3522,7 +3534,7 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
|
||||
# The natural sun time is restored in all the national territory, in that the
|
||||
# time is returned one hour at 01:00 am of October 1 of 2006.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
|
||||
Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
|
||||
Rule Nic 2005 only - Apr 10 0:00 1:00 D
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for proposed US election time (this file is obsolete)
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# From Arthur David Olson (1989-04-05):
|
||||
# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
|
||||
# establishing "Pacific Presidential Election Time"; it was not acted on
|
||||
# by the Senate or signed into law by the President.
|
||||
# You might want to change the "PE" (Presidential Election) below to
|
||||
# "Q" (Quadrennial) to maintain three-character zone abbreviations.
|
||||
# If you're really conservative, you might want to change it to "D".
|
||||
# Avoid "L" (Leap Year), which won't be true in 2100.
|
||||
|
||||
# If Presidential Election Time is ever established, replace "XXXX" below
|
||||
# with the year the law takes effect and uncomment the "##" lines.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
|
||||
## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
|
||||
## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
|
||||
## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
|
||||
## -8:00 Twilite P%sT
|
||||
|
||||
# For now...
|
||||
Link America/Los_Angeles US/Pacific-New ##
|
||||
@@ -71,7 +71,7 @@
|
||||
# I am sending modifications to the Argentine time zone table...
|
||||
# AR was chosen because they are the ISO letters that represent Argentina.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Arg 1930 only - Dec 1 0:00 1:00 -
|
||||
Rule Arg 1931 only - Apr 1 0:00 0 -
|
||||
Rule Arg 1931 only - Oct 15 0:00 1:00 -
|
||||
@@ -792,7 +792,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890
|
||||
# From Paul Eggert (2013-10-17):
|
||||
# For now, assume western Amazonas will change as well.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
|
||||
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
|
||||
Rule Brazil 1931 only - Oct 3 11:00 1:00 -
|
||||
@@ -1281,7 +1281,7 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
||||
# For now, assume that they will not revert,
|
||||
# since they have extended the expiration date once already.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
|
||||
Rule Chile 1928 1932 - Apr 1 0:00 0 -
|
||||
Rule Chile 1968 only - Nov 3 4:00u 1:00 -
|
||||
@@ -1381,7 +1381,7 @@ Zone Antarctica/Palmer 0 - -00 1965
|
||||
# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
|
||||
# "A variation of fifteen minutes in the public clocks of Bogota is not rare."
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule CO 1992 only - May 3 0:00 1:00 -
|
||||
Rule CO 1993 only - Apr 4 0:00 0 -
|
||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||
@@ -1441,7 +1441,7 @@ Link America/Curacao America/Kralendijk # Caribbean Netherlands
|
||||
# (Not one step back), the clocks went back in 1993 and the experiment was not
|
||||
# repeated. For now, assume transitions were at 00:00 local time country-wide.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
|
||||
Rule Ecuador 1993 only - Feb 5 0:00 0 -
|
||||
#
|
||||
@@ -1535,7 +1535,7 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
|
||||
# For now we will assume permanent -03 for the Falklands
|
||||
# until advised differently (to apply for 2012 and beyond, after the 2011
|
||||
# experiment was apparently successful.)
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
|
||||
Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
|
||||
Rule Falk 1939 only - Oct 1 0:00 1:00 -
|
||||
@@ -1581,7 +1581,7 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
|
||||
# No time of the day is established for the adjustment, so people normally
|
||||
# adjust their clocks at 0 hour of the given dates.
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Para 1975 1988 - Oct 1 0:00 1:00 -
|
||||
Rule Para 1975 1978 - Mar 1 0:00 0 -
|
||||
Rule Para 1979 1991 - Apr 1 0:00 0 -
|
||||
@@ -1674,7 +1674,7 @@ Zone America/Asuncion -3:50:40 - LMT 1890
|
||||
# From Paul Eggert (2006-03-22):
|
||||
# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Peru 1938 only - Jan 1 0:00 1:00 -
|
||||
Rule Peru 1938 only - Apr 1 0:00 0 -
|
||||
Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
|
||||
@@ -1770,7 +1770,7 @@ Link America/Port_of_Spain America/Tortola # Virgin Islands (UK)
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/10/2
|
||||
# https://www.impo.com.uy/diariooficial/1926/03/18/2
|
||||
#
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||
Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
|
||||
Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
|
||||
# From Tim Parenti (2018-02-15):
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
#
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
# tzdb data for System V rules (this file is obsolete)
|
||||
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
# Old rules, should the need arise.
|
||||
# No attempt is made to handle Newfoundland, since it cannot be expressed
|
||||
# using the System V "TZ" scheme (half-hour offset), or anything outside
|
||||
# North America (no support for non-standard DST start/end dates), nor
|
||||
# the changes in the DST rules in the US after 1976 (which occurred after
|
||||
# the old rules were written).
|
||||
#
|
||||
# If you need the old rules, uncomment ## lines.
|
||||
# Compile this *without* leap second correction for true conformance.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV min 1973 - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1974 only - Jan 6 2:00 1:00 D
|
||||
Rule SystemV 1974 only - Nov lastSun 2:00 0 S
|
||||
Rule SystemV 1975 only - Feb 23 2:00 1:00 D
|
||||
Rule SystemV 1975 only - Oct lastSun 2:00 0 S
|
||||
Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
|
||||
Rule SystemV 1976 max - Oct lastSun 2:00 0 S
|
||||
|
||||
# Zone NAME STDOFF RULES/SAVE FORMAT [UNTIL]
|
||||
## Zone SystemV/AST4ADT -4:00 SystemV A%sT
|
||||
## Zone SystemV/EST5EDT -5:00 SystemV E%sT
|
||||
## Zone SystemV/CST6CDT -6:00 SystemV C%sT
|
||||
## Zone SystemV/MST7MDT -7:00 SystemV M%sT
|
||||
## Zone SystemV/PST8PDT -8:00 SystemV P%sT
|
||||
## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
|
||||
## Zone SystemV/AST4 -4:00 - AST
|
||||
## Zone SystemV/EST5 -5:00 - EST
|
||||
## Zone SystemV/CST6 -6:00 - CST
|
||||
## Zone SystemV/MST7 -7:00 - MST
|
||||
## Zone SystemV/PST8 -8:00 - PST
|
||||
## Zone SystemV/YST9 -9:00 - YST
|
||||
## Zone SystemV/HST10 -10:00 - HST
|
||||
@@ -41,9 +41,12 @@
|
||||
# To build the full set of crosstools for additional platforms, use a command
|
||||
# line looking like this:
|
||||
#
|
||||
# make cross_compile_target="aarch64-linux-gnu" BASE_OS=Fedora27
|
||||
# make TARGETS="aarch64-linux-gnu" BASE_OS=Fedora
|
||||
# or
|
||||
# make cross_compile_target="arm-linux-gnueabihf" BASE_OS=Fedora27
|
||||
# make TARGETS="arm-linux-gnueabihf ppc64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=17
|
||||
#
|
||||
# to build several devkits for a specific OS version at once.
|
||||
# You can find the final results under ../../build/devkit/result/<host>-to-<target>
|
||||
#
|
||||
# This is the makefile which iterates over all host and target platforms.
|
||||
#
|
||||
@@ -52,18 +55,18 @@ os := $(shell uname -o)
|
||||
cpu := $(shell uname -p)
|
||||
|
||||
# Figure out what platform this is building on.
|
||||
me := $(cpu)-$(if $(findstring Linux,$(os)),unknown-linux-gnu)
|
||||
me := $(cpu)-$(if $(findstring Linux,$(os)),linux-gnu)
|
||||
|
||||
$(info Building on platform $(me))
|
||||
|
||||
#
|
||||
# By default just build for the current platform, which is assumed to be Linux
|
||||
#
|
||||
ifeq ($(cross_compile_target), )
|
||||
ifeq ($(TARGETS), )
|
||||
platforms := $(me)
|
||||
host_platforms := $(platforms)
|
||||
else
|
||||
platforms := $(cross_compile_target)
|
||||
platforms := $(TARGETS)
|
||||
host_platforms := $(me)
|
||||
endif
|
||||
target_platforms := $(platforms)
|
||||
@@ -79,37 +82,37 @@ endif
|
||||
OUTPUT_ROOT = $(abspath ../../build/devkit)
|
||||
RESULT = $(OUTPUT_ROOT)/result
|
||||
|
||||
submakevars = HOST=$@ BUILD=$(me) \
|
||||
RESULT=$(RESULT) PREFIX=$(RESULT)/$@ \
|
||||
OUTPUT_ROOT=$(OUTPUT_ROOT)
|
||||
submakevars = HOST=$@ BUILD=$(me) RESULT=$(RESULT) OUTPUT_ROOT=$(OUTPUT_ROOT)
|
||||
|
||||
$(host_platforms) :
|
||||
@echo 'Building compilers for $@'
|
||||
@echo 'Targets: $(target_platforms)'
|
||||
for p in $(filter $@, $(target_platforms)) $(filter-out $@, $(target_platforms)); do \
|
||||
$(MAKE) -f Tools.gmk download-rpms $(submakevars) TARGET=$$p && \
|
||||
$(MAKE) -f Tools.gmk download-rpms $(submakevars) \
|
||||
TARGET=$$p PREFIX=$(RESULT)/$@-to-$$p && \
|
||||
$(MAKE) -f Tools.gmk all $(submakevars) \
|
||||
TARGET=$$p || exit 1 ; \
|
||||
TARGET=$$p PREFIX=$(RESULT)/$@-to-$$p && \
|
||||
$(MAKE) -f Tools.gmk ccache $(submakevars) \
|
||||
TARGET=$@ PREFIX=$(RESULT)/$@-to-$$p BUILDDIR=$(OUTPUT_ROOT)/$@/$$p || exit 1 ; \
|
||||
done
|
||||
@echo 'Building ccache program for $@'
|
||||
$(MAKE) -f Tools.gmk ccache $(submakevars) TARGET=$@
|
||||
@echo 'All done"'
|
||||
|
||||
today := $(shell date +%Y%m%d)
|
||||
|
||||
define Mktar
|
||||
$(1)_tar = $$(RESULT)/sdk-$(1)-$$(today).tar.gz
|
||||
$$($(1)_tar) : PLATFORM = $(1)
|
||||
TARFILES += $$($(1)_tar)
|
||||
$$($(1)_tar) : $(1) $$(shell find $$(RESULT)/$(1))
|
||||
$(1)-to-$(2)_tar = $$(RESULT)/sdk-$(1)-to-$(2)-$$(today).tar.gz
|
||||
$$($(1)-to-$(2)_tar) : PLATFORM = $(1)-to-$(2)
|
||||
TARFILES += $$($(1)-to-$(2)_tar)
|
||||
$$($(1)-to-$(2)_tar) : $$(shell find $$(RESULT)/$(1)-to-$(2) -type f)
|
||||
endef
|
||||
|
||||
$(foreach p,$(host_platforms),$(eval $(call Mktar,$(p))))
|
||||
$(foreach p,$(host_platforms),$(foreach t,$(target_platforms),$(eval $(call Mktar,$(p),$(t)))))
|
||||
|
||||
tars : all $(TARFILES)
|
||||
onlytars : $(TARFILES)
|
||||
%.tar.gz :
|
||||
@echo 'Creating compiler package $@'
|
||||
cd $(RESULT)/$(PLATFORM) && tar -czf $@ *
|
||||
cd $(RESULT) && tar -czf $@ $(PLATFORM)/*
|
||||
touch $@
|
||||
|
||||
clean :
|
||||
|
||||
@@ -52,16 +52,25 @@ endif
|
||||
$(info ARCH=$(ARCH))
|
||||
|
||||
ifeq ($(BASE_OS), OEL6)
|
||||
OEL_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/
|
||||
BASE_URL := http://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/
|
||||
LINUX_VERSION := OEL6.4
|
||||
else ifeq ($(BASE_OS), Fedora27)
|
||||
ifeq ($(ARCH), aarch64)
|
||||
FEDORA_TYPE=fedora-secondary
|
||||
else
|
||||
FEDORA_TYPE=fedora/linux
|
||||
else ifeq ($(BASE_OS), Fedora)
|
||||
DEFAULT_OS_VERSION := 27
|
||||
ifeq ($(BASE_OS_VERSION), )
|
||||
BASE_OS_VERSION := $(DEFAULT_OS_VERSION)
|
||||
endif
|
||||
OEL_URL := https://dl.fedoraproject.org/pub/$(FEDORA_TYPE)/releases/27/Everything/$(ARCH)/os/Packages/
|
||||
LINUX_VERSION := Fedora 27
|
||||
ifeq ($(filter x86_64 armhfp, $(ARCH)), )
|
||||
FEDORA_TYPE := fedora-secondary
|
||||
else
|
||||
FEDORA_TYPE := fedora/linux
|
||||
endif
|
||||
ARCHIVED := $(shell [ $(BASE_OS_VERSION) -lt $(DEFAULT_OS_VERSION) ] && echo true)
|
||||
ifeq ($(ARCHIVED),true)
|
||||
BASE_URL := https://archives.fedoraproject.org/pub/archive/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os/Packages/
|
||||
else
|
||||
BASE_URL := https://dl.fedoraproject.org/pub/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os/Packages/
|
||||
endif
|
||||
LINUX_VERSION := Fedora_$(BASE_OS_VERSION)
|
||||
else
|
||||
$(error Unknown base OS $(BASE_OS))
|
||||
endif
|
||||
@@ -137,13 +146,11 @@ else
|
||||
endif
|
||||
|
||||
# Define directories
|
||||
RESULT := $(OUTPUT_ROOT)/result
|
||||
BUILDDIR := $(OUTPUT_ROOT)/$(HOST)/$(TARGET)
|
||||
PREFIX := $(RESULT)/$(HOST)
|
||||
TARGETDIR := $(PREFIX)/$(TARGET)
|
||||
SYSROOT := $(TARGETDIR)/sysroot
|
||||
DOWNLOAD := $(OUTPUT_ROOT)/download
|
||||
DOWNLOAD_RPMS := $(DOWNLOAD)/rpms
|
||||
DOWNLOAD_RPMS := $(DOWNLOAD)/rpms/$(TARGET)-$(LINUX_VERSION)
|
||||
SRCDIR := $(OUTPUT_ROOT)/src
|
||||
|
||||
# Marker file for unpacking rpms
|
||||
@@ -159,7 +166,7 @@ download-rpms:
|
||||
# Only run this if rpm dir is empty.
|
||||
ifeq ($(wildcard $(DOWNLOAD_RPMS)/*.rpm), )
|
||||
cd $(DOWNLOAD_RPMS) && \
|
||||
wget -r -np -nd $(patsubst %, -A "*%*.rpm", $(RPM_LIST)) $(OEL_URL)
|
||||
wget -r -np -nd $(patsubst %, -A "*%*.rpm", $(RPM_LIST)) $(BASE_URL)
|
||||
endif
|
||||
|
||||
##########################################################################################
|
||||
@@ -190,8 +197,8 @@ $(foreach p,GCC BINUTILS CCACHE MPFR GMP MPC GDB,$(eval $(call Download,$(p))))
|
||||
##########################################################################################
|
||||
# Unpack RPMS
|
||||
|
||||
RPM_ARCHS := $(ARCH) noarch
|
||||
ifeq ($(ARCH),x86_64)
|
||||
RPM_ARCHS := x86_64 noarch
|
||||
ifeq ($(BUILD),$(HOST))
|
||||
ifeq ($(TARGET),$(HOST))
|
||||
# When building the native compiler for x86_64, enable mixed mode.
|
||||
@@ -199,11 +206,9 @@ ifeq ($(ARCH),x86_64)
|
||||
endif
|
||||
endif
|
||||
else ifeq ($(ARCH),i686)
|
||||
RPM_ARCHS := i386 i686 noarch
|
||||
RPM_ARCHS += i386
|
||||
else ifeq ($(ARCH), armhfp)
|
||||
RPM_ARCHS := $(ARCH) armv7hl noarch
|
||||
else
|
||||
RPM_ARCHS := $(ARCH) noarch
|
||||
RPM_ARCHS += armv7hl
|
||||
endif
|
||||
|
||||
RPM_FILE_LIST := $(sort $(foreach a, $(RPM_ARCHS), \
|
||||
@@ -277,7 +282,7 @@ CONFIG = --target=$(TARGET) \
|
||||
--host=$(HOST) --build=$(BUILD) \
|
||||
--prefix=$(PREFIX)
|
||||
|
||||
PATHEXT = $(RESULT)/$(BUILD)/bin:
|
||||
PATHEXT = $(PREFIX)/bin:
|
||||
|
||||
PATHPRE = PATH=$(PATHEXT)$(PATH)
|
||||
NUM_CORES := $(shell cat /proc/cpuinfo | grep -c processor)
|
||||
@@ -427,6 +432,11 @@ ifeq ($(ARCH), armhfp)
|
||||
$(BUILDDIR)/$(gcc_ver)/Makefile : CONFIG += --with-float=hard
|
||||
endif
|
||||
|
||||
ifneq ($(filter ppc64 ppc64le s390x, $(ARCH)), )
|
||||
# We only support 64-bit on these platforms anyway
|
||||
CONFIG += --disable-multilib
|
||||
endif
|
||||
|
||||
# Want:
|
||||
# c,c++
|
||||
# shared libs
|
||||
@@ -552,7 +562,7 @@ $(TARGETDIR)/%.done : $(BUILDDIR)/%/Makefile
|
||||
|
||||
##########################################################################################
|
||||
|
||||
$(PREFIX)/devkit.info: FRC
|
||||
$(PREFIX)/devkit.info:
|
||||
@echo 'Creating devkit.info in the root of the kit'
|
||||
rm -f $@
|
||||
touch $@
|
||||
@@ -611,7 +621,4 @@ all : binutils gcc bfdlib $(PREFIX)/devkit.info $(missing-links) $(SYSROOT_LINKS
|
||||
# this is only built for host. so separate.
|
||||
ccache : $(ccache)
|
||||
|
||||
# Force target
|
||||
FRC:
|
||||
|
||||
.PHONY : gcc all binutils bfdlib link_libs rpms libs sysroot
|
||||
|
||||
@@ -29,7 +29,7 @@ GENDATA_TZDB :=
|
||||
# Time zone data file creation
|
||||
#
|
||||
TZDATA_DIR := $(TOPDIR)/make/data/tzdata
|
||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera gmt jdk11_backward
|
||||
TZDATA_TZFILE := africa antarctica asia australasia europe northamerica southamerica backward etcetera gmt jdk11_backward
|
||||
TZDATA_TZFILES := $(addprefix $(TZDATA_DIR)/,$(TZDATA_TZFILE))
|
||||
|
||||
GENDATA_TZDB_DAT := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/tzdb.dat
|
||||
|
||||
@@ -57,7 +57,7 @@ JVM_LIBS += \
|
||||
JVM_EXCLUDE_FILES += args.cc
|
||||
JVM_EXCLUDES += adlc
|
||||
|
||||
# Needed by vm_version.cpp
|
||||
# Needed by abstract_vm_version.cpp
|
||||
ifeq ($(OPENJDK_TARGET_CPU), x86_64)
|
||||
OPENJDK_TARGET_CPU_VM_VERSION := amd64
|
||||
else ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
|
||||
@@ -158,7 +158,7 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
|
||||
EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
|
||||
EXTRA_OBJECT_FILES := $(DTRACE_EXTRA_OBJECT_FILES), \
|
||||
CFLAGS := $(JVM_CFLAGS), \
|
||||
vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||
abstract_vm_version.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||
arguments.cpp_CXXFLAGS := $(CFLAGS_VM_VERSION), \
|
||||
DISABLED_WARNINGS_clang := tautological-compare, \
|
||||
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio), \
|
||||
@@ -179,11 +179,11 @@ $(eval $(call SetupNativeCompilation, BUILD_LIBJVM, \
|
||||
PRECOMPILED_HEADER_EXCLUDE := $(JVM_PRECOMPILED_HEADER_EXCLUDE), \
|
||||
))
|
||||
|
||||
# Always recompile vm_version.cpp if libjvm needs to be relinked. This ensures
|
||||
# Always recompile abstract_vm_version.cpp if libjvm needs to be relinked. This ensures
|
||||
# that the internal vm version is updated as it relies on __DATE__ and __TIME__
|
||||
# macros.
|
||||
VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/vm_version$(OBJ_SUFFIX)
|
||||
$(VM_VERSION_OBJ): $(filter-out $(VM_VERSION_OBJ) $(JVM_MAPFILE), \
|
||||
ABSTRACT_VM_VERSION_OBJ := $(JVM_OUTPUTDIR)/objs/abstract_vm_version$(OBJ_SUFFIX)
|
||||
$(ABSTRACT_VM_VERSION_OBJ): $(filter-out $(ABSTRACT_VM_VERSION_OBJ) $(JVM_MAPFILE), \
|
||||
$(BUILD_LIBJVM_TARGET_DEPS))
|
||||
|
||||
ifneq ($(GENERATE_COMPILE_COMMANDS_ONLY), true)
|
||||
|
||||
@@ -571,34 +571,106 @@ endif
|
||||
|
||||
###########################################################################
|
||||
|
||||
#### Begin harfbuzz configuration
|
||||
ifeq ($(USE_EXTERNAL_HARFBUZZ), true)
|
||||
LIBHARFBUZZ_LIBS := $(HARFBUZZ_LIBS)
|
||||
else
|
||||
HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
|
||||
# This is better than adding EXPORT_ALL_SYMBOLS
|
||||
ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang solstudio), )
|
||||
HARFBUZZ_CFLAGS += -DHB_EXTERN=__attribute__\(\(visibility\(\"default\"\)\)\)
|
||||
else ifeq ($(TOOLCHAIN_TYPE), microsoft)
|
||||
HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\)
|
||||
endif
|
||||
|
||||
HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN -DHAVE_ROUND
|
||||
LIBHARFBUZZ_LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
ifeq ($(TOOLCHAIN_TYPE), gcc)
|
||||
ifeq ($(CC_VERSION_NUMBER), 4.4.7)
|
||||
LIBHARFBUZZ_LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
|
||||
$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
|
||||
-DHB_NO_PRAGMA_GCC_DIAGNOSTIC
|
||||
endif
|
||||
ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
|
||||
HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
|
||||
endif
|
||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
|
||||
endif
|
||||
|
||||
LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
|
||||
|
||||
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
|
||||
LIBHARFBUZZ_EXCLUDE_FILES += harfbuzz/hb-ft.cc
|
||||
|
||||
LIBHARFBUZZ_CFLAGS += $(HARFBUZZ_CFLAGS)
|
||||
|
||||
# For use by libfontmanager:
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
LIBHARFBUZZ_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjharfbuzz/jharfbuzz.lib
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
LIBHARFBUZZ_LIBS := -ljharfbuzz
|
||||
endif
|
||||
|
||||
LIBHARFBUZZ_EXTRA_HEADER_DIRS := \
|
||||
libjharfbuzz/hb-ucdn \
|
||||
#
|
||||
|
||||
LIBHARFBUZZ_OPTIMIZATION := HIGH
|
||||
|
||||
LIBHARFBUZZ_CFLAGS += $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBHARFBUZZ, \
|
||||
NAME := jharfbuzz, \
|
||||
EXCLUDE_FILES := $(LIBHARFBUZZ_EXCLUDE_FILES), \
|
||||
TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
|
||||
CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBHARFBUZZ_CFLAGS), \
|
||||
OPTIMIZATION := $(LIBHARFBUZZ_OPTIMIZATION), \
|
||||
CFLAGS_windows = -DCC_NOEX, \
|
||||
EXTRA_HEADER_DIRS := $(LIBHARFBUZZ_EXTRA_HEADER_DIRS), \
|
||||
WARNINGS_AS_ERRORS_xlc := false, \
|
||||
DISABLED_WARNINGS_gcc := type-limits missing-field-initializers strict-aliasing, \
|
||||
DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
|
||||
maybe-uninitialized class-memaccess, \
|
||||
DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
|
||||
tautological-constant-out-of-range-compare int-to-pointer-cast \
|
||||
undef missing-field-initializers, \
|
||||
DISABLED_WARNINGS_C_solstudio := \
|
||||
E_INTEGER_OVERFLOW_DETECTED \
|
||||
E_ARG_INCOMPATIBLE_WITH_ARG_L \
|
||||
E_ENUM_VAL_OVERFLOWS_INT_MAX, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := \
|
||||
truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
|
||||
hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \
|
||||
LDFLAGS := $(LIBHARFBUZZ_LDFLAGS), \
|
||||
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
|
||||
LDFLAGS_aix := -Wl$(COMMA)-berok, \
|
||||
LIBS := $(BUILD_LIBHARFBUZZ), \
|
||||
LIBS_unix := $(LIBM) $(LIBCXX), \
|
||||
LIBS_macosx := -framework CoreText -framework CoreFoundation -framework CoreGraphics, \
|
||||
LIBS_windows := user32.lib, \
|
||||
))
|
||||
|
||||
ifeq ($(FREETYPE_TO_USE), bundled)
|
||||
$(BUILD_LIBHARFBUZZ): $(BUILD_LIBFREETYPE)
|
||||
endif
|
||||
|
||||
TARGETS += $(BUILD_LIBHARFBUZZ)
|
||||
|
||||
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||
HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
|
||||
-DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
|
||||
-DHB_NO_PRAGMA_GCC_DIAGNOSTIC
|
||||
endif
|
||||
ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx))
|
||||
HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES
|
||||
endif
|
||||
ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS
|
||||
endif
|
||||
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc
|
||||
|
||||
# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later.
|
||||
LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc
|
||||
|
||||
LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS)
|
||||
|
||||
#### End harfbuzz configuration
|
||||
###########################################################################
|
||||
|
||||
LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
|
||||
libfontmanager/harfbuzz \
|
||||
libfontmanager/harfbuzz/hb-ucdn \
|
||||
libjharfbuzz \
|
||||
common/awt \
|
||||
common/font \
|
||||
libawt/java2d \
|
||||
@@ -606,8 +678,8 @@ LIBFONTMANAGER_EXTRA_HEADER_DIRS := \
|
||||
libawt/java2d/loops \
|
||||
#
|
||||
|
||||
LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS)
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(LIBFREETYPE_LIBS)
|
||||
LIBFONTMANAGER_CFLAGS += $(LIBFREETYPE_CFLAGS) $(HARFBUZZ_FLAGS)
|
||||
BUILD_LIBFONTMANAGER_FONTLIB += $(LIBHARFBUZZ_LIBS) $(LIBFREETYPE_LIBS)
|
||||
|
||||
LIBFONTMANAGER_OPTIMIZATION := HIGH
|
||||
|
||||
@@ -650,20 +722,16 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
||||
CFLAGS_windows = -DCC_NOEX, \
|
||||
EXTRA_HEADER_DIRS := $(LIBFONTMANAGER_EXTRA_HEADER_DIRS), \
|
||||
WARNINGS_AS_ERRORS_xlc := false, \
|
||||
DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \
|
||||
type-limits missing-field-initializers implicit-fallthrough strict-aliasing, \
|
||||
DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \
|
||||
maybe-uninitialized, \
|
||||
DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \
|
||||
tautological-constant-out-of-range-compare int-to-pointer-cast, \
|
||||
DISABLED_WARNINGS_C_solstudio = \
|
||||
DISABLED_WARNINGS_gcc := sign-compare unused-function int-to-pointer-cast, \
|
||||
DISABLED_WARNINGS_clang := sign-compare, \
|
||||
DISABLED_WARNINGS_C_solstudio := \
|
||||
E_INTEGER_OVERFLOW_DETECTED \
|
||||
E_ARG_INCOMPATIBLE_WITH_ARG_L \
|
||||
E_ENUM_VAL_OVERFLOWS_INT_MAX, \
|
||||
DISABLED_WARNINGS_CXX_solstudio := \
|
||||
truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
|
||||
hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
|
||||
DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819 4101 4068 4805 4138, \
|
||||
DISABLED_WARNINGS_microsoft := 4018 4146 4244 4996 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), \
|
||||
@@ -671,14 +739,17 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBFONTMANAGER, \
|
||||
LDFLAGS_aix := -Wl$(COMMA)-berok, \
|
||||
LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
|
||||
LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
|
||||
LIBS_macosx := -lawt_lwawt -framework CoreText -framework CoreFoundation \
|
||||
-framework CoreGraphics, \
|
||||
LIBS_macosx := -lawt_lwawt, \
|
||||
LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
|
||||
$(WIN_AWT_LIB), \
|
||||
))
|
||||
|
||||
$(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT)
|
||||
|
||||
ifeq ($(USE_EXTERNAL_HARFBUZZ), false)
|
||||
$(BUILD_LIBFONTMANAGER): $(BUILD_LIBHARFBUZZ)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
$(BUILD_LIBFONTMANAGER): $(call FindLib, $(MODULE), awt_lwawt)
|
||||
endif
|
||||
|
||||
@@ -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
|
||||
@@ -55,6 +55,17 @@ ifneq ($(BUILD_CRYPTO), false)
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBW2K_LSA_AUTH)
|
||||
|
||||
$(eval $(call SetupJdkLibrary, BUILD_LIBSSPI_BRIDGE, \
|
||||
NAME := sspi_bridge, \
|
||||
OPTIMIZATION := LOW, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
-I$(TOPDIR)/src/java.security.jgss/share/native/libj2gss, \
|
||||
LDFLAGS := $(LDFLAGS_JDKLIB) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN) \
|
||||
))
|
||||
|
||||
TARGETS += $(BUILD_LIBSSPI_BRIDGE)
|
||||
endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
|
||||
@@ -36,7 +36,7 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
SA_LDFLAGS := -mt
|
||||
|
||||
else ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
SA_CFLAGS := -Damd64 -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
|
||||
SA_CFLAGS := -D_GNU_SOURCE -mno-omit-leaf-frame-pointer \
|
||||
-mstack-alignment=16 -fPIC
|
||||
LIBSA_EXTRA_SRC := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.hotspot.agent
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
|
||||
@@ -6142,6 +6142,9 @@
|
||||
<df name="AddModuleUsesAndProvides">
|
||||
<in>libAddModuleUsesAndProvidesTest.c</in>
|
||||
</df>
|
||||
<df name="GetClassMethods">
|
||||
<in>libOverpassMethods.c</in>
|
||||
</df>
|
||||
<df name="GetModulesInfo">
|
||||
<in>libJvmtiGetAllModulesTest.c</in>
|
||||
</df>
|
||||
@@ -40143,6 +40146,11 @@
|
||||
tool="0"
|
||||
flavor2="0">
|
||||
</item>
|
||||
<item path="../../test/hotspot/jtreg/serviceability/jvmti/GetClassMethods/libOverpassMethods.c"
|
||||
ex="false"
|
||||
tool="0"
|
||||
flavor2="0">
|
||||
</item>
|
||||
<item path="../../test/hotspot/jtreg/serviceability/jvmti/GetModulesInfo/libJvmtiGetAllModulesTest.c"
|
||||
ex="false"
|
||||
tool="0"
|
||||
|
||||
@@ -77,8 +77,8 @@ endif
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), macosx)
|
||||
BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libTestMainKeyWindow := -ObjC
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := -framework JavaVM \
|
||||
-framework Cocoa -framework JavaNativeFoundation
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := -framework Cocoa \
|
||||
-framework JavaNativeFoundation
|
||||
else
|
||||
BUILD_JDK_JTREG_EXCLUDE += libTestMainKeyWindow.c
|
||||
endif
|
||||
|
||||
@@ -54,4 +54,5 @@ jdk.security.jgss,
|
||||
jdk.unsupported,
|
||||
jdk.xml.dom,
|
||||
jdk.zipfs,
|
||||
jdk.hotspot.agent
|
||||
jdk.hotspot.agent,
|
||||
jdk.jcmd
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, 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
|
||||
@@ -32,10 +32,12 @@
|
||||
|
||||
extern "C" void entry(CodeBuffer*);
|
||||
|
||||
#ifdef ASSERT
|
||||
void aarch64TestHook()
|
||||
{
|
||||
BufferBlob* b = BufferBlob::create("aarch64Test", 500000);
|
||||
CodeBuffer code(b);
|
||||
MacroAssembler _masm(&code);
|
||||
entry(&code);
|
||||
BufferBlob::free(b);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
dnl Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
dnl Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
dnl DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
dnl
|
||||
dnl This code is free software; you can redistribute it and/or modify it
|
||||
@@ -23,12 +23,12 @@ dnl
|
||||
dnl Process this file with m4 aarch64_ad.m4 to generate the arithmetic
|
||||
dnl and shift patterns patterns used in aarch64.ad.
|
||||
dnl
|
||||
// BEGIN This section of the file is automatically generated. Do not edit --------------
|
||||
dnl
|
||||
define(`ORL2I', `ifelse($1,I,orL2I)')
|
||||
dnl
|
||||
define(`BASE_SHIFT_INSN',
|
||||
`
|
||||
`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $2$1_reg_$4_reg(iReg$1NoSp dst,
|
||||
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2,
|
||||
immI src3, rFlagsReg cr) %{
|
||||
@@ -46,9 +46,11 @@ instruct $2$1_reg_$4_reg(iReg$1NoSp dst,
|
||||
%}
|
||||
|
||||
ins_pipe(ialu_reg_reg_shift);
|
||||
%}')dnl
|
||||
%}
|
||||
')dnl
|
||||
define(`BASE_INVERTED_INSN',
|
||||
`
|
||||
`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $2$1_reg_not_reg(iReg$1NoSp dst,
|
||||
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_M1 m1,
|
||||
rFlagsReg cr) %{
|
||||
@@ -68,9 +70,11 @@ dnl into this canonical form.
|
||||
%}
|
||||
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}')dnl
|
||||
%}
|
||||
')dnl
|
||||
define(`INVERTED_SHIFT_INSN',
|
||||
`
|
||||
`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $2$1_reg_$4_not_reg(iReg$1NoSp dst,
|
||||
iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2,
|
||||
immI src3, imm$1_M1 src4, rFlagsReg cr) %{
|
||||
@@ -91,9 +95,12 @@ dnl into this canonical form.
|
||||
%}
|
||||
|
||||
ins_pipe(ialu_reg_reg_shift);
|
||||
%}')dnl
|
||||
%}
|
||||
')dnl
|
||||
define(`NOT_INSN',
|
||||
`instruct reg$1_not_reg(iReg$1NoSp dst,
|
||||
`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct reg$1_not_reg(iReg$1NoSp dst,
|
||||
iReg$1`'ORL2I($1) src1, imm$1_M1 m1,
|
||||
rFlagsReg cr) %{
|
||||
match(Set dst (Xor$1 src1 m1));
|
||||
@@ -108,7 +115,8 @@ define(`NOT_INSN',
|
||||
%}
|
||||
|
||||
ins_pipe(ialu_reg);
|
||||
%}')dnl
|
||||
%}
|
||||
')dnl
|
||||
dnl
|
||||
define(`BOTH_SHIFT_INSNS',
|
||||
`BASE_SHIFT_INSN(I, $1, ifelse($2,andr,andw,$2w), $3, $4)
|
||||
@@ -120,7 +128,7 @@ BASE_INVERTED_INSN(L, $1, $2, $3, $4)')dnl
|
||||
dnl
|
||||
define(`BOTH_INVERTED_SHIFT_INSNS',
|
||||
`INVERTED_SHIFT_INSN(I, $1, $2w, $3, $4, ~0, int)
|
||||
INVERTED_SHIFT_INSN(L, $1, $2, $3, $4, ~0l, long)')dnl
|
||||
INVERTED_SHIFT_INSN(L, $1, $2, $3, $4, ~0l, jlong)')dnl
|
||||
dnl
|
||||
define(`ALL_SHIFT_KINDS',
|
||||
`BOTH_SHIFT_INSNS($1, $2, URShift, LSR)
|
||||
@@ -147,8 +155,10 @@ ALL_SHIFT_KINDS(Add, add)
|
||||
ALL_SHIFT_KINDS(Sub, sub)
|
||||
dnl
|
||||
dnl EXTEND mode, rshift_op, src, lshift_count, rshift_count
|
||||
define(`EXTEND', `($2$1 (LShift$1 $3 $4) $5)')
|
||||
define(`BFM_INSN',`
|
||||
define(`EXTEND', `($2$1 (LShift$1 $3 $4) $5)') dnl
|
||||
define(`BFM_INSN',`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// Shift Left followed by Shift Right.
|
||||
// This idiom is used by the compiler for the i2b bytecode etc.
|
||||
instruct $4$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift_count, immI rshift_count)
|
||||
@@ -170,7 +180,8 @@ instruct $4$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift_count, immI rsh
|
||||
%}
|
||||
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}')
|
||||
%}
|
||||
')
|
||||
BFM_INSN(L, 63, RShift, sbfm)
|
||||
BFM_INSN(I, 31, RShift, sbfmw)
|
||||
BFM_INSN(L, 63, URShift, ubfm)
|
||||
@@ -178,7 +189,9 @@ BFM_INSN(I, 31, URShift, ubfmw)
|
||||
dnl
|
||||
// Bitfield extract with shift & mask
|
||||
define(`BFX_INSN',
|
||||
`instruct $3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI rshift, imm$1_bitmask mask)
|
||||
`// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI rshift, imm$1_bitmask mask)
|
||||
%{
|
||||
match(Set dst (And$1 ($2$1 src rshift) mask));
|
||||
// Make sure we are not going to exceed what $3 can do.
|
||||
@@ -188,16 +201,20 @@ define(`BFX_INSN',
|
||||
format %{ "$3 $dst, $src, $rshift, $mask" %}
|
||||
ins_encode %{
|
||||
int rshift = $rshift$$constant & $4;
|
||||
long mask = $mask$$constant;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2$6(mask+1);
|
||||
__ $3(as_Register($dst$$reg),
|
||||
as_Register($src$$reg), rshift, width);
|
||||
%}
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}')
|
||||
%}
|
||||
')
|
||||
BFX_INSN(I, URShift, ubfxw, 31, int)
|
||||
BFX_INSN(L, URShift, ubfx, 63, long, _long)
|
||||
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// We can use ubfx when extending an And with a mask when we know mask
|
||||
// is positive. We know that because immI_bitmask guarantees it.
|
||||
instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask mask)
|
||||
@@ -210,7 +227,7 @@ instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask m
|
||||
format %{ "ubfx $dst, $src, $rshift, $mask" %}
|
||||
ins_encode %{
|
||||
int rshift = $rshift$$constant & 31;
|
||||
long mask = $mask$$constant;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2(mask+1);
|
||||
__ ubfx(as_Register($dst$$reg),
|
||||
as_Register($src$$reg), rshift, width);
|
||||
@@ -218,10 +235,12 @@ instruct ubfxIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI rshift, immI_bitmask m
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
|
||||
define(`UBFIZ_INSN',
|
||||
define(`UBFIZ_INSN', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// We can use ubfiz when masking by a positive number and then left shifting the result.
|
||||
// We know that the mask is positive because imm$1_bitmask guarantees it.
|
||||
`instruct $2$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, imm$1_bitmask mask)
|
||||
instruct $2$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src, immI lshift, imm$1_bitmask mask)
|
||||
%{
|
||||
match(Set dst (LShift$1 (And$1 src mask) lshift));
|
||||
predicate((unsigned int)n->in(2)->get_int() <= $3 &&
|
||||
@@ -231,16 +250,20 @@ define(`UBFIZ_INSN',
|
||||
format %{ "$2 $dst, $src, $lshift, $mask" %}
|
||||
ins_encode %{
|
||||
int lshift = $lshift$$constant;
|
||||
long mask = $mask$$constant;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2$5(mask+1);
|
||||
__ $2(as_Register($dst$$reg),
|
||||
as_Register($src$$reg), lshift, width);
|
||||
%}
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}')
|
||||
%}
|
||||
')
|
||||
UBFIZ_INSN(I, ubfizw, 31, int)
|
||||
UBFIZ_INSN(L, ubfiz, 63, long, _long)
|
||||
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// If there is a convert I to L block between and AndI and a LShiftL, we can also match ubfiz
|
||||
instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask mask)
|
||||
%{
|
||||
@@ -252,7 +275,7 @@ instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask
|
||||
format %{ "ubfiz $dst, $src, $lshift, $mask" %}
|
||||
ins_encode %{
|
||||
int lshift = $lshift$$constant;
|
||||
long mask = $mask$$constant;
|
||||
intptr_t mask = $mask$$constant;
|
||||
int width = exact_log2(mask+1);
|
||||
__ ubfiz(as_Register($dst$$reg),
|
||||
as_Register($src$$reg), lshift, width);
|
||||
@@ -260,10 +283,12 @@ instruct ubfizIConvI2L(iRegLNoSp dst, iRegIorL2I src, immI lshift, immI_bitmask
|
||||
ins_pipe(ialu_reg_shift);
|
||||
%}
|
||||
|
||||
// Rotations
|
||||
|
||||
define(`EXTRACT_INSN',
|
||||
`instruct extr$3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI lshift, immI rshift, rFlagsReg cr)
|
||||
// Rotations dnl
|
||||
define(`EXTRACT_INSN',`
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct extr$3$1(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI lshift, immI rshift, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 (LShift$1 src1 lshift) (URShift$1 src2 rshift)));
|
||||
predicate(0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & $2));
|
||||
@@ -282,9 +307,10 @@ EXTRACT_INSN(L, 63, Or, extr)
|
||||
EXTRACT_INSN(I, 31, Or, extrw)
|
||||
EXTRACT_INSN(L, 63, Add, extr)
|
||||
EXTRACT_INSN(I, 31, Add, extrw)
|
||||
define(`ROL_EXPAND', `
|
||||
// $2 expander
|
||||
define(`ROL_EXPAND', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// $2 expander
|
||||
instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
|
||||
%{
|
||||
effect(DEF dst, USE src, USE shift);
|
||||
@@ -297,10 +323,12 @@ instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
|
||||
rscratch1);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg_vshift);
|
||||
%}')dnl
|
||||
define(`ROR_EXPAND', `
|
||||
// $2 expander
|
||||
%}
|
||||
')
|
||||
define(`ROR_EXPAND', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
|
||||
// $2 expander
|
||||
instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
|
||||
%{
|
||||
effect(DEF dst, USE src, USE shift);
|
||||
@@ -312,8 +340,10 @@ instruct $2$1_rReg(iReg$1NoSp dst, iReg$1 src, iRegI shift, rFlagsReg cr)
|
||||
as_Register($shift$$reg));
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg_vshift);
|
||||
%}')dnl
|
||||
define(ROL_INSN, `
|
||||
%}
|
||||
')dnl
|
||||
define(ROL_INSN, `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst (Or$1 (LShift$1 src shift) (URShift$1 src (SubI c$2 shift))));
|
||||
@@ -321,8 +351,10 @@ instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2,
|
||||
expand %{
|
||||
$3$1_rReg(dst, src, shift, cr);
|
||||
%}
|
||||
%}')dnl
|
||||
define(ROR_INSN, `
|
||||
%}
|
||||
')dnl
|
||||
define(ROR_INSN, `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst (Or$1 (URShift$1 src shift) (LShift$1 src (SubI c$2 shift))));
|
||||
@@ -330,7 +362,8 @@ instruct $3$1_rReg_Var_C$2(iReg$1NoSp dst, iReg$1 src, iRegI shift, immI$2 c$2,
|
||||
expand %{
|
||||
$3$1_rReg(dst, src, shift, cr);
|
||||
%}
|
||||
%}')dnl
|
||||
%}
|
||||
')dnl
|
||||
ROL_EXPAND(L, rol, rorv)
|
||||
ROL_EXPAND(I, rol, rorvw)
|
||||
ROL_INSN(L, _64, rol)
|
||||
@@ -347,6 +380,8 @@ ROR_INSN(I, 0, ror)
|
||||
// Add/subtract (extended)
|
||||
dnl ADD_SUB_EXTENDED(mode, size, add node, shift node, insn, shift type, wordsize
|
||||
define(`ADD_SUB_CONV', `
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3Ext$1(iReg$2NoSp dst, iReg$2`'ORL2I($2) src1, iReg$1`'ORL2I($1) src2, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$2 src1 (ConvI2L src2)));
|
||||
@@ -359,10 +394,12 @@ instruct $3Ext$1(iReg$2NoSp dst, iReg$2`'ORL2I($2) src1, iReg$1`'ORL2I($1) src2,
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}')dnl
|
||||
ADD_SUB_CONV(I,L,Add,add,sxtw);
|
||||
ADD_SUB_CONV(I,L,Sub,sub,sxtw);
|
||||
ADD_SUB_CONV(I,L,Add,add,sxtw)
|
||||
ADD_SUB_CONV(I,L,Sub,sub,sxtw)
|
||||
dnl
|
||||
define(`ADD_SUB_EXTENDED', `
|
||||
// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3Ext$1_$6(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immI_`'eval($7-$2) lshift, immI_`'eval($7-$2) rshift, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 src1 EXTEND($1, $4, src2, lshift, rshift)));
|
||||
@@ -374,7 +411,7 @@ instruct $3Ext$1_$6(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) sr
|
||||
as_Register($src2$$reg), ext::$6);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}')
|
||||
%}')dnl
|
||||
ADD_SUB_EXTENDED(I,16,Add,RShift,add,sxth,32)
|
||||
ADD_SUB_EXTENDED(I,8,Add,RShift,add,sxtb,32)
|
||||
ADD_SUB_EXTENDED(I,8,Add,URShift,add,uxtb,32)
|
||||
@@ -384,7 +421,8 @@ ADD_SUB_EXTENDED(L,8,Add,RShift,add,sxtb,64)
|
||||
ADD_SUB_EXTENDED(L,8,Add,URShift,add,uxtb,64)
|
||||
dnl
|
||||
dnl ADD_SUB_ZERO_EXTEND(mode, size, add node, insn, shift type)
|
||||
define(`ADD_SUB_ZERO_EXTEND', `
|
||||
define(`ADD_SUB_ZERO_EXTEND', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3Ext$1_$5_and(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_$2 mask, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 src1 (And$1 src2 mask)));
|
||||
@@ -396,7 +434,8 @@ instruct $3Ext$1_$5_and(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1
|
||||
as_Register($src2$$reg), ext::$5);
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg);
|
||||
%}')
|
||||
%}
|
||||
')
|
||||
dnl
|
||||
ADD_SUB_ZERO_EXTEND(I,255,Add,addw,uxtb)
|
||||
ADD_SUB_ZERO_EXTEND(I,65535,Add,addw,uxth)
|
||||
@@ -411,7 +450,8 @@ ADD_SUB_ZERO_EXTEND(L,65535,Sub,sub,uxth)
|
||||
ADD_SUB_ZERO_EXTEND(L,4294967295,Sub,sub,uxtw)
|
||||
dnl
|
||||
dnl ADD_SUB_ZERO_EXTEND_SHIFT(mode, size, add node, insn, ext type)
|
||||
define(`ADD_SUB_EXTENDED_SHIFT', `
|
||||
define(`ADD_SUB_EXTENDED_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3Ext$1_$6_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, immIExt lshift2, immI_`'eval($7-$2) lshift1, immI_`'eval($7-$2) rshift1, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 src1 (LShift$1 EXTEND($1, $4, src2, lshift1, rshift1) lshift2)));
|
||||
@@ -423,7 +463,8 @@ instruct $3Ext$1_$6_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I(
|
||||
as_Register($src2$$reg), ext::$6, ($lshift2$$constant));
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg_shift);
|
||||
%}')
|
||||
%}
|
||||
')
|
||||
dnl $1 $2 $3 $4 $5 $6 $7
|
||||
ADD_SUB_EXTENDED_SHIFT(L,8,Add,RShift,add,sxtb,64)
|
||||
ADD_SUB_EXTENDED_SHIFT(L,16,Add,RShift,add,sxth,64)
|
||||
@@ -440,7 +481,8 @@ ADD_SUB_EXTENDED_SHIFT(I,8,Sub,RShift,subw,sxtb,32)
|
||||
ADD_SUB_EXTENDED_SHIFT(I,16,Sub,RShift,subw,sxth,32)
|
||||
dnl
|
||||
dnl ADD_SUB_CONV_SHIFT(mode, add node, insn, ext type)
|
||||
define(`ADD_SUB_CONV_SHIFT', `
|
||||
define(`ADD_SUB_CONV_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $2ExtI_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iRegIorL2I src2, immIExt lshift, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($2$1 src1 (LShiftL (ConvI2L src2) lshift)));
|
||||
@@ -452,13 +494,14 @@ instruct $2ExtI_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iRegIorL2I src2, i
|
||||
as_Register($src2$$reg), ext::$4, ($lshift$$constant));
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg_shift);
|
||||
%}')
|
||||
dnl
|
||||
ADD_SUB_CONV_SHIFT(L,Add,add,sxtw);
|
||||
ADD_SUB_CONV_SHIFT(L,Sub,sub,sxtw);
|
||||
%}
|
||||
')dnl
|
||||
ADD_SUB_CONV_SHIFT(L,Add,add,sxtw)
|
||||
ADD_SUB_CONV_SHIFT(L,Sub,sub,sxtw)
|
||||
dnl
|
||||
dnl ADD_SUB_ZERO_EXTEND(mode, size, add node, insn, ext type)
|
||||
define(`ADD_SUB_ZERO_EXTEND_SHIFT', `
|
||||
define(`ADD_SUB_ZERO_EXTEND_SHIFT', `// This pattern is automatically generated from aarch64_ad.m4
|
||||
// DO NOT EDIT ANYTHING IN THIS SECTION OF THE FILE
|
||||
instruct $3Ext$1_$5_and_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'ORL2I($1) src2, imm$1_$2 mask, immIExt lshift, rFlagsReg cr)
|
||||
%{
|
||||
match(Set dst ($3$1 src1 (LShift$1 (And$1 src2 mask) lshift)));
|
||||
@@ -470,8 +513,8 @@ instruct $3Ext$1_$5_and_shift(iReg$1NoSp dst, iReg$1`'ORL2I($1) src1, iReg$1`'OR
|
||||
as_Register($src2$$reg), ext::$5, ($lshift$$constant));
|
||||
%}
|
||||
ins_pipe(ialu_reg_reg_shift);
|
||||
%}')
|
||||
dnl
|
||||
%}
|
||||
')dnl
|
||||
dnl $1 $2 $3 $4 $5
|
||||
ADD_SUB_ZERO_EXTEND_SHIFT(L,255,Add,add,uxtb)
|
||||
ADD_SUB_ZERO_EXTEND_SHIFT(L,65535,Add,add,uxth)
|
||||
@@ -487,4 +530,4 @@ dnl
|
||||
ADD_SUB_ZERO_EXTEND_SHIFT(I,255,Sub,subw,uxtb)
|
||||
ADD_SUB_ZERO_EXTEND_SHIFT(I,65535,Sub,subw,uxth)
|
||||
dnl
|
||||
// END This section of the file is automatically generated. Do not edit --------------
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020 Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "interpreter/interpreter.hpp"
|
||||
|
||||
#ifndef PRODUCT
|
||||
const unsigned long Assembler::asm_bp = 0x00007fffee09ac88;
|
||||
const uintptr_t Assembler::asm_bp = 0x00007fffee09ac88;
|
||||
#endif
|
||||
|
||||
#include "compiler/disassembler.hpp"
|
||||
@@ -73,7 +73,6 @@ static void asm_check(const unsigned int *insns, const unsigned int *insns1, siz
|
||||
}
|
||||
assert(ok, "Assembler smoke test failed");
|
||||
}
|
||||
#endif // ASSERT
|
||||
|
||||
void entry(CodeBuffer *cb) {
|
||||
|
||||
@@ -91,7 +90,6 @@ void entry(CodeBuffer *cb) {
|
||||
|
||||
// Smoke test for assembler
|
||||
|
||||
#ifdef ASSERT
|
||||
// BEGIN Generated code -- do not edit
|
||||
// Generated by aarch64-asmtest.py
|
||||
Label back, forth;
|
||||
@@ -134,14 +132,14 @@ void entry(CodeBuffer *cb) {
|
||||
__ subs(r11, r5, 582u); // subs x11, x5, #582
|
||||
|
||||
// LogicalImmOp
|
||||
__ andw(r23, r22, 32768ul); // and w23, w22, #0x8000
|
||||
__ orrw(r4, r10, 4042322160ul); // orr w4, w10, #0xf0f0f0f0
|
||||
__ eorw(r0, r24, 4042322160ul); // eor w0, w24, #0xf0f0f0f0
|
||||
__ andsw(r19, r29, 2139127680ul); // ands w19, w29, #0x7f807f80
|
||||
__ andr(r5, r10, 4503599627354112ul); // and x5, x10, #0xfffffffffc000
|
||||
__ orr(r12, r30, 18445618178097414144ul); // orr x12, x30, #0xfffc0000fffc0000
|
||||
__ eor(r30, r5, 262128ul); // eor x30, x5, #0x3fff0
|
||||
__ ands(r26, r23, 4194300ul); // ands x26, x23, #0x3ffffc
|
||||
__ andw(r23, r22, 32768ull); // and w23, w22, #0x8000
|
||||
__ orrw(r4, r10, 4042322160ull); // orr w4, w10, #0xf0f0f0f0
|
||||
__ eorw(r0, r24, 4042322160ull); // eor w0, w24, #0xf0f0f0f0
|
||||
__ andsw(r19, r29, 2139127680ull); // ands w19, w29, #0x7f807f80
|
||||
__ andr(r5, r10, 4503599627354112ull); // and x5, x10, #0xfffffffffc000
|
||||
__ orr(r12, r30, 18445618178097414144ull); // orr x12, x30, #0xfffc0000fffc0000
|
||||
__ eor(r30, r5, 262128ull); // eor x30, x5, #0x3fff0
|
||||
__ ands(r26, r23, 4194300ull); // ands x26, x23, #0x3ffffc
|
||||
|
||||
// AbsOp
|
||||
__ b(__ pc()); // b .
|
||||
@@ -1189,9 +1187,8 @@ Disassembly of section .text:
|
||||
asm_check((unsigned int *)PC, vector_insns,
|
||||
sizeof vector_insns / sizeof vector_insns[0]);
|
||||
}
|
||||
|
||||
#endif // ASSERT
|
||||
}
|
||||
#endif // ASSERT
|
||||
|
||||
#undef __
|
||||
|
||||
@@ -1226,7 +1223,7 @@ extern "C" {
|
||||
Disassembler::decode((address)start, (address)start + len);
|
||||
}
|
||||
|
||||
JNIEXPORT void das1(unsigned long insn) {
|
||||
JNIEXPORT void das1(uintptr_t insn) {
|
||||
das(insn, 1);
|
||||
}
|
||||
}
|
||||
@@ -1265,7 +1262,7 @@ void Address::lea(MacroAssembler *as, Register r) const {
|
||||
}
|
||||
}
|
||||
|
||||
void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) {
|
||||
void Assembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset) {
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
|
||||
@@ -1274,7 +1271,7 @@ void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_off
|
||||
#define starti Instruction_aarch64 do_not_use(this); set_current(&do_not_use)
|
||||
|
||||
void Assembler::adr(Register Rd, address adr) {
|
||||
long offset = adr - pc();
|
||||
intptr_t offset = adr - pc();
|
||||
int offset_lo = offset & 3;
|
||||
offset >>= 2;
|
||||
starti;
|
||||
@@ -1285,7 +1282,7 @@ void Assembler::adrp(Register reg1, const Address &dest, unsigned long &byte_off
|
||||
void Assembler::_adrp(Register Rd, address adr) {
|
||||
uint64_t pc_page = (uint64_t)pc() >> 12;
|
||||
uint64_t adr_page = (uint64_t)adr >> 12;
|
||||
long offset = adr_page - pc_page;
|
||||
intptr_t offset = adr_page - pc_page;
|
||||
int offset_lo = offset & 3;
|
||||
offset >>= 2;
|
||||
starti;
|
||||
@@ -1434,9 +1431,8 @@ void Assembler::add_sub_immediate(Register Rd, Register Rn, unsigned uimm, int o
|
||||
srf(Rn, 5);
|
||||
}
|
||||
|
||||
bool Assembler::operand_valid_for_add_sub_immediate(long imm) {
|
||||
bool shift = false;
|
||||
unsigned long uimm = uabs(imm);
|
||||
bool Assembler::operand_valid_for_add_sub_immediate(int64_t imm) {
|
||||
uint64_t uimm = (uint64_t)uabs((jlong)imm);
|
||||
if (uimm < (1 << 12))
|
||||
return true;
|
||||
if (uimm < (1 << 24)
|
||||
|
||||
@@ -199,7 +199,7 @@ public:
|
||||
return extend(uval, msb - lsb);
|
||||
}
|
||||
|
||||
static void patch(address a, int msb, int lsb, unsigned long val) {
|
||||
static void patch(address a, int msb, int lsb, uint64_t val) {
|
||||
int nbits = msb - lsb + 1;
|
||||
guarantee(val < (1U << nbits), "Field too big for insn");
|
||||
assert_cond(msb >= lsb);
|
||||
@@ -212,9 +212,9 @@ public:
|
||||
*(unsigned *)a = target;
|
||||
}
|
||||
|
||||
static void spatch(address a, int msb, int lsb, long val) {
|
||||
static void spatch(address a, int msb, int lsb, int64_t val) {
|
||||
int nbits = msb - lsb + 1;
|
||||
long chk = val >> (nbits - 1);
|
||||
int64_t chk = val >> (nbits - 1);
|
||||
guarantee (chk == -1 || chk == 0, "Field too big for insn");
|
||||
unsigned uval = val;
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
@@ -245,9 +245,9 @@ public:
|
||||
f(val, bit, bit);
|
||||
}
|
||||
|
||||
void sf(long val, int msb, int lsb) {
|
||||
void sf(int64_t val, int msb, int lsb) {
|
||||
int nbits = msb - lsb + 1;
|
||||
long chk = val >> (nbits - 1);
|
||||
int64_t chk = val >> (nbits - 1);
|
||||
guarantee (chk == -1 || chk == 0, "Field too big for insn");
|
||||
unsigned uval = val;
|
||||
unsigned mask = (1U << nbits) - 1;
|
||||
@@ -355,7 +355,7 @@ class Address {
|
||||
private:
|
||||
Register _base;
|
||||
Register _index;
|
||||
long _offset;
|
||||
int64_t _offset;
|
||||
enum mode _mode;
|
||||
extend _ext;
|
||||
|
||||
@@ -380,8 +380,14 @@ class Address {
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
Address(Register r, long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
Address(Register r, long long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
Address(Register r, unsigned int o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
Address(Register r, unsigned long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
Address(Register r, unsigned long long o)
|
||||
: _mode(base_plus_offset), _base(r), _offset(o), _index(noreg), _target(0) { }
|
||||
#ifdef ASSERT
|
||||
Address(Register r, ByteSize disp)
|
||||
: _mode(base_plus_offset), _base(r), _offset(in_bytes(disp)),
|
||||
@@ -421,7 +427,7 @@ class Address {
|
||||
"wrong mode");
|
||||
return _base;
|
||||
}
|
||||
long offset() const {
|
||||
int64_t offset() const {
|
||||
return _offset;
|
||||
}
|
||||
Register index() const {
|
||||
@@ -553,10 +559,10 @@ class Address {
|
||||
|
||||
void lea(MacroAssembler *, Register) const;
|
||||
|
||||
static bool offset_ok_for_immed(long offset, int shift = 0) {
|
||||
static bool offset_ok_for_immed(int64_t offset, int shift = 0) {
|
||||
unsigned mask = (1 << shift) - 1;
|
||||
if (offset < 0 || offset & mask) {
|
||||
return (uabs(offset) < (1 << (20 - 12))); // Unscaled offset
|
||||
return (uabs((julong)offset) < (1 << (20 - 12))); // Unscaled offset
|
||||
} else {
|
||||
return ((offset >> shift) < (1 << (21 - 10 + 1))); // Scaled, unsigned offset
|
||||
}
|
||||
@@ -613,10 +619,10 @@ typedef enum {
|
||||
class Assembler : public AbstractAssembler {
|
||||
|
||||
#ifndef PRODUCT
|
||||
static const unsigned long asm_bp;
|
||||
static const uintptr_t asm_bp;
|
||||
|
||||
void emit_long(jint x) {
|
||||
if ((unsigned long)pc() == asm_bp)
|
||||
if ((uintptr_t)pc() == asm_bp)
|
||||
asm volatile ("nop");
|
||||
AbstractAssembler::emit_int32(x);
|
||||
}
|
||||
@@ -659,7 +665,7 @@ public:
|
||||
void f(unsigned val, int msb) {
|
||||
current->f(val, msb, msb);
|
||||
}
|
||||
void sf(long val, int msb, int lsb) {
|
||||
void sf(int64_t val, int msb, int lsb) {
|
||||
current->sf(val, msb, lsb);
|
||||
}
|
||||
void rf(Register reg, int lsb) {
|
||||
@@ -709,7 +715,7 @@ public:
|
||||
wrap_label(Rd, L, &Assembler::_adrp);
|
||||
}
|
||||
|
||||
void adrp(Register Rd, const Address &dest, unsigned long &offset);
|
||||
void adrp(Register Rd, const Address &dest, uint64_t &offset);
|
||||
|
||||
#undef INSN
|
||||
|
||||
@@ -833,7 +839,7 @@ public:
|
||||
// architecture. In debug mode we shrink it in order to test
|
||||
// trampolines, but not so small that branches in the interpreter
|
||||
// are out of range.
|
||||
static const unsigned long branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
|
||||
static const uint64_t branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
|
||||
|
||||
static bool reachable_from_branch_at(address branch, address target) {
|
||||
return uabs(target - branch) < branch_range;
|
||||
@@ -843,7 +849,7 @@ public:
|
||||
#define INSN(NAME, opcode) \
|
||||
void NAME(address dest) { \
|
||||
starti; \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
DEBUG_ONLY(assert(reachable_from_branch_at(pc(), dest), "debug only")); \
|
||||
f(opcode, 31), f(0b00101, 30, 26), sf(offset, 25, 0); \
|
||||
} \
|
||||
@@ -860,7 +866,7 @@ public:
|
||||
// Compare & branch (immediate)
|
||||
#define INSN(NAME, opcode) \
|
||||
void NAME(Register Rt, address dest) { \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
starti; \
|
||||
f(opcode, 31, 24), sf(offset, 23, 5), rf(Rt, 0); \
|
||||
} \
|
||||
@@ -878,7 +884,7 @@ public:
|
||||
// Test & branch (immediate)
|
||||
#define INSN(NAME, opcode) \
|
||||
void NAME(Register Rt, int bitpos, address dest) { \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
int b5 = bitpos >> 5; \
|
||||
bitpos &= 0x1f; \
|
||||
starti; \
|
||||
@@ -899,7 +905,7 @@ public:
|
||||
{EQ, NE, HS, CS=HS, LO, CC=LO, MI, PL, VS, VC, HI, LS, GE, LT, GT, LE, AL, NV};
|
||||
|
||||
void br(Condition cond, address dest) {
|
||||
long offset = (dest - pc()) >> 2;
|
||||
int64_t offset = (dest - pc()) >> 2;
|
||||
starti;
|
||||
f(0b0101010, 31, 25), f(0, 24), sf(offset, 23, 5), f(0, 4), f(cond, 3, 0);
|
||||
}
|
||||
@@ -1278,7 +1284,7 @@ public:
|
||||
// Load register (literal)
|
||||
#define INSN(NAME, opc, V) \
|
||||
void NAME(Register Rt, address dest) { \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
starti; \
|
||||
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
|
||||
sf(offset, 23, 5); \
|
||||
@@ -1303,7 +1309,7 @@ public:
|
||||
|
||||
#define INSN(NAME, opc, V) \
|
||||
void NAME(FloatRegister Rt, address dest) { \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
starti; \
|
||||
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
|
||||
sf(offset, 23, 5); \
|
||||
@@ -1318,7 +1324,7 @@ public:
|
||||
|
||||
#define INSN(NAME, opc, V) \
|
||||
void NAME(address dest, prfop op = PLDL1KEEP) { \
|
||||
long offset = (dest - pc()) >> 2; \
|
||||
int64_t offset = (dest - pc()) >> 2; \
|
||||
starti; \
|
||||
f(opc, 31, 30), f(0b011, 29, 27), f(V, 26), f(0b00, 25, 24), \
|
||||
sf(offset, 23, 5); \
|
||||
@@ -1394,7 +1400,7 @@ public:
|
||||
assert(size == 0b10 || size == 0b11, "bad operand size in ldr");
|
||||
assert(op == 0b01, "literal form can only be used with loads");
|
||||
f(size & 0b01, 31, 30), f(0b011, 29, 27), f(0b00, 25, 24);
|
||||
long offset = (adr.target() - pc()) >> 2;
|
||||
int64_t offset = (adr.target() - pc()) >> 2;
|
||||
sf(offset, 23, 5);
|
||||
code_section()->relocate(pc(), adr.rspec());
|
||||
return;
|
||||
@@ -2612,7 +2618,7 @@ void ext(FloatRegister Vd, SIMD_Arrangement T, FloatRegister Vn, FloatRegister V
|
||||
virtual void bang_stack_with_offset(int offset);
|
||||
|
||||
static bool operand_valid_for_logical_immediate(bool is32, uint64_t imm);
|
||||
static bool operand_valid_for_add_sub_immediate(long imm);
|
||||
static bool operand_valid_for_add_sub_immediate(int64_t imm);
|
||||
static bool operand_valid_for_float_immediate(double imm);
|
||||
|
||||
void emit_data64(jlong data, relocInfo::relocType rtype, int format = 0);
|
||||
|
||||
@@ -44,13 +44,13 @@ enum {
|
||||
pd_nof_cpu_regs_frame_map = RegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
pd_nof_fpu_regs_frame_map = FloatRegisterImpl::number_of_registers, // number of registers used during code emission
|
||||
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2, // number of registers killed by calls
|
||||
pd_nof_caller_save_cpu_regs_frame_map = 19 - 2 BSD_ONLY(- 1 /* r18 */), // number of registers killed by calls
|
||||
pd_nof_caller_save_fpu_regs_frame_map = 32, // number of registers killed by calls
|
||||
|
||||
pd_first_callee_saved_reg = 19 - 2,
|
||||
pd_last_callee_saved_reg = 26 - 2,
|
||||
pd_first_callee_saved_reg = 19 - 2 BSD_ONLY(- 1 /* r18 */),
|
||||
pd_last_callee_saved_reg = 26 - 2 BSD_ONLY(- 1 /* r18 */),
|
||||
|
||||
pd_last_allocatable_cpu_reg = 16,
|
||||
pd_last_allocatable_cpu_reg = 16 BSD_ONLY(- 1 /* r18 */),
|
||||
|
||||
pd_nof_cpu_regs_reg_alloc
|
||||
= pd_last_allocatable_cpu_reg + 1, // number of registers that are visible to register allocator
|
||||
@@ -60,9 +60,9 @@ enum {
|
||||
pd_nof_fpu_regs_linearscan = pd_nof_fpu_regs_frame_map, // number of registers visible to linear scan
|
||||
pd_nof_xmm_regs_linearscan = 0, // like sparc we don't have any of these
|
||||
pd_first_cpu_reg = 0,
|
||||
pd_last_cpu_reg = 16,
|
||||
pd_last_cpu_reg = 16 BSD_ONLY(- 1 /* r18 */),
|
||||
pd_first_byte_reg = 0,
|
||||
pd_last_byte_reg = 16,
|
||||
pd_last_byte_reg = 16 BSD_ONLY(- 1 /* r18 */),
|
||||
pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
|
||||
pd_last_fpu_reg = pd_first_fpu_reg + 31,
|
||||
|
||||
|
||||
@@ -181,7 +181,9 @@ void FrameMap::initialize() {
|
||||
map_register(i, r15); r15_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r16); r16_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r17); r17_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#ifndef __APPLE__
|
||||
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
#endif
|
||||
map_register(i, r19); r19_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r20); r20_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
map_register(i, r21); r21_opr = LIR_OprFact::single_cpu(i); i++;
|
||||
@@ -199,6 +201,10 @@ void FrameMap::initialize() {
|
||||
map_register(i, r8); r8_opr = LIR_OprFact::single_cpu(i); i++; // rscratch1
|
||||
map_register(i, r9); r9_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
|
||||
|
||||
#ifdef __APPLE__
|
||||
map_register(i, r18); r18_opr = LIR_OprFact::single_cpu(i); i++; // rscratch2
|
||||
#endif
|
||||
|
||||
rscratch1_opr = r8_opr;
|
||||
rscratch2_opr = r9_opr;
|
||||
rscratch1_long_opr = LIR_OprFact::double_cpu(r8_opr->cpu_regnr(), r8_opr->cpu_regnr());
|
||||
@@ -227,7 +233,9 @@ void FrameMap::initialize() {
|
||||
_caller_save_cpu_regs[13] = r15_opr;
|
||||
_caller_save_cpu_regs[14] = r16_opr;
|
||||
_caller_save_cpu_regs[15] = r17_opr;
|
||||
#ifndef __APPLE__
|
||||
_caller_save_cpu_regs[16] = r18_opr;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
_caller_save_fpu_regs[i] = LIR_OprFact::single_fpu(i);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -1378,7 +1378,7 @@ void LIR_Assembler::emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, L
|
||||
__ load_klass(klass_RInfo, obj);
|
||||
if (k->is_loaded()) {
|
||||
// See if we get an immediate positive hit
|
||||
__ ldr(rscratch1, Address(klass_RInfo, long(k->super_check_offset())));
|
||||
__ ldr(rscratch1, Address(klass_RInfo, int64_t(k->super_check_offset())));
|
||||
__ cmp(k_RInfo, rscratch1);
|
||||
if ((juint)in_bytes(Klass::secondary_super_cache_offset()) != k->super_check_offset()) {
|
||||
__ br(Assembler::NE, *failure_target);
|
||||
@@ -2626,7 +2626,7 @@ void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
|
||||
Register res = op->result_opr()->as_register();
|
||||
|
||||
assert_different_registers(val, crc, res);
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(res, ExternalAddress(StubRoutines::crc_table_addr()), offset);
|
||||
if (offset) __ add(res, res, offset);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -672,14 +672,14 @@ intptr_t* frame::real_fp() const {
|
||||
|
||||
#define DESCRIBE_FP_OFFSET(name) \
|
||||
{ \
|
||||
unsigned long *p = (unsigned long *)fp; \
|
||||
printf("0x%016lx 0x%016lx %s\n", (unsigned long)(p + frame::name##_offset), \
|
||||
uintptr_t *p = (uintptr_t *)fp; \
|
||||
printf("0x%016lx 0x%016lx %s\n", (uintptr_t)(p + frame::name##_offset), \
|
||||
p[frame::name##_offset], #name); \
|
||||
}
|
||||
|
||||
static __thread unsigned long nextfp;
|
||||
static __thread unsigned long nextpc;
|
||||
static __thread unsigned long nextsp;
|
||||
static __thread uintptr_t nextfp;
|
||||
static __thread uintptr_t nextpc;
|
||||
static __thread uintptr_t nextsp;
|
||||
static __thread RegisterMap *reg_map;
|
||||
|
||||
static void printbc(Method *m, intptr_t bcx) {
|
||||
@@ -698,7 +698,7 @@ static void printbc(Method *m, intptr_t bcx) {
|
||||
printf("%s : %s ==> %s\n", m->name_and_sig_as_C_string(), buf, name);
|
||||
}
|
||||
|
||||
void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned long bcx) {
|
||||
void internal_pf(uintptr_t sp, uintptr_t fp, uintptr_t pc, uintptr_t bcx) {
|
||||
if (! fp)
|
||||
return;
|
||||
|
||||
@@ -712,7 +712,7 @@ void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned
|
||||
DESCRIBE_FP_OFFSET(interpreter_frame_locals);
|
||||
DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
|
||||
DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
|
||||
unsigned long *p = (unsigned long *)fp;
|
||||
uintptr_t *p = (uintptr_t *)fp;
|
||||
|
||||
// We want to see all frames, native and Java. For compiled and
|
||||
// interpreted frames we have special information that allows us to
|
||||
@@ -722,16 +722,16 @@ void internal_pf(unsigned long sp, unsigned long fp, unsigned long pc, unsigned
|
||||
if (this_frame.is_compiled_frame() ||
|
||||
this_frame.is_interpreted_frame()) {
|
||||
frame sender = this_frame.sender(reg_map);
|
||||
nextfp = (unsigned long)sender.fp();
|
||||
nextpc = (unsigned long)sender.pc();
|
||||
nextsp = (unsigned long)sender.unextended_sp();
|
||||
nextfp = (uintptr_t)sender.fp();
|
||||
nextpc = (uintptr_t)sender.pc();
|
||||
nextsp = (uintptr_t)sender.unextended_sp();
|
||||
} else {
|
||||
nextfp = p[frame::link_offset];
|
||||
nextpc = p[frame::return_addr_offset];
|
||||
nextsp = (unsigned long)&p[frame::sender_sp_offset];
|
||||
nextsp = (uintptr_t)&p[frame::sender_sp_offset];
|
||||
}
|
||||
|
||||
if (bcx == -1ul)
|
||||
if (bcx == -1ULL)
|
||||
bcx = p[frame::interpreter_frame_bcp_offset];
|
||||
|
||||
if (Interpreter::contains((address)pc)) {
|
||||
@@ -765,8 +765,8 @@ extern "C" void npf() {
|
||||
internal_pf (nextsp, nextfp, nextpc, -1);
|
||||
}
|
||||
|
||||
extern "C" void pf(unsigned long sp, unsigned long fp, unsigned long pc,
|
||||
unsigned long bcx, unsigned long thread) {
|
||||
extern "C" void pf(uintptr_t sp, uintptr_t fp, uintptr_t pc,
|
||||
uintptr_t bcx, uintptr_t thread) {
|
||||
if (!reg_map) {
|
||||
reg_map = NEW_C_HEAP_OBJ(RegisterMap, mtNone);
|
||||
::new (reg_map) RegisterMap((JavaThread*)thread, false);
|
||||
@@ -785,9 +785,9 @@ extern "C" void pf(unsigned long sp, unsigned long fp, unsigned long pc,
|
||||
// support for printing out where we are in a Java method
|
||||
// needs to be passed current fp and bcp register values
|
||||
// prints method name, bc index and bytecode name
|
||||
extern "C" void pm(unsigned long fp, unsigned long bcx) {
|
||||
extern "C" void pm(uintptr_t fp, uintptr_t bcx) {
|
||||
DESCRIBE_FP_OFFSET(interpreter_frame_method);
|
||||
unsigned long *p = (unsigned long *)fp;
|
||||
uintptr_t *p = (uintptr_t *)fp;
|
||||
Method* m = (Method*)p[frame::interpreter_frame_method_offset];
|
||||
printbc(m, bcx);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -47,6 +47,18 @@ void G1BarrierSetAssembler::gen_write_ref_array_pre_barrier(MacroAssembler* masm
|
||||
Register addr, Register count, RegSet saved_regs) {
|
||||
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
|
||||
if (!dest_uninitialized) {
|
||||
Label done;
|
||||
Address in_progress(rthread, in_bytes(G1ThreadLocalData::satb_mark_queue_active_offset()));
|
||||
|
||||
// Is marking active?
|
||||
if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) {
|
||||
__ ldrw(rscratch1, in_progress);
|
||||
} else {
|
||||
assert(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption");
|
||||
__ ldrb(rscratch1, in_progress);
|
||||
}
|
||||
__ cbzw(rscratch1, done);
|
||||
|
||||
__ push(saved_regs, sp);
|
||||
if (count == c_rarg0) {
|
||||
if (addr == c_rarg1) {
|
||||
@@ -68,6 +80,8 @@ void G1BarrierSetAssembler::gen_write_ref_array_pre_barrier(MacroAssembler* masm
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, G1BarrierSetRuntime::write_ref_array_pre_oop_entry), 2);
|
||||
}
|
||||
__ pop(saved_regs, sp);
|
||||
|
||||
__ bind(done);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ void BarrierSetAssembler::eden_allocate(MacroAssembler* masm, Register obj,
|
||||
Label retry;
|
||||
__ bind(retry);
|
||||
{
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(rscratch1, ExternalAddress((address) Universe::heap()->end_addr()), offset);
|
||||
__ ldr(heap_end, Address(rscratch1, offset));
|
||||
}
|
||||
@@ -181,7 +181,7 @@ void BarrierSetAssembler::eden_allocate(MacroAssembler* masm, Register obj,
|
||||
|
||||
// Get the current top of the heap
|
||||
{
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(rscratch1, heap_top, offset);
|
||||
// Use add() here after ARDP, rather than lea().
|
||||
// lea() does not generate anything if its offset is zero.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020 Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -24,7 +24,6 @@
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "runtime/icache.hpp"
|
||||
|
||||
extern void aarch64TestHook();
|
||||
@@ -36,5 +35,7 @@ void ICacheStubGenerator::generate_icache_flush(
|
||||
}
|
||||
|
||||
void ICache::initialize() {
|
||||
#ifdef ASSERT
|
||||
aarch64TestHook();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -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, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -168,7 +168,7 @@ void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp(
|
||||
}
|
||||
|
||||
void InterpreterMacroAssembler::get_dispatch() {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(rdispatch, ExternalAddress((address)Interpreter::dispatch_table()), offset);
|
||||
lea(rdispatch, Address(rdispatch, offset));
|
||||
}
|
||||
@@ -754,7 +754,7 @@ void InterpreterMacroAssembler::lock_object(Register lock_reg)
|
||||
// copy
|
||||
mov(rscratch1, sp);
|
||||
sub(swap_reg, swap_reg, rscratch1);
|
||||
ands(swap_reg, swap_reg, (unsigned long)(7 - os::vm_page_size()));
|
||||
ands(swap_reg, swap_reg, (uint64_t)(7 - os::vm_page_size()));
|
||||
|
||||
// Save the test result, for recursive case, the result is zero
|
||||
str(swap_reg, Address(lock_reg, mark_offset));
|
||||
|
||||
@@ -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, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -39,6 +39,29 @@
|
||||
|
||||
#define __ _masm->
|
||||
|
||||
//describe amount of space in bytes occupied by type on native stack
|
||||
#ifdef __APPLE__
|
||||
const int nativeByteSpace = sizeof(jbyte);
|
||||
const int nativeShortSpace = sizeof(jshort);
|
||||
const int nativeIntSpace = sizeof(jint);
|
||||
const int nativeLongSpace = wordSize;
|
||||
const int nativeFloatSpace = nativeIntSpace;
|
||||
const int nativeDoubleSpace = nativeLongSpace;
|
||||
#else
|
||||
const int nativeByteSpace = wordSize;
|
||||
const int nativeShortSpace = wordSize;
|
||||
const int nativeIntSpace = wordSize;
|
||||
const int nativeLongSpace = wordSize;
|
||||
const int nativeFloatSpace = nativeIntSpace;
|
||||
const int nativeDoubleSpace = nativeLongSpace;
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
static inline void store_and_inc(char* &to, T value, int inc_size) {
|
||||
*(T *)to = value;
|
||||
to = to + inc_size;
|
||||
}
|
||||
|
||||
// Implementation of SignatureHandlerGenerator
|
||||
Register InterpreterRuntime::SignatureHandlerGenerator::from() { return rlocals; }
|
||||
Register InterpreterRuntime::SignatureHandlerGenerator::to() { return sp; }
|
||||
@@ -52,6 +75,95 @@ InterpreterRuntime::SignatureHandlerGenerator::SignatureHandlerGenerator(
|
||||
_stack_offset = 0;
|
||||
}
|
||||
|
||||
// On macos/aarch64 native stack is packed, int/float are using only 4 bytes
|
||||
// on stack. Natural alignment for types are still in place,
|
||||
// for example double/long should be 8 bytes alligned
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_byte() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
switch (_num_int_args) {
|
||||
case 0:
|
||||
__ ldr(c_rarg1, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 1:
|
||||
__ ldr(c_rarg2, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 2:
|
||||
__ ldr(c_rarg3, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 3:
|
||||
__ ldr(c_rarg4, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 4:
|
||||
__ ldr(c_rarg5, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 5:
|
||||
__ ldr(c_rarg6, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 6:
|
||||
__ ldr(c_rarg7, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
__ ldrb(r0, src);
|
||||
__ strb(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += nativeByteSpace;
|
||||
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_short() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
switch (_num_int_args) {
|
||||
case 0:
|
||||
__ ldr(c_rarg1, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 1:
|
||||
__ ldr(c_rarg2, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 2:
|
||||
__ ldr(c_rarg3, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 3:
|
||||
__ ldr(c_rarg4, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 4:
|
||||
__ ldr(c_rarg5, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 5:
|
||||
__ ldr(c_rarg6, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
case 6:
|
||||
__ ldr(c_rarg7, src);
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
_stack_offset = align_up(_stack_offset, nativeShortSpace);
|
||||
__ ldrh(r0, src);
|
||||
__ strh(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += nativeShortSpace;
|
||||
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterRuntime::SignatureHandlerGenerator::pass_int() {
|
||||
const Address src(from(), Interpreter::local_offset_in_bytes(offset()));
|
||||
|
||||
@@ -85,9 +197,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_int() {
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
_stack_offset = align_up(_stack_offset, nativeIntSpace);
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_stack_offset += nativeIntSpace;
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
@@ -126,9 +239,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_long() {
|
||||
_num_int_args++;
|
||||
break;
|
||||
default:
|
||||
_stack_offset = align_up(_stack_offset, nativeLongSpace);
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_stack_offset += nativeLongSpace;
|
||||
_num_int_args++;
|
||||
break;
|
||||
}
|
||||
@@ -140,9 +254,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_float() {
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
__ ldrs(as_FloatRegister(_num_fp_args++), src);
|
||||
} else {
|
||||
_stack_offset = align_up(_stack_offset, nativeFloatSpace);
|
||||
__ ldrw(r0, src);
|
||||
__ strw(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_stack_offset += nativeFloatSpace;
|
||||
_num_fp_args++;
|
||||
}
|
||||
}
|
||||
@@ -153,9 +268,10 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_double() {
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
__ ldrd(as_FloatRegister(_num_fp_args++), src);
|
||||
} else {
|
||||
_stack_offset = align_up(_stack_offset, nativeDoubleSpace);
|
||||
__ ldr(r0, src);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_stack_offset += nativeDoubleSpace;
|
||||
_num_fp_args++;
|
||||
}
|
||||
}
|
||||
@@ -248,6 +364,7 @@ void InterpreterRuntime::SignatureHandlerGenerator::pass_object() {
|
||||
__ cbnz(temp(), L);
|
||||
__ mov(r0, zr);
|
||||
__ bind(L);
|
||||
_stack_offset = align_up(_stack_offset, wordSize);
|
||||
__ str(r0, Address(to(), _stack_offset));
|
||||
_stack_offset += wordSize;
|
||||
_num_int_args++;
|
||||
@@ -277,13 +394,46 @@ class SlowSignatureHandler
|
||||
: public NativeSignatureIterator {
|
||||
private:
|
||||
address _from;
|
||||
intptr_t* _to;
|
||||
char* _to;
|
||||
intptr_t* _int_args;
|
||||
intptr_t* _fp_args;
|
||||
intptr_t* _fp_identifiers;
|
||||
unsigned int _num_int_args;
|
||||
unsigned int _num_fp_args;
|
||||
|
||||
|
||||
virtual void pass_byte()
|
||||
{
|
||||
NOT_BSD(return pass_int();)
|
||||
jbyte from_obj = *(jbyte *)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
_from -= Interpreter::stackElementSize;
|
||||
|
||||
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
store_and_inc(_to, from_obj, nativeByteSpace);
|
||||
|
||||
_num_int_args++;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void pass_short()
|
||||
{
|
||||
NOT_BSD(return pass_int();)
|
||||
jshort from_obj = *(jshort *)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
_from -= Interpreter::stackElementSize;
|
||||
|
||||
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
_to = align_up(_to, nativeShortSpace);
|
||||
store_and_inc(_to, from_obj, nativeShortSpace);
|
||||
|
||||
_num_int_args++;
|
||||
}
|
||||
}
|
||||
virtual void pass_int()
|
||||
{
|
||||
jint from_obj = *(jint *)(_from+Interpreter::local_offset_in_bytes(0));
|
||||
@@ -293,7 +443,9 @@ class SlowSignatureHandler
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_to = align_up(_to, nativeIntSpace);
|
||||
store_and_inc(_to, from_obj, nativeIntSpace);
|
||||
|
||||
_num_int_args++;
|
||||
}
|
||||
}
|
||||
@@ -307,7 +459,8 @@ class SlowSignatureHandler
|
||||
*_int_args++ = from_obj;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_to = align_up(_to, nativeLongSpace);
|
||||
store_and_inc(_to, from_obj, nativeLongSpace);
|
||||
_num_int_args++;
|
||||
}
|
||||
}
|
||||
@@ -321,7 +474,8 @@ class SlowSignatureHandler
|
||||
*_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
|
||||
_num_int_args++;
|
||||
} else {
|
||||
*_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
|
||||
_to = align_up(_to, wordSize);
|
||||
store_and_inc(_to, (*from_addr == 0) ? (intptr_t)NULL : (intptr_t) from_addr, wordSize);
|
||||
_num_int_args++;
|
||||
}
|
||||
}
|
||||
@@ -335,7 +489,9 @@ class SlowSignatureHandler
|
||||
*_fp_args++ = from_obj;
|
||||
_num_fp_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_to = align_up(_to, nativeFloatSpace);
|
||||
store_and_inc(_to, from_obj, nativeFloatSpace);
|
||||
|
||||
_num_fp_args++;
|
||||
}
|
||||
}
|
||||
@@ -347,10 +503,11 @@ class SlowSignatureHandler
|
||||
|
||||
if (_num_fp_args < Argument::n_float_register_parameters_c) {
|
||||
*_fp_args++ = from_obj;
|
||||
*_fp_identifiers |= (1 << _num_fp_args); // mark as double
|
||||
*_fp_identifiers |= (1ull << _num_fp_args); // mark as double
|
||||
_num_fp_args++;
|
||||
} else {
|
||||
*_to++ = from_obj;
|
||||
_to = align_up(_to, nativeDoubleSpace);
|
||||
store_and_inc(_to, from_obj, nativeDoubleSpace);
|
||||
_num_fp_args++;
|
||||
}
|
||||
}
|
||||
@@ -360,7 +517,7 @@ class SlowSignatureHandler
|
||||
: NativeSignatureIterator(method)
|
||||
{
|
||||
_from = from;
|
||||
_to = to;
|
||||
_to = (char *)to;
|
||||
|
||||
_int_args = to - (method->is_static() ? 16 : 17);
|
||||
_fp_args = to - 8;
|
||||
@@ -383,7 +540,7 @@ IRT_ENTRY(address,
|
||||
|
||||
// handle arguments
|
||||
SlowSignatureHandler ssh(m, (address)from, to);
|
||||
ssh.iterate(UCONST64(-1));
|
||||
ssh.iterate((uint64_t)CONST64(-1));
|
||||
|
||||
// return result handler
|
||||
return Interpreter::result_handler(m->result_type());
|
||||
|
||||
@@ -38,6 +38,8 @@ class SignatureHandlerGenerator: public NativeSignatureIterator {
|
||||
unsigned int _num_int_args;
|
||||
int _stack_offset;
|
||||
|
||||
void pass_byte();
|
||||
void pass_short();
|
||||
void pass_int();
|
||||
void pass_long();
|
||||
void pass_float();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -73,7 +73,7 @@ address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
|
||||
|
||||
Label slow;
|
||||
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(rcounter_addr,
|
||||
SafepointSynchronize::safepoint_counter_addr(), offset);
|
||||
Address safepoint_counter_addr(rcounter_addr, offset);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2019, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -65,8 +65,8 @@
|
||||
// Return the total length (in bytes) of the instructions.
|
||||
int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
|
||||
int instructions = 1;
|
||||
assert((uint64_t)target < (1ul << 48), "48-bit overflow in address constant");
|
||||
long offset = (target - branch) >> 2;
|
||||
assert((uint64_t)target < (1ull << 48), "48-bit overflow in address constant");
|
||||
intptr_t offset = (target - branch) >> 2;
|
||||
unsigned insn = *(unsigned*)branch;
|
||||
if ((Instruction_aarch64::extract(insn, 29, 24) & 0b111011) == 0b011000) {
|
||||
// Load register (literal)
|
||||
@@ -129,9 +129,9 @@ int MacroAssembler::pd_patch_instruction_size(address branch, address target) {
|
||||
Instruction_aarch64::extract(insn2, 4, 0)) {
|
||||
// movk #imm16<<32
|
||||
Instruction_aarch64::patch(branch + 4, 20, 5, (uint64_t)target >> 32);
|
||||
long dest = ((long)target & 0xffffffffL) | ((long)branch & 0xffff00000000L);
|
||||
long pc_page = (long)branch >> 12;
|
||||
long adr_page = (long)dest >> 12;
|
||||
uintptr_t dest = ((uintptr_t)target & 0xffffffffULL) | ((uintptr_t)branch & 0xffff00000000ULL);
|
||||
uintptr_t pc_page = (uintptr_t)branch >> 12;
|
||||
uintptr_t adr_page = (uintptr_t)dest >> 12;
|
||||
offset = adr_page - pc_page;
|
||||
instructions = 2;
|
||||
}
|
||||
@@ -200,7 +200,7 @@ int MacroAssembler::patch_narrow_klass(address insn_addr, narrowKlass n) {
|
||||
}
|
||||
|
||||
address MacroAssembler::target_addr_for_insn(address insn_addr, unsigned insn) {
|
||||
long offset = 0;
|
||||
intptr_t offset = 0;
|
||||
if ((Instruction_aarch64::extract(insn, 29, 24) & 0b011011) == 0b00011000) {
|
||||
// Load register (literal)
|
||||
offset = Instruction_aarch64::sextract(insn, 23, 5);
|
||||
@@ -292,7 +292,7 @@ void MacroAssembler::safepoint_poll(Label& slow_path) {
|
||||
ldr(rscratch1, Address(rthread, Thread::polling_page_offset()));
|
||||
tbnz(rscratch1, exact_log2(SafepointMechanism::poll_bit()), slow_path);
|
||||
} else {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(rscratch1, ExternalAddress(SafepointSynchronize::address_of_state()), offset);
|
||||
ldrw(rscratch1, Address(rscratch1, offset));
|
||||
assert(SafepointSynchronize::_not_synchronized == 0, "rewrite this code");
|
||||
@@ -400,7 +400,7 @@ void MacroAssembler::far_call(Address entry, CodeBuffer *cbuf, Register tmp) {
|
||||
assert(CodeCache::find_blob(entry.target()) != NULL,
|
||||
"destination of far call not found in code cache");
|
||||
if (far_branches()) {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
// We can use ADRP here because we know that the total size of
|
||||
// the code cache cannot exceed 2Gb.
|
||||
adrp(tmp, entry, offset);
|
||||
@@ -418,7 +418,7 @@ void MacroAssembler::far_jump(Address entry, CodeBuffer *cbuf, Register tmp) {
|
||||
assert(CodeCache::find_blob(entry.target()) != NULL,
|
||||
"destination of far call not found in code cache");
|
||||
if (far_branches()) {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
// We can use ADRP here because we know that the total size of
|
||||
// the code cache cannot exceed 2Gb.
|
||||
adrp(tmp, entry, offset);
|
||||
@@ -830,7 +830,7 @@ void MacroAssembler::c2bool(Register x) {
|
||||
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());
|
||||
// unsigned long offset;
|
||||
// uintptr_t offset;
|
||||
// ldr_constant(rscratch2, const_ptr);
|
||||
movptr(rscratch2, (uintptr_t)Universe::non_oop_word());
|
||||
return trampoline_call(Address(entry, rh));
|
||||
@@ -1480,11 +1480,11 @@ void MacroAssembler::movptr(Register r, uintptr_t imm64) {
|
||||
#ifndef PRODUCT
|
||||
{
|
||||
char buffer[64];
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, (uint64_t)imm64);
|
||||
block_comment(buffer);
|
||||
}
|
||||
#endif
|
||||
assert(imm64 < (1ul << 48), "48-bit overflow in address constant");
|
||||
assert(imm64 < (1ull << 48), "48-bit overflow in address constant");
|
||||
movz(r, imm64 & 0xffff);
|
||||
imm64 >>= 16;
|
||||
movk(r, imm64 & 0xffff, 16);
|
||||
@@ -1543,7 +1543,7 @@ void MacroAssembler::mov_immediate64(Register dst, u_int64_t imm64)
|
||||
#ifndef PRODUCT
|
||||
{
|
||||
char buffer[64];
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, imm64);
|
||||
snprintf(buffer, sizeof(buffer), "0x%"PRIX64, (uint64_t)imm64);
|
||||
block_comment(buffer);
|
||||
}
|
||||
#endif
|
||||
@@ -1688,7 +1688,7 @@ void MacroAssembler::mov_immediate32(Register dst, u_int32_t imm32)
|
||||
// not actually be used: you must use the Address that is returned.
|
||||
// It is up to you to ensure that the shift provided matches the size
|
||||
// of your data.
|
||||
Address MacroAssembler::form_address(Register Rd, Register base, long byte_offset, int shift) {
|
||||
Address MacroAssembler::form_address(Register Rd, Register base, int64_t byte_offset, int shift) {
|
||||
if (Address::offset_ok_for_immed(byte_offset, shift))
|
||||
// It fits; no need for any heroics
|
||||
return Address(base, byte_offset);
|
||||
@@ -1703,9 +1703,9 @@ Address MacroAssembler::form_address(Register Rd, Register base, long byte_offse
|
||||
|
||||
// See if we can do this with two 12-bit offsets
|
||||
{
|
||||
unsigned long word_offset = byte_offset >> shift;
|
||||
unsigned long masked_offset = word_offset & 0xfff000;
|
||||
if (Address::offset_ok_for_immed(word_offset - masked_offset)
|
||||
uint64_t word_offset = byte_offset >> shift;
|
||||
uint64_t masked_offset = word_offset & 0xfff000;
|
||||
if (Address::offset_ok_for_immed(word_offset - masked_offset, 0)
|
||||
&& Assembler::operand_valid_for_add_sub_immediate(masked_offset << shift)) {
|
||||
add(Rd, base, masked_offset << shift);
|
||||
word_offset -= masked_offset;
|
||||
@@ -1945,7 +1945,7 @@ void MacroAssembler::decrement(Register reg, int value)
|
||||
if (value < (1 << 12)) { sub(reg, reg, value); return; }
|
||||
/* else */ {
|
||||
assert(reg != rscratch2, "invalid dst for register decrement");
|
||||
mov(rscratch2, (unsigned long)value);
|
||||
mov(rscratch2, (uint64_t)value);
|
||||
sub(reg, reg, rscratch2);
|
||||
}
|
||||
}
|
||||
@@ -2482,43 +2482,43 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
|
||||
#endif
|
||||
if (os::message_box(msg, "Execution stopped, print registers?")) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr(" pc = 0x%016lx", pc);
|
||||
tty->print_cr(" pc = 0x%016" PRIx64, pc);
|
||||
#ifndef PRODUCT
|
||||
tty->cr();
|
||||
findpc(pc);
|
||||
tty->cr();
|
||||
#endif
|
||||
tty->print_cr(" r0 = 0x%016lx", regs[0]);
|
||||
tty->print_cr(" r1 = 0x%016lx", regs[1]);
|
||||
tty->print_cr(" r2 = 0x%016lx", regs[2]);
|
||||
tty->print_cr(" r3 = 0x%016lx", regs[3]);
|
||||
tty->print_cr(" r4 = 0x%016lx", regs[4]);
|
||||
tty->print_cr(" r5 = 0x%016lx", regs[5]);
|
||||
tty->print_cr(" r6 = 0x%016lx", regs[6]);
|
||||
tty->print_cr(" r7 = 0x%016lx", regs[7]);
|
||||
tty->print_cr(" r8 = 0x%016lx", regs[8]);
|
||||
tty->print_cr(" r9 = 0x%016lx", regs[9]);
|
||||
tty->print_cr("r10 = 0x%016lx", regs[10]);
|
||||
tty->print_cr("r11 = 0x%016lx", regs[11]);
|
||||
tty->print_cr("r12 = 0x%016lx", regs[12]);
|
||||
tty->print_cr("r13 = 0x%016lx", regs[13]);
|
||||
tty->print_cr("r14 = 0x%016lx", regs[14]);
|
||||
tty->print_cr("r15 = 0x%016lx", regs[15]);
|
||||
tty->print_cr("r16 = 0x%016lx", regs[16]);
|
||||
tty->print_cr("r17 = 0x%016lx", regs[17]);
|
||||
tty->print_cr("r18 = 0x%016lx", regs[18]);
|
||||
tty->print_cr("r19 = 0x%016lx", regs[19]);
|
||||
tty->print_cr("r20 = 0x%016lx", regs[20]);
|
||||
tty->print_cr("r21 = 0x%016lx", regs[21]);
|
||||
tty->print_cr("r22 = 0x%016lx", regs[22]);
|
||||
tty->print_cr("r23 = 0x%016lx", regs[23]);
|
||||
tty->print_cr("r24 = 0x%016lx", regs[24]);
|
||||
tty->print_cr("r25 = 0x%016lx", regs[25]);
|
||||
tty->print_cr("r26 = 0x%016lx", regs[26]);
|
||||
tty->print_cr("r27 = 0x%016lx", regs[27]);
|
||||
tty->print_cr("r28 = 0x%016lx", regs[28]);
|
||||
tty->print_cr("r30 = 0x%016lx", regs[30]);
|
||||
tty->print_cr("r31 = 0x%016lx", regs[31]);
|
||||
tty->print_cr(" r0 = 0x%016" PRIx64, regs[0]);
|
||||
tty->print_cr(" r1 = 0x%016" PRIx64, regs[1]);
|
||||
tty->print_cr(" r2 = 0x%016" PRIx64, regs[2]);
|
||||
tty->print_cr(" r3 = 0x%016" PRIx64, regs[3]);
|
||||
tty->print_cr(" r4 = 0x%016" PRIx64, regs[4]);
|
||||
tty->print_cr(" r5 = 0x%016" PRIx64, regs[5]);
|
||||
tty->print_cr(" r6 = 0x%016" PRIx64, regs[6]);
|
||||
tty->print_cr(" r7 = 0x%016" PRIx64, regs[7]);
|
||||
tty->print_cr(" r8 = 0x%016" PRIx64, regs[8]);
|
||||
tty->print_cr(" r9 = 0x%016" PRIx64, regs[9]);
|
||||
tty->print_cr("r10 = 0x%016" PRIx64, regs[10]);
|
||||
tty->print_cr("r11 = 0x%016" PRIx64, regs[11]);
|
||||
tty->print_cr("r12 = 0x%016" PRIx64, regs[12]);
|
||||
tty->print_cr("r13 = 0x%016" PRIx64, regs[13]);
|
||||
tty->print_cr("r14 = 0x%016" PRIx64, regs[14]);
|
||||
tty->print_cr("r15 = 0x%016" PRIx64, regs[15]);
|
||||
tty->print_cr("r16 = 0x%016" PRIx64, regs[16]);
|
||||
tty->print_cr("r17 = 0x%016" PRIx64, regs[17]);
|
||||
tty->print_cr("r18 = 0x%016" PRIx64, regs[18]);
|
||||
tty->print_cr("r19 = 0x%016" PRIx64, regs[19]);
|
||||
tty->print_cr("r20 = 0x%016" PRIx64, regs[20]);
|
||||
tty->print_cr("r21 = 0x%016" PRIx64, regs[21]);
|
||||
tty->print_cr("r22 = 0x%016" PRIx64, regs[22]);
|
||||
tty->print_cr("r23 = 0x%016" PRIx64, regs[23]);
|
||||
tty->print_cr("r24 = 0x%016" PRIx64, regs[24]);
|
||||
tty->print_cr("r25 = 0x%016" PRIx64, regs[25]);
|
||||
tty->print_cr("r26 = 0x%016" PRIx64, regs[26]);
|
||||
tty->print_cr("r27 = 0x%016" PRIx64, regs[27]);
|
||||
tty->print_cr("r28 = 0x%016" PRIx64, regs[28]);
|
||||
tty->print_cr("r30 = 0x%016" PRIx64, regs[30]);
|
||||
tty->print_cr("r31 = 0x%016" PRIx64, regs[31]);
|
||||
BREAKPOINT;
|
||||
}
|
||||
ThreadStateTransition::transition(thread, _thread_in_vm, saved_state);
|
||||
@@ -2532,7 +2532,7 @@ void MacroAssembler::debug64(char* msg, int64_t pc, int64_t regs[])
|
||||
|
||||
void MacroAssembler::push_call_clobbered_registers() {
|
||||
int step = 4 * wordSize;
|
||||
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
|
||||
push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2) BSD_ONLY(- r18), sp);
|
||||
sub(sp, sp, step);
|
||||
mov(rscratch1, -step);
|
||||
// Push v0-v7, v16-v31.
|
||||
@@ -2552,7 +2552,7 @@ void MacroAssembler::pop_call_clobbered_registers() {
|
||||
as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize)));
|
||||
}
|
||||
|
||||
pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp);
|
||||
pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2) BSD_ONLY(- r18), sp);
|
||||
}
|
||||
|
||||
void MacroAssembler::push_CPU_state(bool save_vectors) {
|
||||
@@ -2624,19 +2624,19 @@ Address MacroAssembler::spill_address(int size, int offset, Register tmp)
|
||||
// Returns true if it is, else false.
|
||||
bool MacroAssembler::merge_alignment_check(Register base,
|
||||
size_t size,
|
||||
long cur_offset,
|
||||
long prev_offset) const {
|
||||
int64_t cur_offset,
|
||||
int64_t prev_offset) const {
|
||||
if (AvoidUnalignedAccesses) {
|
||||
if (base == sp) {
|
||||
// Checks whether low offset if aligned to pair of registers.
|
||||
long pair_mask = size * 2 - 1;
|
||||
long offset = prev_offset > cur_offset ? cur_offset : prev_offset;
|
||||
int64_t pair_mask = size * 2 - 1;
|
||||
int64_t offset = prev_offset > cur_offset ? cur_offset : prev_offset;
|
||||
return (offset & pair_mask) == 0;
|
||||
} else { // If base is not sp, we can't guarantee the access is aligned.
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
long mask = size - 1;
|
||||
int64_t mask = size - 1;
|
||||
// Load/store pair instruction only supports element size aligned offset.
|
||||
return (cur_offset & mask) == 0 && (prev_offset & mask) == 0;
|
||||
}
|
||||
@@ -2669,8 +2669,8 @@ bool MacroAssembler::ldst_can_merge(Register rt,
|
||||
return false;
|
||||
}
|
||||
|
||||
long max_offset = 63 * prev_size_in_bytes;
|
||||
long min_offset = -64 * prev_size_in_bytes;
|
||||
int64_t max_offset = 63 * prev_size_in_bytes;
|
||||
int64_t min_offset = -64 * prev_size_in_bytes;
|
||||
|
||||
assert(prev_ldst->is_not_pre_post_index(), "pre-index or post-index is not supported to be merged.");
|
||||
|
||||
@@ -2679,8 +2679,8 @@ bool MacroAssembler::ldst_can_merge(Register rt,
|
||||
return false;
|
||||
}
|
||||
|
||||
long cur_offset = adr.offset();
|
||||
long prev_offset = prev_ldst->offset();
|
||||
int64_t cur_offset = adr.offset();
|
||||
int64_t prev_offset = prev_ldst->offset();
|
||||
size_t diff = abs(cur_offset - prev_offset);
|
||||
if (diff != prev_size_in_bytes) {
|
||||
return false;
|
||||
@@ -2697,7 +2697,7 @@ bool MacroAssembler::ldst_can_merge(Register rt,
|
||||
return false;
|
||||
}
|
||||
|
||||
long low_offset = prev_offset > cur_offset ? cur_offset : prev_offset;
|
||||
int64_t low_offset = prev_offset > cur_offset ? cur_offset : prev_offset;
|
||||
// Offset range must be in ldp/stp instruction's range.
|
||||
if (low_offset > max_offset || low_offset < min_offset) {
|
||||
return false;
|
||||
@@ -2722,7 +2722,7 @@ void MacroAssembler::merge_ldst(Register rt,
|
||||
address prev = pc() - NativeInstruction::instruction_size;
|
||||
NativeLdSt* prev_ldst = NativeLdSt_at(prev);
|
||||
|
||||
long offset;
|
||||
int64_t offset;
|
||||
|
||||
if (adr.offset() < prev_ldst->offset()) {
|
||||
offset = adr.offset();
|
||||
@@ -3268,7 +3268,7 @@ void MacroAssembler::kernel_crc32(Register crc, Register buf, Register len,
|
||||
Register table0, Register table1, Register table2, Register table3,
|
||||
Register tmp, Register tmp2, Register tmp3) {
|
||||
Label L_by16, L_by16_loop, L_by4, L_by4_loop, L_by1, L_by1_loop, L_exit;
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
|
||||
if (UseCRC32) {
|
||||
kernel_crc32_using_crc32(crc, buf, len, table0, table1, table2, table3);
|
||||
@@ -3570,7 +3570,7 @@ void MacroAssembler::kernel_crc32c(Register crc, Register buf, Register len,
|
||||
SkipIfEqual::SkipIfEqual(
|
||||
MacroAssembler* masm, const bool* flag_addr, bool value) {
|
||||
_masm = masm;
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
_masm->adrp(rscratch1, ExternalAddress((address)flag_addr), offset);
|
||||
_masm->ldrb(rscratch1, Address(rscratch1, offset));
|
||||
_masm->cbzw(rscratch1, _label);
|
||||
@@ -3599,7 +3599,7 @@ void MacroAssembler::addptr(const Address &dst, int32_t src) {
|
||||
}
|
||||
|
||||
void MacroAssembler::cmpptr(Register src1, Address src2) {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(rscratch1, src2, offset);
|
||||
ldr(rscratch1, Address(rscratch1, offset));
|
||||
cmp(src1, rscratch1);
|
||||
@@ -4185,7 +4185,7 @@ void MacroAssembler::get_polling_page(Register dest, address page, relocInfo::re
|
||||
if (SafepointMechanism::uses_thread_local_poll()) {
|
||||
ldr(dest, Address(rthread, Thread::polling_page_offset()));
|
||||
} else {
|
||||
unsigned long off;
|
||||
uint64_t off;
|
||||
adrp(dest, Address(page, rtype), off);
|
||||
assert(off == 0, "polling page must be page aligned");
|
||||
}
|
||||
@@ -4207,13 +4207,12 @@ address MacroAssembler::read_polling_page(Register r, relocInfo::relocType rtype
|
||||
return inst_mark();
|
||||
}
|
||||
|
||||
void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byte_offset) {
|
||||
relocInfo::relocType rtype = dest.rspec().reloc()->type();
|
||||
unsigned long low_page = (unsigned long)CodeCache::low_bound() >> 12;
|
||||
unsigned long high_page = (unsigned long)(CodeCache::high_bound()-1) >> 12;
|
||||
unsigned long dest_page = (unsigned long)dest.target() >> 12;
|
||||
long offset_low = dest_page - low_page;
|
||||
long offset_high = dest_page - high_page;
|
||||
void MacroAssembler::adrp(Register reg1, const Address &dest, uint64_t &byte_offset) {
|
||||
uint64_t low_page = (uint64_t)CodeCache::low_bound() >> 12;
|
||||
uint64_t high_page = (uint64_t)(CodeCache::high_bound()-1) >> 12;
|
||||
uint64_t dest_page = (uint64_t)dest.target() >> 12;
|
||||
int64_t offset_low = dest_page - low_page;
|
||||
int64_t offset_high = dest_page - high_page;
|
||||
|
||||
assert(is_valid_AArch64_address(dest.target()), "bad address");
|
||||
assert(dest.getMode() == Address::literal, "ADRP must be applied to a literal address");
|
||||
@@ -4225,14 +4224,14 @@ void MacroAssembler::adrp(Register reg1, const Address &dest, unsigned long &byt
|
||||
if (offset_high >= -(1<<20) && offset_low < (1<<20)) {
|
||||
_adrp(reg1, dest.target());
|
||||
} else {
|
||||
unsigned long target = (unsigned long)dest.target();
|
||||
unsigned long adrp_target
|
||||
= (target & 0xffffffffUL) | ((unsigned long)pc() & 0xffff00000000UL);
|
||||
uint64_t target = (uint64_t)dest.target();
|
||||
uint64_t adrp_target
|
||||
= (target & 0xffffffffULL) | ((uint64_t)pc() & 0xffff00000000ULL);
|
||||
|
||||
_adrp(reg1, (address)adrp_target);
|
||||
movk(reg1, target >> 32, 32);
|
||||
}
|
||||
byte_offset = (unsigned long)dest.target() & 0xfff;
|
||||
byte_offset = (uint64_t)dest.target() & 0xfff;
|
||||
}
|
||||
|
||||
void MacroAssembler::load_byte_map_base(Register reg) {
|
||||
@@ -4242,7 +4241,7 @@ void MacroAssembler::load_byte_map_base(Register reg) {
|
||||
if (is_valid_AArch64_address((address)byte_map_base)) {
|
||||
// Strictly speaking the byte_map_base isn't an address at all,
|
||||
// and it might even be negative.
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(reg, ExternalAddress((address)byte_map_base), offset);
|
||||
// We expect offset to be zero with most collectors.
|
||||
if (offset != 0) {
|
||||
@@ -4849,8 +4848,6 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
sub(cnt2, zr, cnt2, LSL, str2_chr_shift);
|
||||
} else if (isLU) {
|
||||
ldrs(vtmp, Address(str1));
|
||||
cmp(str1, str2);
|
||||
br(Assembler::EQ, DONE);
|
||||
ldr(tmp2, Address(str2));
|
||||
cmp(cnt2, STUB_THRESHOLD);
|
||||
br(GE, STUB);
|
||||
@@ -4865,8 +4862,6 @@ void MacroAssembler::string_compare(Register str1, Register str2,
|
||||
fmovd(tmp1, vtmp);
|
||||
} else { // UL case
|
||||
ldr(tmp1, Address(str1));
|
||||
cmp(str1, str2);
|
||||
br(Assembler::EQ, DONE);
|
||||
ldrs(vtmp, Address(str2));
|
||||
cmp(cnt2, STUB_THRESHOLD);
|
||||
br(GE, STUB);
|
||||
@@ -5771,7 +5766,7 @@ void MacroAssembler::char_array_compress(Register src, Register dst, Register le
|
||||
// aarch64_get_thread_helper() clobbers only r0, r1, and flags.
|
||||
//
|
||||
void MacroAssembler::get_thread(Register dst) {
|
||||
RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
|
||||
RegSet saved_regs = RegSet::range(r0, r1) + BSD_ONLY(RegSet::range(r2, r17)) + lr - dst;
|
||||
push(saved_regs, sp);
|
||||
|
||||
mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
|
||||
|
||||
@@ -88,7 +88,7 @@ class MacroAssembler: public Assembler {
|
||||
= (operand_valid_for_logical_immediate(false /*is32*/,
|
||||
(uint64_t)Universe::narrow_klass_base())
|
||||
&& ((uint64_t)Universe::narrow_klass_base()
|
||||
> (1UL << log2_intptr(Universe::narrow_klass_range()))));
|
||||
> (1UL << log2_intptr((uintptr_t)Universe::narrow_klass_range()))));
|
||||
}
|
||||
|
||||
// These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code.
|
||||
@@ -456,31 +456,20 @@ public:
|
||||
// now mov instructions for loading absolute addresses and 32 or
|
||||
// 64 bit integers
|
||||
|
||||
inline void mov(Register dst, address addr)
|
||||
{
|
||||
mov_immediate64(dst, (u_int64_t)addr);
|
||||
}
|
||||
inline void mov(Register dst, address addr) { mov_immediate64(dst, (uint64_t)addr); }
|
||||
|
||||
inline void mov(Register dst, u_int64_t imm64)
|
||||
{
|
||||
mov_immediate64(dst, imm64);
|
||||
}
|
||||
inline void mov(Register dst, int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned int imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
inline void mov(Register dst, unsigned long long imm64) { mov_immediate64(dst, (uint64_t)imm64); }
|
||||
|
||||
inline void movw(Register dst, u_int32_t imm32)
|
||||
{
|
||||
mov_immediate32(dst, imm32);
|
||||
}
|
||||
|
||||
inline void mov(Register dst, long l)
|
||||
{
|
||||
mov(dst, (u_int64_t)l);
|
||||
}
|
||||
|
||||
inline void mov(Register dst, int i)
|
||||
{
|
||||
mov(dst, (long)i);
|
||||
}
|
||||
|
||||
void mov(Register dst, RegisterOrConstant src) {
|
||||
if (src.is_register())
|
||||
mov(dst, src.as_register());
|
||||
@@ -1134,7 +1123,7 @@ public:
|
||||
void sub(Register Rd, Register Rn, RegisterOrConstant decrement);
|
||||
void subw(Register Rd, Register Rn, RegisterOrConstant decrement);
|
||||
|
||||
void adrp(Register reg1, const Address &dest, unsigned long &byte_offset);
|
||||
void adrp(Register reg1, const Address &dest, uint64_t &byte_offset);
|
||||
|
||||
void tableswitch(Register index, jint lowbound, jint highbound,
|
||||
Label &jumptable, Label &jumptable_end, int stride = 1) {
|
||||
@@ -1151,7 +1140,7 @@ public:
|
||||
// actually be used: you must use the Address that is returned. It
|
||||
// is up to you to ensure that the shift provided matches the size
|
||||
// of your data.
|
||||
Address form_address(Register Rd, Register base, long byte_offset, int shift);
|
||||
Address form_address(Register Rd, Register base, int64_t byte_offset, int shift);
|
||||
|
||||
// Return true iff an address is within the 48-bit AArch64 address
|
||||
// space.
|
||||
@@ -1176,7 +1165,7 @@ public:
|
||||
if (NearCpool) {
|
||||
ldr(dest, const_addr);
|
||||
} else {
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
adrp(dest, InternalAddress(const_addr.target()), offset);
|
||||
ldr(dest, Address(dest, offset));
|
||||
}
|
||||
@@ -1288,7 +1277,7 @@ private:
|
||||
// Uses rscratch2 if the address is not directly reachable
|
||||
Address spill_address(int size, int offset, Register tmp=rscratch2);
|
||||
|
||||
bool merge_alignment_check(Register base, size_t size, long cur_offset, long prev_offset) const;
|
||||
bool merge_alignment_check(Register base, size_t size, int64_t cur_offset, int64_t prev_offset) const;
|
||||
|
||||
// Check whether two loads/stores can be merged into ldp/stp.
|
||||
bool ldst_can_merge(Register rx, const Address &adr, size_t cur_size_in_bytes, bool is_store) const;
|
||||
|
||||
@@ -260,9 +260,9 @@ void MacroAssembler::fast_log(FloatRegister vtmp0, FloatRegister vtmp1,
|
||||
Register tmp4, Register tmp5) {
|
||||
Label DONE, CHECK_CORNER_CASES, SMALL_VALUE, MAIN,
|
||||
CHECKED_CORNER_CASES, RETURN_MINF_OR_NAN;
|
||||
const long INF_OR_NAN_PREFIX = 0x7FF0;
|
||||
const long MINF_OR_MNAN_PREFIX = 0xFFF0;
|
||||
const long ONE_PREFIX = 0x3FF0;
|
||||
const int64_t INF_OR_NAN_PREFIX = 0x7FF0;
|
||||
const int64_t MINF_OR_MNAN_PREFIX = 0xFFF0;
|
||||
const int64_t ONE_PREFIX = 0x3FF0;
|
||||
movz(tmp2, ONE_PREFIX, 48);
|
||||
movz(tmp4, 0x0010, 48);
|
||||
fmovd(rscratch1, v0); // rscratch1 = AS_LONG_BITS(X)
|
||||
|
||||
@@ -201,9 +201,9 @@
|
||||
// NOTE: fpu registers are actively reused. See comments in code about their usage
|
||||
void MacroAssembler::generate__ieee754_rem_pio2(address npio2_hw,
|
||||
address two_over_pi, address pio2) {
|
||||
const long PIO2_1t = 0x3DD0B4611A626331UL;
|
||||
const long PIO2_2 = 0x3DD0B4611A600000UL;
|
||||
const long PIO2_2t = 0x3BA3198A2E037073UL;
|
||||
const int64_t PIO2_1t = 0x3DD0B4611A626331ULL;
|
||||
const int64_t PIO2_2 = 0x3DD0B4611A600000ULL;
|
||||
const int64_t PIO2_2t = 0x3BA3198A2E037073ULL;
|
||||
Label X_IS_NEGATIVE, X_IS_MEDIUM_OR_LARGE, X_IS_POSITIVE_LONG_PI, LARGE_ELSE,
|
||||
REDUCTION_DONE, X_IS_MEDIUM_BRANCH_DONE, X_IS_LARGE, NX_SET,
|
||||
X_IS_NEGATIVE_LONG_PI;
|
||||
@@ -689,7 +689,7 @@ void MacroAssembler::generate__kernel_rem_pio2(address two_over_pi, address pio2
|
||||
RECOMP_FOR1_CHECK;
|
||||
Register tmp2 = r1, n = r2, jv = r4, tmp5 = r5, jx = r6,
|
||||
tmp3 = r7, iqBase = r10, ih = r11, tmp4 = r12, tmp1 = r13,
|
||||
jz = r14, j = r15, twoOverPiBase = r16, i = r17, qBase = r18;
|
||||
jz = r14, j = r15, twoOverPiBase = r16, i = r17, qBase = r20;
|
||||
// jp = jk == init_jk[prec] = init_jk[2] == {2,3,4,6}[2] == 4
|
||||
// jx = nx - 1
|
||||
lea(twoOverPiBase, ExternalAddress(two_over_pi));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2018, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -301,7 +301,7 @@ void NativeMovRegMem::set_offset(int x) {
|
||||
unsigned insn = *(unsigned*)pc;
|
||||
if (maybe_cpool_ref(pc)) {
|
||||
address addr = MacroAssembler::target_addr_for_insn(pc);
|
||||
*(long*)addr = x;
|
||||
*(int64_t*)addr = x;
|
||||
} else {
|
||||
MacroAssembler::pd_patch_instruction(pc, (address)intptr_t(x));
|
||||
ICache::invalidate_range(instruction_address(), instruction_size);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, 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
|
||||
@@ -64,7 +64,7 @@ class RegisterImpl: public AbstractRegisterImpl {
|
||||
|
||||
// Return the bit which represents this register. This is intended
|
||||
// to be ORed into a bitmask: for usage see class RegSet below.
|
||||
unsigned long bit(bool should_set = true) const { return should_set ? 1 << encoding() : 0; }
|
||||
uint64_t bit(bool should_set = true) const { return should_set ? 1 << encoding() : 0; }
|
||||
};
|
||||
|
||||
// The integer registers of the aarch64 architecture
|
||||
|
||||
@@ -396,7 +396,7 @@ static void gen_c2i_adapter(MacroAssembler *masm,
|
||||
// 3 8 T_BOOL
|
||||
// - 0 return address
|
||||
//
|
||||
// However to make thing extra confusing. Because we can fit a long/double in
|
||||
// However to make thing extra confusing. Because we can fit a Java long/double in
|
||||
// a single slot on a 64 bt vm and it would be silly to break them up, the interpreter
|
||||
// leaves one slot empty and only stores to a single slot. In this case the
|
||||
// slot that is occupied is the T_VOID slot. See I said it was confusing.
|
||||
@@ -429,7 +429,7 @@ static void gen_c2i_adapter(MacroAssembler *masm,
|
||||
__ str(rscratch1, Address(sp, next_off));
|
||||
#ifdef ASSERT
|
||||
// Overwrite the unused slot with known junk
|
||||
__ mov(rscratch1, 0xdeadffffdeadaaaaul);
|
||||
__ mov(rscratch1, (uint64_t)0xdeadffffdeadaaaaull);
|
||||
__ str(rscratch1, Address(sp, st_off));
|
||||
#endif /* ASSERT */
|
||||
} else {
|
||||
@@ -446,10 +446,9 @@ static void gen_c2i_adapter(MacroAssembler *masm,
|
||||
// Two VMREgs|OptoRegs can be T_OBJECT, T_ADDRESS, T_DOUBLE, T_LONG
|
||||
// T_DOUBLE and T_LONG use two slots in the interpreter
|
||||
if ( sig_bt[i] == T_LONG || sig_bt[i] == T_DOUBLE) {
|
||||
// long/double in gpr
|
||||
// jlong/double in gpr
|
||||
#ifdef ASSERT
|
||||
// Overwrite the unused slot with known junk
|
||||
__ mov(rscratch1, 0xdeadffffdeadaaabul);
|
||||
__ mov(rscratch1, (uint64_t)0xdeadffffdeadaaabull);
|
||||
__ str(rscratch1, Address(sp, st_off));
|
||||
#endif /* ASSERT */
|
||||
__ str(r, Address(sp, next_off));
|
||||
@@ -465,7 +464,7 @@ static void gen_c2i_adapter(MacroAssembler *masm,
|
||||
} else {
|
||||
#ifdef ASSERT
|
||||
// Overwrite the unused slot with known junk
|
||||
__ mov(rscratch1, 0xdeadffffdeadaaacul);
|
||||
__ mov(rscratch1, (uint64_t)0xdeadffffdeadaaacull);
|
||||
__ str(rscratch1, Address(sp, st_off));
|
||||
#endif /* ASSERT */
|
||||
__ strd(r_1->as_FloatRegister(), Address(sp, next_off));
|
||||
@@ -745,6 +744,11 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
if (int_args < Argument::n_int_register_parameters_c) {
|
||||
regs[i].set1(INT_ArgReg[int_args++]->as_VMReg());
|
||||
} else {
|
||||
#ifdef __APPLE__
|
||||
// Less-than word types are stored one after another.
|
||||
// The code unable to handle this, bailout.
|
||||
return -1;
|
||||
#endif
|
||||
regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
stk_args += 2;
|
||||
}
|
||||
@@ -767,6 +771,11 @@ int SharedRuntime::c_calling_convention(const BasicType *sig_bt,
|
||||
if (fp_args < Argument::n_float_register_parameters_c) {
|
||||
regs[i].set1(FP_ArgReg[fp_args++]->as_VMReg());
|
||||
} else {
|
||||
#ifdef __APPLE__
|
||||
// Less-than word types are stored one after another.
|
||||
// The code unable to handle this, bailout.
|
||||
return -1;
|
||||
#endif
|
||||
regs[i].set1(VMRegImpl::stack2reg(stk_args));
|
||||
stk_args += 2;
|
||||
}
|
||||
@@ -1343,6 +1352,10 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
int out_arg_slots;
|
||||
out_arg_slots = c_calling_convention(out_sig_bt, out_regs, NULL, total_c_args);
|
||||
|
||||
if (out_arg_slots < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Compute framesize for the wrapper. We need to handlize all oops in
|
||||
// incoming registers
|
||||
|
||||
@@ -1675,7 +1688,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
Label dtrace_method_entry, dtrace_method_entry_done;
|
||||
{
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset);
|
||||
__ ldrb(rscratch1, Address(rscratch1, offset));
|
||||
__ cbnzw(rscratch1, dtrace_method_entry);
|
||||
@@ -1926,7 +1939,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
Label dtrace_method_exit, dtrace_method_exit_done;
|
||||
{
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(rscratch1, ExternalAddress((address)&DTraceMethodProbes), offset);
|
||||
__ ldrb(rscratch1, Address(rscratch1, offset));
|
||||
__ cbnzw(rscratch1, dtrace_method_exit);
|
||||
|
||||
@@ -1072,7 +1072,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
Label copy4, copy8, copy16, copy32, copy80, copy128, copy_big, finish;
|
||||
const Register t2 = r5, t3 = r6, t4 = r7, t5 = r8;
|
||||
const Register t6 = r9, t7 = r10, t8 = r11, t9 = r12;
|
||||
const Register send = r17, dend = r18;
|
||||
const Register send = r17, dend = r16;
|
||||
|
||||
if (PrefetchCopyIntervalInBytes > 0)
|
||||
__ prfm(Address(s, 0), PLDL1KEEP);
|
||||
@@ -1264,7 +1264,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
#ifdef ASSERT
|
||||
__ mov(rscratch1, (uint64_t)0xdeadbeef);
|
||||
__ orr(rscratch1, rscratch1, rscratch1, Assembler::LSL, 32);
|
||||
for (Register r = r3; r <= r18; r++)
|
||||
for (Register r = r3; r <= NOT_BSD(r18) BSD_ONLY(r17); r++)
|
||||
if (r != rscratch1) __ mov(r, rscratch1);
|
||||
#endif
|
||||
}
|
||||
@@ -1689,10 +1689,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
RegSet wb_pre_saved_regs = RegSet::range(c_rarg0, c_rarg4);
|
||||
RegSet wb_post_saved_regs = RegSet::of(count);
|
||||
|
||||
// Registers used as temps (r18, r19, r20 are save-on-entry)
|
||||
// Registers used as temps (r19, r20, r21, r22 are save-on-entry)
|
||||
const Register copied_oop = r22; // actual oop copied
|
||||
const Register count_save = r21; // orig elementscount
|
||||
const Register start_to = r20; // destination array start address
|
||||
const Register copied_oop = r18; // actual oop copied
|
||||
const Register r19_klass = r19; // oop._klass
|
||||
|
||||
//---------------------------------------------------------------
|
||||
@@ -1730,7 +1730,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// Empty array: Nothing to do.
|
||||
__ cbz(count, L_done);
|
||||
|
||||
__ push(RegSet::of(r18, r19, r20, r21), sp);
|
||||
__ push(RegSet::of(r19, r20, r21, r22), sp);
|
||||
|
||||
#ifdef ASSERT
|
||||
BLOCK_COMMENT("assert consistent ckoff/ckval");
|
||||
@@ -1799,7 +1799,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
bs->arraycopy_epilogue(_masm, decorators, is_oop, start_to, count_save, rscratch1, wb_post_saved_regs);
|
||||
|
||||
__ bind(L_done_pop);
|
||||
__ pop(RegSet::of(r18, r19, r20, r21), sp);
|
||||
__ pop(RegSet::of(r19, r20, r21, r22), sp);
|
||||
inc_counter_np(SharedRuntime::_checkcast_array_copy_ctr);
|
||||
|
||||
__ bind(L_done);
|
||||
@@ -1975,7 +1975,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// registers used as temp
|
||||
const Register scratch_length = r16; // elements count to copy
|
||||
const Register scratch_src_klass = r17; // array klass
|
||||
const Register lh = r18; // layout helper
|
||||
const Register lh = r15; // layout helper
|
||||
|
||||
// if (length < 0) return -1;
|
||||
__ movw(scratch_length, length); // length (elements count, 32-bits value)
|
||||
@@ -2046,7 +2046,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
//
|
||||
|
||||
const Register rscratch1_offset = rscratch1; // array offset
|
||||
const Register r18_elsize = lh; // element size
|
||||
const Register r15_elsize = lh; // element size
|
||||
|
||||
__ ubfx(rscratch1_offset, lh, Klass::_lh_header_size_shift,
|
||||
exact_log2(Klass::_lh_header_size_mask+1)); // array_offset
|
||||
@@ -2067,8 +2067,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// The possible values of elsize are 0-3, i.e. exact_log2(element
|
||||
// size in bytes). We do a simple bitwise binary search.
|
||||
__ BIND(L_copy_bytes);
|
||||
__ tbnz(r18_elsize, 1, L_copy_ints);
|
||||
__ tbnz(r18_elsize, 0, L_copy_shorts);
|
||||
__ tbnz(r15_elsize, 1, L_copy_ints);
|
||||
__ tbnz(r15_elsize, 0, L_copy_shorts);
|
||||
__ lea(from, Address(src, src_pos));// src_addr
|
||||
__ lea(to, Address(dst, dst_pos));// dst_addr
|
||||
__ movw(count, scratch_length); // length
|
||||
@@ -2081,7 +2081,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ b(RuntimeAddress(short_copy_entry));
|
||||
|
||||
__ BIND(L_copy_ints);
|
||||
__ tbnz(r18_elsize, 0, L_copy_longs);
|
||||
__ tbnz(r15_elsize, 0, L_copy_longs);
|
||||
__ lea(from, Address(src, src_pos, Address::lsl(2)));// src_addr
|
||||
__ lea(to, Address(dst, dst_pos, Address::lsl(2)));// dst_addr
|
||||
__ movw(count, scratch_length); // length
|
||||
@@ -2092,8 +2092,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
{
|
||||
BLOCK_COMMENT("assert long copy {");
|
||||
Label L;
|
||||
__ andw(lh, lh, Klass::_lh_log2_element_size_mask); // lh -> r18_elsize
|
||||
__ cmpw(r18_elsize, LogBytesPerLong);
|
||||
__ andw(lh, lh, Klass::_lh_log2_element_size_mask); // lh -> r15_elsize
|
||||
__ cmpw(r15_elsize, LogBytesPerLong);
|
||||
__ br(Assembler::EQ, L);
|
||||
__ stop("must be long copy, but elsize is wrong");
|
||||
__ bind(L);
|
||||
@@ -2111,8 +2111,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
Label L_plain_copy, L_checkcast_copy;
|
||||
// test array classes for subtyping
|
||||
__ load_klass(r18, dst);
|
||||
__ cmp(scratch_src_klass, r18); // usual case is exact equality
|
||||
__ load_klass(r15, dst);
|
||||
__ cmp(scratch_src_klass, r15); // usual case is exact equality
|
||||
__ br(Assembler::NE, L_checkcast_copy);
|
||||
|
||||
// Identically typed arrays can be copied without element-wise checks.
|
||||
@@ -2128,17 +2128,17 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ b(RuntimeAddress(oop_copy_entry));
|
||||
|
||||
__ BIND(L_checkcast_copy);
|
||||
// live at this point: scratch_src_klass, scratch_length, r18 (dst_klass)
|
||||
// live at this point: scratch_src_klass, scratch_length, r15 (dst_klass)
|
||||
{
|
||||
// Before looking at dst.length, make sure dst is also an objArray.
|
||||
__ ldrw(rscratch1, Address(r18, lh_offset));
|
||||
__ ldrw(rscratch1, Address(r15, lh_offset));
|
||||
__ movw(rscratch2, objArray_lh);
|
||||
__ eorw(rscratch1, rscratch1, rscratch2);
|
||||
__ cbnzw(rscratch1, L_failed);
|
||||
|
||||
// It is safe to examine both src.length and dst.length.
|
||||
arraycopy_range_checks(src, src_pos, dst, dst_pos, scratch_length,
|
||||
r18, L_failed);
|
||||
r15, L_failed);
|
||||
|
||||
__ load_klass(dst_klass, dst); // reload
|
||||
|
||||
@@ -3215,8 +3215,8 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
// Max number of bytes we can process before having to take the mod
|
||||
// 0x15B0 is 5552 in decimal, the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
|
||||
unsigned long BASE = 0xfff1;
|
||||
unsigned long NMAX = 0x15B0;
|
||||
uint64_t BASE = 0xfff1;
|
||||
uint64_t NMAX = 0x15B0;
|
||||
|
||||
__ mov(base, BASE);
|
||||
__ mov(nmax, NMAX);
|
||||
@@ -4833,40 +4833,49 @@ class StubGenerator: public StubCodeGenerator {
|
||||
if (squaring)
|
||||
Pb_base = Pa_base;
|
||||
else
|
||||
Pb_base = ++reg;
|
||||
Pn_base = ++reg;
|
||||
Rlen= ++reg;
|
||||
inv = ++reg;
|
||||
Pm_base = ++reg;
|
||||
Pb_base = next_reg(reg);
|
||||
Pn_base = next_reg(reg);
|
||||
Rlen= next_reg(reg);
|
||||
inv = next_reg(reg);
|
||||
Pm_base = next_reg(reg);
|
||||
|
||||
// Working registers:
|
||||
Ra = ++reg; // The current digit of a, b, n, and m.
|
||||
Rb = ++reg;
|
||||
Rm = ++reg;
|
||||
Rn = ++reg;
|
||||
Ra = next_reg(reg); // The current digit of a, b, n, and m.
|
||||
Rb = next_reg(reg);
|
||||
Rm = next_reg(reg);
|
||||
Rn = next_reg(reg);
|
||||
|
||||
Pa = ++reg; // Pointers to the current/next digit of a, b, n, and m.
|
||||
Pb = ++reg;
|
||||
Pm = ++reg;
|
||||
Pn = ++reg;
|
||||
Pa = next_reg(reg); // Pointers to the current/next digit of a, b, n, and m.
|
||||
Pb = next_reg(reg);
|
||||
Pm = next_reg(reg);
|
||||
Pn = next_reg(reg);
|
||||
|
||||
t0 = ++reg; // Three registers which form a
|
||||
t1 = ++reg; // triple-precision accumuator.
|
||||
t2 = ++reg;
|
||||
t0 = next_reg(reg); // Three registers which form a
|
||||
t1 = next_reg(reg); // triple-precision accumuator.
|
||||
t2 = next_reg(reg);
|
||||
|
||||
Ri = ++reg; // Inner and outer loop indexes.
|
||||
Rj = ++reg;
|
||||
Ri = next_reg(reg); // Inner and outer loop indexes.
|
||||
Rj = next_reg(reg);
|
||||
|
||||
Rhi_ab = ++reg; // Product registers: low and high parts
|
||||
Rlo_ab = ++reg; // of a*b and m*n.
|
||||
Rhi_mn = ++reg;
|
||||
Rlo_mn = ++reg;
|
||||
Rhi_ab = next_reg(reg); // Product registers: low and high parts
|
||||
Rlo_ab = next_reg(reg); // of a*b and m*n.
|
||||
Rhi_mn = next_reg(reg);
|
||||
Rlo_mn = next_reg(reg);
|
||||
|
||||
// r19 and up are callee-saved.
|
||||
_toSave = RegSet::range(r19, reg) + Pm_base;
|
||||
}
|
||||
|
||||
private:
|
||||
Register next_reg(Register ®) {
|
||||
#ifdef __APPLE__
|
||||
// skip r18 on macOSs, it should not be used
|
||||
return ++reg == r18 ? ++reg : reg;
|
||||
#else
|
||||
return ++reg;
|
||||
#endif
|
||||
}
|
||||
|
||||
void save_regs() {
|
||||
push(_toSave, sp);
|
||||
}
|
||||
@@ -5319,12 +5328,12 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// In C, approximately:
|
||||
|
||||
// void
|
||||
// montgomery_multiply(unsigned long Pa_base[], unsigned long Pb_base[],
|
||||
// unsigned long Pn_base[], unsigned long Pm_base[],
|
||||
// unsigned long inv, int len) {
|
||||
// unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
|
||||
// unsigned long *Pa, *Pb, *Pn, *Pm;
|
||||
// unsigned long Ra, Rb, Rn, Rm;
|
||||
// montgomery_multiply(julong Pa_base[], julong Pb_base[],
|
||||
// julong Pn_base[], julong Pm_base[],
|
||||
// julong inv, int len) {
|
||||
// julong t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
|
||||
// julong *Pa, *Pb, *Pn, *Pm;
|
||||
// julong Ra, Rb, Rn, Rm;
|
||||
|
||||
// int i;
|
||||
|
||||
@@ -5532,11 +5541,12 @@ class StubGenerator: public StubCodeGenerator {
|
||||
// In C, approximately:
|
||||
|
||||
// void
|
||||
// montgomery_square(unsigned long Pa_base[], unsigned long Pn_base[],
|
||||
// unsigned long Pm_base[], unsigned long inv, int len) {
|
||||
// unsigned long t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
|
||||
// unsigned long *Pa, *Pb, *Pn, *Pm;
|
||||
// unsigned long Ra, Rb, Rn, Rm;
|
||||
// montgomery_multiply(julong Pa_base[], julong Pb_base[],
|
||||
// julong Pn_base[], julong Pm_base[],
|
||||
// julong inv, int len) {
|
||||
// julong t0 = 0, t1 = 0, t2 = 0; // Triple-precision accumulator
|
||||
// julong *Pa, *Pb, *Pn, *Pm;
|
||||
// julong Ra, Rb, Rn, Rm;
|
||||
|
||||
// int i;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2019, Red Hat Inc. All rights reserved.
|
||||
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@@ -1003,7 +1003,7 @@ address TemplateInterpreterGenerator::generate_CRC32_update_entry() {
|
||||
__ ldrw(val, Address(esp, 0)); // byte value
|
||||
__ ldrw(crc, Address(esp, wordSize)); // Initial CRC
|
||||
|
||||
unsigned long offset;
|
||||
uint64_t offset;
|
||||
__ adrp(tbl, ExternalAddress(StubRoutines::crc_table_addr()), offset);
|
||||
__ add(tbl, tbl, offset);
|
||||
|
||||
|
||||
@@ -24,100 +24,33 @@
|
||||
*/
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "asm/macroAssembler.inline.hpp"
|
||||
#include "memory/resourceArea.hpp"
|
||||
#include "runtime/arguments.hpp"
|
||||
#include "runtime/java.hpp"
|
||||
#include "runtime/stubCodeGenerator.hpp"
|
||||
#include "runtime/vm_version.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
#include "vm_version_aarch64.hpp"
|
||||
|
||||
#include OS_HEADER_INLINE(os)
|
||||
|
||||
#include <sys/auxv.h>
|
||||
#include <asm/hwcap.h>
|
||||
|
||||
#ifndef HWCAP_AES
|
||||
#define HWCAP_AES (1<<3)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_PMULL
|
||||
#define HWCAP_PMULL (1<<4)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_SHA1
|
||||
#define HWCAP_SHA1 (1<<5)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_SHA2
|
||||
#define HWCAP_SHA2 (1<<6)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_CRC32
|
||||
#define HWCAP_CRC32 (1<<7)
|
||||
#endif
|
||||
|
||||
#ifndef HWCAP_ATOMICS
|
||||
#define HWCAP_ATOMICS (1<<8)
|
||||
#endif
|
||||
|
||||
int VM_Version::_cpu;
|
||||
int VM_Version::_model;
|
||||
int VM_Version::_model2;
|
||||
int VM_Version::_variant;
|
||||
int VM_Version::_revision;
|
||||
int VM_Version::_stepping;
|
||||
VM_Version::PsrInfo VM_Version::_psr_info = { 0, };
|
||||
|
||||
static BufferBlob* stub_blob;
|
||||
static const int stub_size = 550;
|
||||
int VM_Version::_zva_length;
|
||||
int VM_Version::_dcache_line_size;
|
||||
int VM_Version::_icache_line_size;
|
||||
int VM_Version::_initial_sve_vector_length;
|
||||
|
||||
extern "C" {
|
||||
typedef void (*getPsrInfo_stub_t)(void*);
|
||||
}
|
||||
static getPsrInfo_stub_t getPsrInfo_stub = NULL;
|
||||
|
||||
|
||||
class VM_Version_StubGenerator: public StubCodeGenerator {
|
||||
public:
|
||||
|
||||
VM_Version_StubGenerator(CodeBuffer *c) : StubCodeGenerator(c) {}
|
||||
|
||||
address generate_getPsrInfo() {
|
||||
StubCodeMark mark(this, "VM_Version", "getPsrInfo_stub");
|
||||
# define __ _masm->
|
||||
address start = __ pc();
|
||||
|
||||
// void getPsrInfo(VM_Version::PsrInfo* psr_info);
|
||||
|
||||
address entry = __ pc();
|
||||
|
||||
__ enter();
|
||||
|
||||
__ get_dczid_el0(rscratch1);
|
||||
__ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::dczid_el0_offset())));
|
||||
|
||||
__ get_ctr_el0(rscratch1);
|
||||
__ strw(rscratch1, Address(c_rarg0, in_bytes(VM_Version::ctr_el0_offset())));
|
||||
|
||||
__ leave();
|
||||
__ ret(lr);
|
||||
|
||||
# undef __
|
||||
|
||||
return start;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
void VM_Version::get_processor_features() {
|
||||
void VM_Version::initialize() {
|
||||
_supports_cx8 = true;
|
||||
_supports_atomic_getset4 = true;
|
||||
_supports_atomic_getadd4 = true;
|
||||
_supports_atomic_getset8 = true;
|
||||
_supports_atomic_getadd8 = true;
|
||||
|
||||
getPsrInfo_stub(&_psr_info);
|
||||
get_os_cpu_info();
|
||||
|
||||
int dcache_line = VM_Version::dcache_line_size();
|
||||
|
||||
@@ -159,34 +92,6 @@ void VM_Version::get_processor_features() {
|
||||
SoftwarePrefetchHintDistance &= ~7;
|
||||
}
|
||||
|
||||
unsigned long auxv = getauxval(AT_HWCAP);
|
||||
|
||||
char buf[512];
|
||||
|
||||
_features = auxv;
|
||||
|
||||
int cpu_lines = 0;
|
||||
if (FILE *f = fopen("/proc/cpuinfo", "r")) {
|
||||
char buf[128], *p;
|
||||
while (fgets(buf, sizeof (buf), f) != NULL) {
|
||||
if ((p = strchr(buf, ':')) != NULL) {
|
||||
long v = strtol(p+1, NULL, 0);
|
||||
if (strncmp(buf, "CPU implementer", sizeof "CPU implementer" - 1) == 0) {
|
||||
_cpu = v;
|
||||
cpu_lines++;
|
||||
} else if (strncmp(buf, "CPU variant", sizeof "CPU variant" - 1) == 0) {
|
||||
_variant = v;
|
||||
} else if (strncmp(buf, "CPU part", sizeof "CPU part" - 1) == 0) {
|
||||
if (_model != v) _model2 = _model;
|
||||
_model = v;
|
||||
} else if (strncmp(buf, "CPU revision", sizeof "CPU revision" - 1) == 0) {
|
||||
_revision = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
// Enable vendor specific features
|
||||
|
||||
// ThunderX
|
||||
@@ -237,27 +142,31 @@ void VM_Version::get_processor_features() {
|
||||
}
|
||||
|
||||
if (_cpu == CPU_ARM && (_model == 0xd07 || _model2 == 0xd07)) _features |= CPU_STXR_PREFETCH;
|
||||
// If an olde style /proc/cpuinfo (cpu_lines == 1) then if _model is an A57 (0xd07)
|
||||
// If an olde style /proc/cpuinfo (cores == 1) then if _model is an A57 (0xd07)
|
||||
// we assume the worst and assume we could be on a big little system and have
|
||||
// undisclosed A53 cores which we could be swapped to at any stage
|
||||
if (_cpu == CPU_ARM && cpu_lines == 1 && _model == 0xd07) _features |= CPU_A53MAC;
|
||||
if (_cpu == CPU_ARM && os::processor_count() == 1 && _model == 0xd07) _features |= CPU_A53MAC;
|
||||
|
||||
char buf[512];
|
||||
sprintf(buf, "0x%02x:0x%x:0x%03x:%d", _cpu, _variant, _model, _revision);
|
||||
if (_model2) sprintf(buf+strlen(buf), "(0x%03x)", _model2);
|
||||
if (auxv & HWCAP_ASIMD) strcat(buf, ", simd");
|
||||
if (auxv & HWCAP_CRC32) strcat(buf, ", crc");
|
||||
if (auxv & HWCAP_AES) strcat(buf, ", aes");
|
||||
if (auxv & HWCAP_SHA1) strcat(buf, ", sha1");
|
||||
if (auxv & HWCAP_SHA2) strcat(buf, ", sha256");
|
||||
if (auxv & HWCAP_ATOMICS) strcat(buf, ", lse");
|
||||
if (_features & CPU_ASIMD) strcat(buf, ", simd");
|
||||
if (_features & CPU_CRC32) strcat(buf, ", crc");
|
||||
if (_features & CPU_AES) strcat(buf, ", aes");
|
||||
if (_features & CPU_SHA1) strcat(buf, ", sha1");
|
||||
if (_features & CPU_SHA2) strcat(buf, ", sha256");
|
||||
if (_features & CPU_SHA512) strcat(buf, ", sha512");
|
||||
if (_features & CPU_LSE) strcat(buf, ", lse");
|
||||
if (_features & CPU_SVE) strcat(buf, ", sve");
|
||||
if (_features & CPU_SVE2) strcat(buf, ", sve2");
|
||||
|
||||
_features_string = os::strdup(buf);
|
||||
|
||||
if (FLAG_IS_DEFAULT(UseCRC32)) {
|
||||
UseCRC32 = (auxv & HWCAP_CRC32) != 0;
|
||||
UseCRC32 = (_features & CPU_CRC32) != 0;
|
||||
}
|
||||
|
||||
if (UseCRC32 && (auxv & HWCAP_CRC32) == 0) {
|
||||
if (UseCRC32 && (_features & CPU_CRC32) == 0) {
|
||||
warning("UseCRC32 specified, but not supported on this CPU");
|
||||
FLAG_SET_DEFAULT(UseCRC32, false);
|
||||
}
|
||||
@@ -271,7 +180,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_ATOMICS) {
|
||||
if (_features & CPU_LSE) {
|
||||
if (FLAG_IS_DEFAULT(UseLSE))
|
||||
FLAG_SET_DEFAULT(UseLSE, true);
|
||||
} else {
|
||||
@@ -281,7 +190,7 @@ void VM_Version::get_processor_features() {
|
||||
}
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_AES) {
|
||||
if (_features & CPU_AES) {
|
||||
UseAES = UseAES || FLAG_IS_DEFAULT(UseAES);
|
||||
UseAESIntrinsics =
|
||||
UseAESIntrinsics || (UseAES && FLAG_IS_DEFAULT(UseAESIntrinsics));
|
||||
@@ -309,7 +218,7 @@ void VM_Version::get_processor_features() {
|
||||
UseCRC32Intrinsics = true;
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_CRC32) {
|
||||
if (_features & CPU_CRC32) {
|
||||
if (FLAG_IS_DEFAULT(UseCRC32CIntrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseCRC32CIntrinsics, true);
|
||||
}
|
||||
@@ -322,7 +231,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseFMA, true);
|
||||
}
|
||||
|
||||
if (auxv & (HWCAP_SHA1 | HWCAP_SHA2)) {
|
||||
if (_features & (CPU_SHA1 | CPU_SHA2)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA)) {
|
||||
FLAG_SET_DEFAULT(UseSHA, true);
|
||||
}
|
||||
@@ -331,7 +240,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA, false);
|
||||
}
|
||||
|
||||
if (UseSHA && (auxv & HWCAP_SHA1)) {
|
||||
if (UseSHA && (_features & CPU_SHA1)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
|
||||
}
|
||||
@@ -340,7 +249,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
|
||||
}
|
||||
|
||||
if (UseSHA && (auxv & HWCAP_SHA2)) {
|
||||
if (UseSHA && (_features & CPU_SHA2)) {
|
||||
if (FLAG_IS_DEFAULT(UseSHA256Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA256Intrinsics, true);
|
||||
}
|
||||
@@ -358,7 +267,7 @@ void VM_Version::get_processor_features() {
|
||||
FLAG_SET_DEFAULT(UseSHA, false);
|
||||
}
|
||||
|
||||
if (auxv & HWCAP_PMULL) {
|
||||
if (_features & CPU_PMULL) {
|
||||
if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseGHASHIntrinsics, true);
|
||||
}
|
||||
@@ -416,22 +325,6 @@ void VM_Version::get_processor_features() {
|
||||
OptoScheduling = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void VM_Version::initialize() {
|
||||
ResourceMark rm;
|
||||
|
||||
stub_blob = BufferBlob::create("getPsrInfo_stub", stub_size);
|
||||
if (stub_blob == NULL) {
|
||||
vm_exit_during_initialization("Unable to allocate getPsrInfo_stub");
|
||||
}
|
||||
|
||||
CodeBuffer c(stub_blob);
|
||||
VM_Version_StubGenerator g(&c);
|
||||
getPsrInfo_stub = CAST_TO_FN_PTR(getPsrInfo_stub_t,
|
||||
g.generate_getPsrInfo());
|
||||
|
||||
get_processor_features();
|
||||
|
||||
UNSUPPORTED_OPTION(CriticalJNINatives);
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
#ifndef CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|
||||
#define CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|
||||
|
||||
#include "runtime/abstract_vm_version.hpp"
|
||||
#include "runtime/globals_extension.hpp"
|
||||
#include "runtime/vm_version.hpp"
|
||||
#include "utilities/sizes.hpp"
|
||||
|
||||
class VM_Version : public Abstract_VM_Version {
|
||||
@@ -41,12 +41,19 @@ protected:
|
||||
static int _revision;
|
||||
static int _stepping;
|
||||
|
||||
struct PsrInfo {
|
||||
uint32_t dczid_el0;
|
||||
uint32_t ctr_el0;
|
||||
};
|
||||
static PsrInfo _psr_info;
|
||||
static void get_processor_features();
|
||||
static int _zva_length;
|
||||
static int _dcache_line_size;
|
||||
static int _icache_line_size;
|
||||
static int _initial_sve_vector_length;
|
||||
|
||||
// Read additional info using OS-specific interfaces
|
||||
static void get_os_cpu_info();
|
||||
|
||||
// Sets the SVE length and returns a new actual value or negative on error.
|
||||
// If the len is larger than the system largest supported SVE vector length,
|
||||
// the function sets the largest supported value.
|
||||
static int set_and_get_current_sve_vector_lenght(int len);
|
||||
static int get_current_sve_vector_length();
|
||||
|
||||
public:
|
||||
// Initialization
|
||||
@@ -79,6 +86,7 @@ public:
|
||||
CPU_QUALCOM = 'Q',
|
||||
CPU_MARVELL = 'V',
|
||||
CPU_INTEL = 'i',
|
||||
CPU_APPLE = 'a',
|
||||
};
|
||||
|
||||
enum Feature_Flag {
|
||||
@@ -91,9 +99,14 @@ public:
|
||||
CPU_SHA2 = (1<<6),
|
||||
CPU_CRC32 = (1<<7),
|
||||
CPU_LSE = (1<<8),
|
||||
CPU_STXR_PREFETCH= (1 << 29),
|
||||
CPU_A53MAC = (1 << 30),
|
||||
CPU_DMB_ATOMICS = (1 << 31),
|
||||
CPU_DCPOP = (1<<16),
|
||||
CPU_SHA512 = (1<<21),
|
||||
CPU_SVE = (1<<22),
|
||||
// flags above must follow Linux HWCAP
|
||||
CPU_SVE2 = (1<<28),
|
||||
CPU_STXR_PREFETCH= (1<<29),
|
||||
CPU_A53MAC = (1<<30),
|
||||
CPU_DMB_ATOMICS = (1<<31),
|
||||
};
|
||||
|
||||
static int cpu_family() { return _cpu; }
|
||||
@@ -101,24 +114,16 @@ public:
|
||||
static int cpu_model2() { return _model2; }
|
||||
static int cpu_variant() { return _variant; }
|
||||
static int cpu_revision() { return _revision; }
|
||||
static ByteSize dczid_el0_offset() { return byte_offset_of(PsrInfo, dczid_el0); }
|
||||
static ByteSize ctr_el0_offset() { return byte_offset_of(PsrInfo, ctr_el0); }
|
||||
static bool is_zva_enabled() {
|
||||
// Check the DZP bit (bit 4) of dczid_el0 is zero
|
||||
// and block size (bit 0~3) is not zero.
|
||||
return ((_psr_info.dczid_el0 & 0x10) == 0 &&
|
||||
(_psr_info.dczid_el0 & 0xf) != 0);
|
||||
}
|
||||
|
||||
static bool is_zva_enabled() { return 0 <= _zva_length; }
|
||||
static int zva_length() {
|
||||
assert(is_zva_enabled(), "ZVA not available");
|
||||
return 4 << (_psr_info.dczid_el0 & 0xf);
|
||||
}
|
||||
static int icache_line_size() {
|
||||
return (1 << (_psr_info.ctr_el0 & 0x0f)) * 4;
|
||||
}
|
||||
static int dcache_line_size() {
|
||||
return (1 << ((_psr_info.ctr_el0 >> 16) & 0x0f)) * 4;
|
||||
return _zva_length;
|
||||
}
|
||||
|
||||
static int icache_line_size() { return _icache_line_size; }
|
||||
static int dcache_line_size() { return _dcache_line_size; }
|
||||
static int get_initial_sve_vector_length() { return _initial_sve_vector_length; };
|
||||
};
|
||||
|
||||
#endif // CPU_AARCH64_VM_VM_VERSION_AARCH64_HPP
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
#ifndef CPU_AARCH64_VM_VM_VERSION_EXT_AARCH64_HPP
|
||||
#define CPU_AARCH64_VM_VM_VERSION_EXT_AARCH64_HPP
|
||||
|
||||
#include "runtime/vm_version.hpp"
|
||||
#include "utilities/macros.hpp"
|
||||
#include "vm_version_aarch64.hpp"
|
||||
|
||||
class VM_Version_Ext : public VM_Version {
|
||||
private:
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#define CPU_ARM_VM_REGISTER_ARM_HPP
|
||||
|
||||
#include "asm/register.hpp"
|
||||
#include "vm_version_arm.hpp"
|
||||
#include "runtime/vm_version.hpp"
|
||||
|
||||
class VMRegImpl;
|
||||
typedef VMRegImpl* VMReg;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user