330 Arena* arena() { return _arena; }
331
332 Node* bb() { return _bb; }
333 void set_bb(Node* bb) { _bb = bb; }
334
335 void set_lpt(IdealLoopTree* lpt) { _lpt = lpt; }
336
337 LoopNode* lp() { return _lp; }
338 void set_lp(LoopNode* lp) { _lp = lp;
339 _iv = lp->as_CountedLoop()->phi()->as_Phi(); }
340 int iv_stride() { return lp()->as_CountedLoop()->stride_con(); }
341
342 int vector_width(Node* n) {
343 BasicType bt = velt_basic_type(n);
344 return MIN2(ABS(iv_stride()), Matcher::max_vector_size(bt));
345 }
346 int vector_width_in_bytes(Node* n) {
347 BasicType bt = velt_basic_type(n);
348 return vector_width(n)*type2aelembytes(bt);
349 }
350 MemNode* align_to_ref() { return _align_to_ref; }
351 void set_align_to_ref(MemNode* m) { _align_to_ref = m; }
352
353 Node* ctrl(Node* n) const { return _phase->has_ctrl(n) ? _phase->get_ctrl(n) : n; }
354
355 // block accessors
356 bool in_bb(Node* n) { return n != NULL && n->outcnt() > 0 && ctrl(n) == _bb; }
357 int bb_idx(Node* n) { assert(in_bb(n), "must be"); return _bb_idx.at(n->_idx); }
358 void set_bb_idx(Node* n, int i) { _bb_idx.at_put_grow(n->_idx, i); }
359
360 // visited set accessors
361 void visited_clear() { _visited.Clear(); }
362 void visited_set(Node* n) { return _visited.set(bb_idx(n)); }
363 int visited_test(Node* n) { return _visited.test(bb_idx(n)); }
364 int visited_test_set(Node* n) { return _visited.test_set(bb_idx(n)); }
365 void post_visited_clear() { _post_visited.Clear(); }
366 void post_visited_set(Node* n) { return _post_visited.set(bb_idx(n)); }
367 int post_visited_test(Node* n) { return _post_visited.test(bb_idx(n)); }
368
369 // Ensure node_info contains element "i"
|
330 Arena* arena() { return _arena; }
331
332 Node* bb() { return _bb; }
333 void set_bb(Node* bb) { _bb = bb; }
334
335 void set_lpt(IdealLoopTree* lpt) { _lpt = lpt; }
336
337 LoopNode* lp() { return _lp; }
338 void set_lp(LoopNode* lp) { _lp = lp;
339 _iv = lp->as_CountedLoop()->phi()->as_Phi(); }
340 int iv_stride() { return lp()->as_CountedLoop()->stride_con(); }
341
342 int vector_width(Node* n) {
343 BasicType bt = velt_basic_type(n);
344 return MIN2(ABS(iv_stride()), Matcher::max_vector_size(bt));
345 }
346 int vector_width_in_bytes(Node* n) {
347 BasicType bt = velt_basic_type(n);
348 return vector_width(n)*type2aelembytes(bt);
349 }
350 int get_vw_bytes_special(MemNode* s);
351 MemNode* align_to_ref() { return _align_to_ref; }
352 void set_align_to_ref(MemNode* m) { _align_to_ref = m; }
353
354 Node* ctrl(Node* n) const { return _phase->has_ctrl(n) ? _phase->get_ctrl(n) : n; }
355
356 // block accessors
357 bool in_bb(Node* n) { return n != NULL && n->outcnt() > 0 && ctrl(n) == _bb; }
358 int bb_idx(Node* n) { assert(in_bb(n), "must be"); return _bb_idx.at(n->_idx); }
359 void set_bb_idx(Node* n, int i) { _bb_idx.at_put_grow(n->_idx, i); }
360
361 // visited set accessors
362 void visited_clear() { _visited.Clear(); }
363 void visited_set(Node* n) { return _visited.set(bb_idx(n)); }
364 int visited_test(Node* n) { return _visited.test(bb_idx(n)); }
365 int visited_test_set(Node* n) { return _visited.test_set(bb_idx(n)); }
366 void post_visited_clear() { _post_visited.Clear(); }
367 void post_visited_set(Node* n) { return _post_visited.set(bb_idx(n)); }
368 int post_visited_test(Node* n) { return _post_visited.test(bb_idx(n)); }
369
370 // Ensure node_info contains element "i"
|