Mercurial > hg > graal-compiler
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. |