comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 1848:c393f046f4c5

6991512: G1 barriers fail with 64bit C1 Summary: Fix compare-and-swap intrinsic problem with G1 post-barriers and issue with branch ranges in G1 stubs on sparc Reviewed-by: never, kvn
author iveresov
date Tue, 12 Oct 2010 23:51:20 -0700
parents 22e4420d19f7
children f95d63e2154a
comparison
equal deleted inserted replaced
1847:a932f331ef90 1848:c393f046f4c5
1939 } 1939 }
1940 if ( op->code() == lir_cas_obj) { 1940 if ( op->code() == lir_cas_obj) {
1941 __ cmpxchgptr(newval, Address(addr, 0)); 1941 __ cmpxchgptr(newval, Address(addr, 0));
1942 } else if (op->code() == lir_cas_int) { 1942 } else if (op->code() == lir_cas_int) {
1943 __ cmpxchgl(newval, Address(addr, 0)); 1943 __ cmpxchgl(newval, Address(addr, 0));
1944 } else {
1945 LP64_ONLY(__ cmpxchgq(newval, Address(addr, 0)));
1946 } 1944 }
1947 #ifdef _LP64 1945 #ifdef _LP64
1948 } else if (op->code() == lir_cas_long) { 1946 } else if (op->code() == lir_cas_long) {
1949 Register addr = (op->addr()->is_single_cpu() ? op->addr()->as_register() : op->addr()->as_register_lo()); 1947 Register addr = (op->addr()->is_single_cpu() ? op->addr()->as_register() : op->addr()->as_register_lo());
1950 Register newval = op->new_value()->as_register_lo(); 1948 Register newval = op->new_value()->as_register_lo();