Mercurial > hg > truffle
comparison src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp @ 17877:17b2fbdb6637
8038297: Avoid placing CTI immediately following cbcond instruction on T4
Summary: Insert a nop between cbcond and CTI
Reviewed-by: kvn, twisti
author | iveresov |
---|---|
date | Thu, 10 Apr 2014 23:15:13 -0700 |
parents | 87a6f2df28e2 |
children | 1ca36602c05b 4b2830dcf178 |
comparison
equal
deleted
inserted
replaced
17875:cb1b723cbca8 | 17877:17b2fbdb6637 |
---|---|
231 inline void MacroAssembler::br( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { | 231 inline void MacroAssembler::br( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { |
232 Assembler::bp(c, a, icc, p, d, rt); | 232 Assembler::bp(c, a, icc, p, d, rt); |
233 } | 233 } |
234 | 234 |
235 inline void MacroAssembler::br( Condition c, bool a, Predict p, Label& L ) { | 235 inline void MacroAssembler::br( Condition c, bool a, Predict p, Label& L ) { |
236 insert_nop_after_cbcond(); | |
236 br(c, a, p, target(L)); | 237 br(c, a, p, target(L)); |
237 } | 238 } |
238 | 239 |
239 | 240 |
240 // Branch that tests either xcc or icc depending on the | 241 // Branch that tests either xcc or icc depending on the |
246 MacroAssembler::br(c, a, p, d, rt); | 247 MacroAssembler::br(c, a, p, d, rt); |
247 #endif | 248 #endif |
248 } | 249 } |
249 | 250 |
250 inline void MacroAssembler::brx( Condition c, bool a, Predict p, Label& L ) { | 251 inline void MacroAssembler::brx( Condition c, bool a, Predict p, Label& L ) { |
252 insert_nop_after_cbcond(); | |
251 brx(c, a, p, target(L)); | 253 brx(c, a, p, target(L)); |
252 } | 254 } |
253 | 255 |
254 inline void MacroAssembler::ba( Label& L ) { | 256 inline void MacroAssembler::ba( Label& L ) { |
255 br(always, false, pt, L); | 257 br(always, false, pt, L); |
267 inline void MacroAssembler::fb( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { | 269 inline void MacroAssembler::fb( Condition c, bool a, Predict p, address d, relocInfo::relocType rt ) { |
268 fbp(c, a, fcc0, p, d, rt); | 270 fbp(c, a, fcc0, p, d, rt); |
269 } | 271 } |
270 | 272 |
271 inline void MacroAssembler::fb( Condition c, bool a, Predict p, Label& L ) { | 273 inline void MacroAssembler::fb( Condition c, bool a, Predict p, Label& L ) { |
274 insert_nop_after_cbcond(); | |
272 fb(c, a, p, target(L)); | 275 fb(c, a, p, target(L)); |
273 } | 276 } |
274 | 277 |
275 inline void MacroAssembler::fbp( Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt ) { | 278 inline void MacroAssembler::fbp( Condition c, bool a, CC cc, Predict p, address d, relocInfo::relocType rt ) { |
276 Assembler::fbp(c, a, cc, p, d, rt); | 279 Assembler::fbp(c, a, cc, p, d, rt); |
316 Assembler::call( d, rt ); | 319 Assembler::call( d, rt ); |
317 #endif | 320 #endif |
318 } | 321 } |
319 | 322 |
320 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) { | 323 inline void MacroAssembler::call( Label& L, relocInfo::relocType rt ) { |
324 insert_nop_after_cbcond(); | |
321 MacroAssembler::call( target(L), rt); | 325 MacroAssembler::call( target(L), rt); |
322 } | 326 } |
323 | 327 |
324 | 328 |
325 | 329 |