[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    RE: [EXTERNAL] Re: OpenJDK extension to AArch64 and Windows
From:       Monica Beckwith <Monica.Beckwith () microsoft ! com>
Date:       2020-06-25 12:07:56
Message-ID: DM6PR21MB1323F80061DCF2CB84A43C62E5920 () DM6PR21MB1323 ! namprd21 ! prod ! outlook ! com
[Download RAW message or body]

Hey all - 

> Thank you for your review Andrew.
+1

> > Rather than keep bouncing this back and forth until I'm statisfied, 
> > which would be boring for both of us, if you like I'll replace all of 
> > the bare "long" and "unsigned long" with the appropriate portable 
> > types. Do you want me to do that?

> This would be great!  Once I have your updated patch, I can test it on win+aarch64.
Thanks both. Since both of you are in the same time zone it will be great for you to \
work together on it. The test platform for P1 would be 'linux-aarch64'. Just ping me \
once you are ready to test. Thanks.

> Thank you,
> -Bernhard

-----Original Message-----
From: Andrew Haley <aph@redhat.com>
Sent: Thursday, 25 June 2020 10:26
To: Monica Beckwith <Monica.Beckwith@microsoft.com>; \
                hotspot-runtime-dev@openjdk.java.net; \
                aarch64-port-dev@openjdk.java.net
Cc: openjdk-aarch64 <openjdk-aarch64@microsoft.com>
Subject: [EXTERNAL] Re: OpenJDK extension to AArch64 and Windows

On 24/06/2020 17:40, Monica Beckwith wrote:
> Hello OpenJDK community,
> 
> As the project lead here @Microsoft, I am pleased to share that we 
> have been working towards a Windows addition to the OpenJDK AArch64 
> port. We are very thankful to all that have contributed to the
> Linux+aarch64 and Windows+x86-64. Both these codebases came to our
> rescue on numerous occasions.
> 
> Support status: We have successfully ported C2 and can build the 
> server release (cross-compiled environment)

> Test coverage: C2 + ParallelGC (No AOT, JVMCI, ZGC, ShenandoahGC,
> G1GC) Tests and benchmarks covered [1]: JTReg [2], JCStress, \
> jmh-jdk-microbenchmarks, SPEC SERT, SPECJBB2015 [3], SPEC JVM2008, Scimark2, SPEC \
> JBB2005. Umbrella Bug ID: 
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs
> .openjdk.java.net%2Fbrowse%2FJDK-8248238&amp;data=02%7C01%7Cbeurba%40m
> icrosoft.com%7Cfa1bff53ed8e4341186308d818e172f9%7C72f988bf86f141af91ab
> 2d7cd011db47%7C1%7C0%7C637286703863799643&amp;sdata=o%2FRsqlEGUcInzggB
> MdjB0Ixi0cwKPUzaTyfJuUPEazU%3D&amp;reserved=0
> Webrevs:
> `Webrev P1`: 
> https://nam06.safelinks.protection.outlook.com/?url=http:%2F%2Fcr.open
> jdk.java.net%2F~burban%2Fwinarm64_p1_llp64%2F&amp;data=02%7C01%7Cbeurb
> a%40microsoft.com%7Cfa1bff53ed8e4341186308d818e172f9%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C637286703863799643&amp;sdata=ruv1ypJO74RlD
> tMlfwK%2BBpqn5AtFi4sG90bDYmss5Go%3D&amp;reserved=0  &

This looks basically OK, but the use of uint64_t doesn't read well in aarch64.ad. \
(For what it's worth, the type used internally in HotSpot for $$constant is actually \
intptr_t.)

3130   enc_class aarch64_enc_mov_imm(iRegL dst, immL src) %{
3131     C2_MacroAssembler _masm(&cbuf);
3132     Register dst_reg = as_Register($dst$$reg);
3133     uint64_t con = (uint64_t)$src$$constant;

Here, the type of the register is iRegL, so con could be a julong, not a uint64_t.

In general the easiest way to fix aarch64.ad is probably

long -> jlong
unsigned long -> julong
u_int64_t -> uint64_t

But not always everywhere. Here, the arg is an address offset:

-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();
 }

uintptr_t would do here.

The coments in aarch64.ad like this one:

-  format %{ "mov $dst, $src\t# long" %}
+  format %{ "mov $dst, $src\t# int64_t" %}

refer to a *Java type*. It shouldn't be changed.

Rather than keep bouncing this back and forth until I'm statisfied, which would be \
boring for both of us, if you like I'll replace all of the bare "long" and "unsigned \
long" with the appropriate portable types. Do you want me to do that?

Thanks.

--
Andrew Haley  (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww \
.redhat.com%2F&amp;data=02%7C01%7CMonica.Beckwith%40microsoft.com%7Cc9742e0dd9784f3755 \
7e08d818fd6032%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637286823800279523&amp;sdata=GsS6D%2BXhB4Ul3a38ePsVz64GwheeEpbSuMvy8%2FNisnE%3D&amp;reserved=0>
 https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fkeybase.io%2Fandrew \
haley&amp;data=02%7C01%7CMonica.Beckwith%40microsoft.com%7Cc9742e0dd9784f37557e08d818f \
d6032%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637286823800279523&amp;sdata=r1KgFWMNc6DFP0wqTDukX5AbMW%2BgjgPkmKEWzWmf%2FOs%3D&amp;reserved=0
 EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic