RFR(preliminary): JDK-8190428 Minimal Constant Dynamic support for AArch64

Andrew Haley aph at redhat.com
Wed Nov 29 15:25:42 UTC 2017


On 29/11/17 14:30, Dmitry Samersov wrote:
> Everybody,
> 
> Please review a port of Minimal Constant Dynamic patch to AArch64 platform.
> 
> http://cr.openjdk.java.net/~dsamersoff/JDK-8190428.condy/webrev.03/
> 
> Any comments are much appreciated.

These lines should not be in macroAssembler:

1778 void MacroAssembler::load_float(Address src) {
1779   ldrs(v0, src);
1780 }
1781
1782 void MacroAssembler::load_double(Address src) {
1783   ldrd(v0, src);
1784 }
1785

 598   // Load float value from 'address'. The value is loaded onto the FPU stack.
 599   void load_float(Address src);
 600   void load_double(Address src);
 601

I realize that we're not at all consistent about this stuff, but
we don't need it in macroAssembler.  It can go in interp_masm.

This is a bit odd:

 464   { // Check for the null sentinel.
 465     // If we just called the VM, that already did the mapping for us,
 466     // but it's harmless to retry.
 467     Label notNull;
 468
 469     // Store null_sentinel address to get its value later
 470     __ movptr(rarg, (uintptr_t)Universe::the_null_sentinel_addr());
 471     __ ldr(tmp, rarg);

I think this one should be ldr(tmp, Address(rarg));

 472     __ cmp(result, tmp);
 473     __ br(Assembler::NE, notNull);
 474     __ mov(result, 0);  // NULL object reference
 475     __ bind(notNull);
 476

The rest of it looks fine.  Thanks.

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the hotspot-dev mailing list