Mercurial > hg > truffle
diff src/cpu/sparc/vm/assembler_sparc.cpp @ 2258:28bf941f445e
7018378: JSR 292: _bound_int_mh produces wrong result on 64-bit SPARC
Reviewed-by: kvn
author | twisti |
---|---|
date | Mon, 14 Feb 2011 03:21:18 -0800 |
parents | 5577848f5923 |
children | 8033953d67ff |
line wrap: on
line diff
--- a/src/cpu/sparc/vm/assembler_sparc.cpp Fri Feb 11 12:05:43 2011 -0800 +++ b/src/cpu/sparc/vm/assembler_sparc.cpp Mon Feb 14 03:21:18 2011 -0800 @@ -2407,14 +2407,23 @@ #endif -void MacroAssembler::load_sized_value(Address src, Register dst, - size_t size_in_bytes, bool is_signed) { +void MacroAssembler::load_sized_value(Address src, Register dst, size_t size_in_bytes, bool is_signed) { switch (size_in_bytes) { - case 8: ldx(src, dst); break; - case 4: ld( src, dst); break; - case 2: is_signed ? ldsh(src, dst) : lduh(src, dst); break; - case 1: is_signed ? ldsb(src, dst) : ldub(src, dst); break; - default: ShouldNotReachHere(); + case 8: ld_long(src, dst); break; + case 4: ld( src, dst); break; + case 2: is_signed ? ldsh(src, dst) : lduh(src, dst); break; + case 1: is_signed ? ldsb(src, dst) : ldub(src, dst); break; + default: ShouldNotReachHere(); + } +} + +void MacroAssembler::store_sized_value(Register src, Address dst, size_t size_in_bytes) { + switch (size_in_bytes) { + case 8: st_long(src, dst); break; + case 4: st( src, dst); break; + case 2: sth( src, dst); break; + case 1: stb( src, dst); break; + default: ShouldNotReachHere(); } }