Request for reviews (L): 7196262: JSR 292: java/lang/invoke/PrivateInvokeTest.java fails on solaris-sparc (original) (raw)

Christian Thalinger christian.thalinger at oracle.com
Thu Sep 13 18:17:11 PDT 2012


Thank you, Vladimir. -- Chris

On Sep 13, 2012, at 4:16 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

Looks good.

Vladimir Christian Thalinger wrote: http://cr.openjdk.java.net/~twisti/7196262/ 7196262: JSR 292: java/lang/invoke/PrivateInvokeTest.java fails on solaris-sparc Reviewed-by: We are using G1 and G4 in MethodHandles::generatemethodhandledispatch as temporary registers but the calling convention on 32-bit SPARC uses G1 and G4 to pass the first two long arguments. While investigating possible fixes it turned out that there is another bug. The appendix argument of the new JSR 292 implementation might end up in the wrong register or stack slot on SPARC. To fix that issue I had to change the Java calling convention on SPARC. While changing that code I also removed the special usage of G1 and G4 to pass long arguments on 32-bit SPARC. In doing this I could remove a lot of complicated code. The calling convention bug could potentially happen on other architectures as well. I added assertion code that checks that the Java calling convention can deal with the appendix argument on all architectures. Additionally I removed some unused code I came across. Here are refworkload runs to make sure that the changed calling convention does not affect performance. 32-bit SPARC: ============================================================================ logs.hotspot-sparc: referenceserver Benchmark Samples Mean Stdev Geomean Weight jetstream 20 173.86 4.09 0.10 scimark 20 400.22 2.73 0.15 specjbb2000 20 128767.32 417.38 0.15 specjbb2005 20 59437.83 237.98 0.25 specjvm98 20 363.66 1.39 0.15 volano25 20 79479.00 1652.97 0.20 -------------------------------------------------------------------------- Weighted Geomean 8679.73 ============================================================================ logs.7196262-sparc: referenceserver Benchmark Samples Mean Stdev %Diff P Significant jetstream 20 169.95 7.96 -2.25 0.060 * scimark 20 401.49 1.70 0.32 0.087 * specjbb2000 20 128592.62 524.44 -0.14 0.251 * specjbb2005 20 59438.10 208.12 0.00 0.997 * specjvm98 20 363.23 1.28 -0.12 0.310 * volano25 20 79675.70 949.88 0.25 0.648 * -------------------------------------------------------------------------- Weighted Geomean 8665.10 -0.17 ============================================================================ 64-bit SPARC: ============================================================================ logs.hotspot-sparcv9/: referenceserver Benchmark Samples Mean Stdev Geomean Weight jetstream 20 155.65 0.99 0.10 scimark 20 371.01 5.29 0.15 specjbb2000 20 121447.56 167.26 0.15 specjbb2005 20 55700.69 281.70 0.25 specjvm98 20 306.40 0.93 0.15 volano25 20 70283.25 1468.01 0.20 -------------------------------------------------------------------------- Weighted Geomean 7871.54 ============================================================================ logs.7196262-sparcv9/: referenceserver Benchmark Samples Mean Stdev %Diff P Significant jetstream 20 155.00 3.08 -0.42 0.375 * scimark 20 373.26 7.16 0.61 0.265 * specjbb2000 20 121482.24 178.23 0.02 0.529 * specjbb2005 20 55806.41 174.44 0.19 0.163 * specjvm98 20 306.16 1.07 -0.07 0.454 * volano25 20 69820.90 1221.87 -0.66 0.286 * -------------------------------------------------------------------------- Weighted Geomean 7868.14 -0.04 ============================================================================ src/cpu/sparc/vm/assemblersparc.cpp src/cpu/sparc/vm/assemblersparc.hpp src/cpu/sparc/vm/methodHandlessparc.cpp src/cpu/sparc/vm/sharedRuntimesparc.cpp src/cpu/x86/vm/methodHandlesx86.cpp src/cpu/x86/vm/sharedRuntimex8632.cpp src/cpu/x86/vm/sharedRuntimex8664.cpp src/share/vm/asm/register.hpp src/share/vm/code/nmethod.cpp src/share/vm/runtime/sharedRuntime.cpp src/share/vm/runtime/sharedRuntime.hpp



More information about the hotspot-compiler-dev mailing list