[aarch64-port-dev ] Review, please

Johnson, E Andrew c_ejohns at qti.qualcomm.com
Tue Apr 14 12:53:15 UTC 2015


Thanks, Ed.  I will check out each individual patch and verify that (a) it is necessary, and (b) can't possibly be solved another way in the specific architecture files.  Thanks for the advice.

It is a curiosity why the override for inlineSmallCode exists for other architectures.  It looks like these were introduced as a "quick fix" that somehow persisted.

-AndyJ
________________________________________
From: Edward Nevill <edward.nevill at linaro.org>
Sent: Tuesday, April 14, 2015 5:21 AM
To: Johnson, E Andrew
Cc: aarch64-port-dev at openjdk.java.net
Subject: Re: [aarch64-port-dev ] Review, please

On Mon, 2015-04-13 at 15:13 +0000, Johnson, E Andrew wrote:

>
> See the attached file for the proposed patches.

Hi Andy,

Thanks for this patch.

I don't think a patch like this will be accepted upstream as is. Each case where there is a #if defined(AARCH64) needs to be separated out and a justification given for why it needs to be conditionalised on AARCH64.

Expect pushback on each case. These are changes to shared code and introduce conditionalised changes on a specific architecture which the upstream maintainers/reviewers really hate.

Start with the specific case you found which causes the performance regression.

  // Some inlining tuning
#if defined(X86) || defined(AARCH64)
  if (FLAG_IS_DEFAULT(InlineSmallCode)) {
    FLAG_SET_DEFAULT(InlineSmallCode, 2000);
  }
#endif

#ifdef SPARC
  if (FLAG_IS_DEFAULT(InlineSmallCode)) {
    FLAG_SET_DEFAULT(InlineSmallCode, 2500);
  }
#endif

The first question I would have as a reviewer (which I am not) is why are the defaults being modified here and why dont we simply set the correct defaults in globals_XXX.hpp

InlineSmallCode is declared product_pd in globals.hpp and has the following definitions in globals_XXX.hpp

hotspot/src/cpu/aarch64/vm/globals_aarch64.hpp:define_pd_global(intx, InlineSmallCode,          1000);
hotspot/src/cpu/ppc/vm/globals_ppc.hpp:define_pd_global(intx, InlineSmallCode,       1500);
hotspot/src/cpu/x86/vm/globals_x86.hpp:define_pd_global(intx, InlineSmallCode,          1000);
hotspot/src/cpu/zero/vm/globals_zero.hpp:define_pd_global(intx,  InlineSmallCode,      1000 );
hotspot/src/cpu/sparc/vm/globals_sparc.hpp:define_pd_global(intx, InlineSmallCode,       1500);


WRT most of the other #if defined(AARCH64) changes they were introduced to jdk8 in changeset 4754

changeset:   4754:961994affa01
user:        Edward Nevill ed at camswl.com
date:        Mon Jul 22 12:15:52 2013 +0100
files:       make/linux/platform_aarch64 src/os/linux/vm/os_linux.cpp src/share/vm/adlc/output_c.cpp src/share/vm/c1/c1_LIR.cpp src/share/vm/c1/c1_LIR.hpp src/share/vm/c1/c1_LIRAssembler.cpp src/share/vm/c1/c1_LIRGenerator.cpp src/share/vm/c1/c1_LinearScan.cpp src/share/vm/interpreter/interpreterRuntime.cpp src/share/vm/interpreter/interpreterRuntime.hpp src/share/vm/memory/allocation.inline.hpp src/share/vm/opto/machnode.hpp src/share/vm/prims/unsafe.cpp src/share/vm/runtime/advancedThresholdPolicy.cpp src/share/vm/runtime/vframeArray.cpp
description:
Remove -DAMD64 from sysdefs in platform_aarch64

So, initially for the builtin sim we had -DAMD64 in platform_aarch64. In fact I think it read -DAARCH64 -DAMD64. This was obviously broken, but it made sense at the time. In this changeset I added defined(AARCH64) to all #ifdef X86 statements that I thought were relevant at the time.

If these changes are to be pushed upstream a testcase will need for be found for each one which demonstrates that the conditionalisation is still necessary.

The other case in the changes you list was

--- a/src/share/vm/utilities/elfFile.cpp        Thu Apr 09 17:38:28 2015 -0700
+++ b/src/share/vm/utilities/elfFile.cpp        Fri Apr 10 15:06:38 2015 -0400
@@ -261,7 +261,12 @@
       }
     }
   }
+// x86 defaults to execstack, AARCH64 defaults to noexecstack
+#ifdef AARCH64
+  return true;
+#else
   return false;
+#endif
 }
 #endif

This was introduced in changeset 6668

changeset:   6668:0303ccd7b68d
user:        Edward Nevill edward.nevill at linaro.org
date:        Fri Feb 28 14:25:21 2014 +0000
files:       src/share/vm/utilities/elfFile.cpp
description:
Fix runtime/7107135/Test7107135 - problems with execstack

So, here the change was introduced to fix a specific test failure. Is the test still failing on jdk9? Does the above change still fix the test?

All the best,
Ed.




More information about the aarch64-port-dev mailing list