Request for reviews (L): 7196262: JSR 292: java/lang/invoke/PrivateInvokeTest.java fails on solaris-sparc
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::generate_method_handle_dispatch 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: reference_server
>> 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: reference_server
>> 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/: reference_server
>> 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/: reference_server
>> 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/assembler_sparc.cpp
>> src/cpu/sparc/vm/assembler_sparc.hpp
>> src/cpu/sparc/vm/methodHandles_sparc.cpp
>> src/cpu/sparc/vm/sharedRuntime_sparc.cpp
>> src/cpu/x86/vm/methodHandles_x86.cpp
>> src/cpu/x86/vm/sharedRuntime_x86_32.cpp
>> src/cpu/x86/vm/sharedRuntime_x86_64.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