comparison src/cpu/x86/vm/c1_LIRGenerator_x86.cpp @ 1572:87fc6aca31ab

6955349: C1: Make G1 barriers work with x64 Summary: This fixes G1 barriers in c1 on x64. Reviewed-by: never
author iveresov
date Thu, 27 May 2010 22:01:55 -0700
parents 323bd24c6520
children e9ff18c4ace7
comparison
equal deleted inserted replaced
1571:2d127394260e 1572:87fc6aca31ab
173 // This store will need a precise card mark, so go ahead and 173 // This store will need a precise card mark, so go ahead and
174 // compute the full adddres instead of computing once for the 174 // compute the full adddres instead of computing once for the
175 // store and again for the card mark. 175 // store and again for the card mark.
176 LIR_Opr tmp = new_pointer_register(); 176 LIR_Opr tmp = new_pointer_register();
177 __ leal(LIR_OprFact::address(addr), tmp); 177 __ leal(LIR_OprFact::address(addr), tmp);
178 return new LIR_Address(tmp, 0, type); 178 return new LIR_Address(tmp, type);
179 } else { 179 } else {
180 return addr; 180 return addr;
181 } 181 }
182 } 182 }
183 183
184 184
185 void LIRGenerator::increment_counter(address counter, int step) { 185 void LIRGenerator::increment_counter(address counter, int step) {
186 LIR_Opr pointer = new_pointer_register(); 186 LIR_Opr pointer = new_pointer_register();
187 __ move(LIR_OprFact::intptrConst(counter), pointer); 187 __ move(LIR_OprFact::intptrConst(counter), pointer);
188 LIR_Address* addr = new LIR_Address(pointer, 0, T_INT); 188 LIR_Address* addr = new LIR_Address(pointer, T_INT);
189 increment_counter(addr, step); 189 increment_counter(addr, step);
190 } 190 }
191 191
192 192
193 void LIRGenerator::increment_counter(LIR_Address* addr, int step) { 193 void LIRGenerator::increment_counter(LIR_Address* addr, int step) {