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);