What next for aarch32
edward.nevill at gmail.com
Thu Oct 13 13:37:38 UTC 2016
[crossposted to aarch64 because of relevance there as well]
So, having gone from a situation 18 months ago where the only port
available in OpenJDK for aarch32 was the Zero port, we now find
ourselves with an embarrassment of riches.
- The template interpreter port contributed by Linaro
- The C1 port contributed by Azul
- The C1/C2 port contributed by Oracle
- We also have in the aarch32 port area, the Oracle C1/C2 port for
aarch64 as it is integrally bound with the aarch32 port.
To this end I declare the aarch32 project a great success and would
like to thank all those who have contributed to the project.
However, it does leave the question of what to do next.
My 30,000ft view is
- jdk8u aarch32
We should use the existing Azul port. I see no enthusiasim for
backporting the Oracle C1/C2 port from jdk9 to jdk8u.
- jdk9 aarch32
We should use the Oracle port. Again I see no enthusiasm for forward
porting the C1 port from jdk8u to jdk9 and even if it were forward
ported it would still lack C2.
- jdk8u aarch64
Will continue to be supported as is by the aarch64 project
- jdk9 aarch64
We should use the existing port that has been developed as part of the
OpenJDK process. It is the incumbant port and is used in
Redhat/Ubuntu/Debian. It has been evaluated, tested and benchmarked by
ARMs silicon partners and has also been evaluated by very large
partners for use in large scale server applications. We cannot simply
change the existing OpenJDK jdk9 aarch64 implementation without very
I am perfectly open to having the Oracle jdk9 port in the mainstream. I
understand how it is integrally bound with the aarch32 port and it
would be difficult and unnecessary to separate out the aarch32 port on
its own for inclusion in jdk9. I think the --with-abi-
profile=arm/aarch64 is acceptable even if it is not very pretty. I find
the naming of the option "--with-abi-profile=xxx" fairly meanless and
would prefer the more direct "--with-port=xxx".
Note that none of this is based on any technical merit of one port over
another in terms of code quality, testing, benchmarking etc. It is
simply preserving the status quo.
I think it will be difficult to get the aarch32 port into jdk9 because
of the timescales. JDK 9 is now FC so no new features are accepted
without an exception being raised. I am happy to try submitting a JEP
to get it included, but I doubt it will be successful.
Our experience with the aarch64 port has taught us that it takes a lot
longer than expected to merge a new port into the mainstream. I believe
the process took about 6 months (Andew Haley may correct me on this).
Firstly we will need a sponsor within Oracle for the aarch32 port
(Vladimer Koslov was the sponsor for the aarch32 port). Then the port
will need to be merged to a 'staging' port so that it can be tested
with Oracle's JPRT / Oracle's other internal tests. Finally it can be
merged into the mainsteam.
This was the process followed for the aarch64 port. It may be possible
to shorten some of this process as the code base is a well known
quantity (at least within Oracle).
I think the best way forward with this is to have a discussion with the
JDK 9 lead, Mark Reinhold, before firing off any JEPs etc.
We also need to have a discussion of interested parties within
aarch32/aarch64 communities. I would prefer that as much of that
discussion takes place in the open, either on the mailing list or in
open conference calls although I appreciate there may be a need for
private communications where commercial interests are involved.
I propose that we resurrect the 'fireside' chats which we had earlier
in the year on the aarch64 project. These were held on every second
Thursday at 15:00 UTC, so I would propose restarting these on Thurs
Unfortunately, I do not have the facility to host these any longer.
Stuart Monteith from Linaro was hosting these for a while. Stuart:
Would you be able to host this. Alternatively, could someone else
volunteer to host this?
All the best,
More information about the aarch32-port-dev