comparison src/share/vm/opto/superword.hpp @ 6183:6f8f439e247d

7177923: SIGBUS on sparc in compiled code for java.util.Calendar.clear() Summary: disable vectorization of a memory access with more elements per vector than one which is used for alignment on sparc Reviewed-by: twisti
author kvn
date Tue, 19 Jun 2012 15:12:56 -0700
parents 8c92982cbbc4
children 8ae8f9dd7099
comparison
equal deleted inserted replaced
6182:765ee2d1674b 6183:6f8f439e247d
262 LoopNode* lp() { return _lp; } 262 LoopNode* lp() { return _lp; }
263 void set_lp(LoopNode* lp) { _lp = lp; 263 void set_lp(LoopNode* lp) { _lp = lp;
264 _iv = lp->as_CountedLoop()->phi()->as_Phi(); } 264 _iv = lp->as_CountedLoop()->phi()->as_Phi(); }
265 int iv_stride() { return lp()->as_CountedLoop()->stride_con(); } 265 int iv_stride() { return lp()->as_CountedLoop()->stride_con(); }
266 266
267 int vector_width_in_bytes(BasicType bt) { 267 int vector_width(Node* n) {
268 return MIN2(ABS(iv_stride())*type2aelembytes(bt), 268 BasicType bt = velt_basic_type(n);
269 Matcher::vector_width_in_bytes(bt)); 269 return MIN2(ABS(iv_stride()), Matcher::max_vector_size(bt));
270 } 270 }
271 271 int vector_width_in_bytes(Node* n) {
272 BasicType bt = velt_basic_type(n);
273 return vector_width(n)*type2aelembytes(bt);
274 }
272 MemNode* align_to_ref() { return _align_to_ref; } 275 MemNode* align_to_ref() { return _align_to_ref; }
273 void set_align_to_ref(MemNode* m) { _align_to_ref = m; } 276 void set_align_to_ref(MemNode* m) { _align_to_ref = m; }
274 277
275 Node* ctrl(Node* n) const { return _phase->has_ctrl(n) ? _phase->get_ctrl(n) : n; } 278 Node* ctrl(Node* n) const { return _phase->has_ctrl(n) ? _phase->get_ctrl(n) : n; }
276 279