Mercurial > hg > truffle
diff src/cpu/x86/vm/x86_64.ad @ 10139:35c15dad89ea
8011901: Unsafe.getAndAddLong(obj, off, delta) does not work properly with long deltas
Summary: instruct xaddL_no_res shouldn't allow 64 bit constants.
Reviewed-by: kvn
author | roland |
---|---|
date | Tue, 16 Apr 2013 17:06:39 +0200 |
parents | 886d1fd67dc3 |
children | 78603aa58b1e |
line wrap: on
line diff
--- a/src/cpu/x86/vm/x86_64.ad Fri Apr 19 10:09:11 2013 -0700 +++ b/src/cpu/x86/vm/x86_64.ad Tue Apr 16 17:06:39 2013 +0200 @@ -2222,12 +2222,6 @@ $$$emit32$src$$constant; %} - enc_class Con64(immL src) - %{ - // Output immediate - emit_d64($src$$constant); - %} - enc_class Con32F_as_bits(immF src) %{ // Output Float immediate bits @@ -7608,7 +7602,7 @@ ins_pipe( pipe_cmpxchg ); %} -instruct xaddL_no_res( memory mem, Universe dummy, immL add, rFlagsReg cr) %{ +instruct xaddL_no_res( memory mem, Universe dummy, immL32 add, rFlagsReg cr) %{ predicate(n->as_LoadStore()->result_not_used()); match(Set dummy (GetAndAddL mem add)); effect(KILL cr);