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