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