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

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Sep 13 16:16:50 PDT 2012


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