src/cpu/sparc/vm/methodHandles_sparc.cpp

changeset 2664
3ef1a1866a60
parent 2639
8033953d67ff
child 2809
d934e4b931e9
     1.1 --- a/src/cpu/sparc/vm/methodHandles_sparc.cpp	Fri Mar 18 01:44:15 2011 -0700
     1.2 +++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Mon Mar 21 02:30:49 2011 -0700
     1.3 @@ -775,9 +775,13 @@
     1.4        switch (ek) {
     1.5        case _adapter_opt_i2l:
     1.6          {
     1.7 -          __ ldsw(arg_lsw, O2_scratch);                           // Load LSW
     1.8 -          NOT_LP64(__ srlx(O2_scratch, BitsPerInt, O3_scratch));  // Move high bits to lower bits for std
     1.9 -          __ st_long(O2_scratch, arg_msw);                        // Uses O2/O3 on !_LP64
    1.10 +#ifdef _LP64
    1.11 +          __ ldsw(arg_lsw, O2_scratch);                 // Load LSW sign-extended
    1.12 +#else
    1.13 +          __ ldsw(arg_lsw, O3_scratch);                 // Load LSW sign-extended
    1.14 +          __ srlx(O3_scratch, BitsPerInt, O2_scratch);  // Move MSW value to lower 32-bits for std
    1.15 +#endif
    1.16 +          __ st_long(O2_scratch, arg_msw);              // Uses O2/O3 on !_LP64
    1.17          }
    1.18          break;
    1.19        case _adapter_opt_unboxl:

mercurial