src/share/vm/opto/superword.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/superword.cpp Thu Jun 25 16:15:10 2015
--- new/src/share/vm/opto/superword.cpp Thu Jun 25 16:15:09 2015
*** 181,197 ****
--- 181,204 ----
(n->is_Proj() && !n->as_Proj()->is_CFG())) {
is_slp = false;
break;
}
+ // Ignore nodes with non-primitive type.
+ BasicType bt;
if (n->is_Mem()) {
! MemNode* current = n->as_Mem();
BasicType bt = current->memory_type();
! bt = n->as_Mem()->memory_type();
+ } else {
+ bt = n->bottom_type()->basic_type();
+ }
if (is_java_primitive(bt) == false) {
ignored_loop_nodes[i] = n->_idx;
continue;
}
+
+ if (n->is_Mem()) {
+ MemNode* current = n->as_Mem();
Node* adr = n->in(MemNode::Address);
Node* n_ctrl = _phase->get_ctrl(adr);
// save a queue of post process nodes
if (n_ctrl != NULL && lpt()->is_member(_phase->get_loop(n_ctrl))) {
*** 229,243 ****
--- 236,251 ----
for (uint i = 0; i < lpt()->_body.size(); i++) {
if (ignored_loop_nodes[i] != -1) continue;
BasicType bt;
Node* n = lpt()->_body.at(i);
! if (n->is_Store()) {
! if (n->is_Mem()) {
bt = n->as_Mem()->memory_type();
} else {
bt = n->bottom_type()->basic_type();
}
+ if (is_java_primitive(bt) == false) continue;
int cur_max_vector = Matcher::max_vector_size(bt);
// If a max vector exists which is not larger than _local_loop_unroll_factor
// stop looking, we already have the max vector to map to.
src/share/vm/opto/superword.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File