comparison src/cpu/sparc/vm/methodHandles_sparc.cpp @ 2382:3ef1a1866a60

7027232: JSR 292: wrong numeric value returned by MH on solaris-sparc Reviewed-by: kvn, never
author twisti
date Mon, 21 Mar 2011 02:30:49 -0700
parents 8033953d67ff
children d934e4b931e9
comparison
equal deleted inserted replaced
2360:fc5ebbb2d1a8 2382:3ef1a1866a60
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.