773 Address arg_msw(O0_argslot, -Interpreter::stackElementSize); |
773 Address arg_msw(O0_argslot, -Interpreter::stackElementSize); |
774 |
774 |
775 switch (ek) { |
775 switch (ek) { |
776 case _adapter_opt_i2l: |
776 case _adapter_opt_i2l: |
777 { |
777 { |
778 __ ldsw(arg_lsw, O2_scratch); // Load LSW |
778 #ifdef _LP64 |
779 NOT_LP64(__ srlx(O2_scratch, BitsPerInt, O3_scratch)); // Move high bits to lower bits for std |
779 __ ldsw(arg_lsw, O2_scratch); // Load LSW sign-extended |
780 __ st_long(O2_scratch, arg_msw); // Uses O2/O3 on !_LP64 |
780 #else |
|
781 __ ldsw(arg_lsw, O3_scratch); // Load LSW sign-extended |
|
782 __ srlx(O3_scratch, BitsPerInt, O2_scratch); // Move MSW value to lower 32-bits for std |
|
783 #endif |
|
784 __ st_long(O2_scratch, arg_msw); // Uses O2/O3 on !_LP64 |
781 } |
785 } |
782 break; |
786 break; |
783 case _adapter_opt_unboxl: |
787 case _adapter_opt_unboxl: |
784 { |
788 { |
785 // Load the value up from the heap. |
789 // Load the value up from the heap. |