[aarch64-port-dev ] AARCH64: Changes to HotSpot shared code

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Wed Nov 12 08:32:04 UTC 2014


Hi Andrew,

the change does not build as the file 
   sun.jvm.hotspot.debugger.MachineDescriptionAArch64.java
is missing.

If I add that file, I get                                                                                                   
   cc1plus: error: unrecognized command line option "-Wno-error=cpp"
We are using g++ 4.1.2.

Then I get 
  os_linux.cpp:1927: error: EM_AARCH64 was not declared in this scope
A few lines above it's dealt with a missing EM_486 definition.
I guess this should be fixed similarly.

After these fixes the change builds and runs on PPC nicely.

Considering the change in metaspace: I just proposed a similar change
for the java heap, see 
http://cr.openjdk.java.net/~goetz/webrevs/8064457-disjoint/webrev.00/

Don't you want to use 4*G << narrow_klass_shift() for alignment and
the test for zerobased compressed klasses?  That's what we enforce for
the heap. I think the shift is superior to movk, as it preserves 0
(which is rare for klass pointers, I admit).

And, could you add #if !defined(AARCH64) && !defined(PPC64) at this place?  We'll 
implement the optimized klass compression, too. ;)

In ci_LIR.hpp|cpp please use AARCH64 in #ifs.  

I would propose to add aarch stuff in alphabetical order
(or maybe establish alphabetical order where absent) whenever all cpus are 
listed (makefiles, os_linux, vm_version, ...)

Also, should we sort the cpu includes alphabetically at some point?

Best regards,
  Goetz.

-----Original Message-----
From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On Behalf Of Andrew Haley
Sent: Dienstag, 11. November 2014 20:02
To: hotspot-dev Source Developers; aarch64-port-dev at openjdk.java.net
Subject: RFR: AARCH64: Changes to HotSpot shared code

http://cr.openjdk.java.net/~aph/aarch64-JDK-8064611/hotspot.patch

Everything except cpu/ and os_cpu/.

Most of this is obvious and trivial, with a few exceptions.

In memory/metaspace.cpp, we allocated the memory for metadata in a
different way.  This is because we want to be able to decode and
encode compressed metadata pointers with a single instruction, and we
can always do that iff the base address is of a particular form.

In opto/, we have made some changes in order to be able to use AArch64
store release instructions for volatile field stores.  These don't
require leading or trailing barriers.  We have tried several times to
do this without changing shared code, but it is impossible with the
current back-end interface.

In several places a release store is used where the AArch64 memory
model makes it unnecessary.  From earlier emails on this list we
discovered that the only architecture which requires this release
store is IA64, and OpenJDK does not support it anyway.  We should
perhaps look at re-engineering the way that memory barriers and memory
accesses are handled in HotSpot with a view to pushing all these
architecture-dependent assumptions out to the back ends.

Andrew.


More information about the aarch64-port-dev mailing list