void InspectorNodeFinder::searchUsingDOMTreeTraversal(Node* parentNode) { // Manual plain text search. for (auto node = parentNode; node; node = NodeTraversal::next(node, parentNode)) { switch (node->nodeType()) { case Node::TEXT_NODE: case Node::COMMENT_NODE: case Node::CDATA_SECTION_NODE: { if (node->nodeValue().findIgnoringCase(m_whitespaceTrimmedQuery) != notFound) m_results.add(node); break; } case Node::ELEMENT_NODE: { if (matchesElement(*toElement(node))) m_results.add(node); // Search inside frame elements. if (node->isFrameOwnerElement()) { HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node); if (Document* document = frameOwner->contentDocument()) performSearch(document); } break; } default: break; } } }
unsigned SuperHashTable::doFindElement(unsigned v, const void * findET) const { #ifdef HASHSIZE_POWER2 v = v & (tablesize - 1); #else v = v % tablesize; #endif unsigned vs = v; #ifdef TRACE_HASH unsigned searchlen = 0; #endif while (1) { #ifdef MY_TRACE_HASH my_search_tot++; #endif void *et = table[v]; if (!et) break; if (matchesElement(et, findET)) break; #ifdef TRACE_HASH searchlen ++; #endif v++; if (v==tablesize) v = 0; if (v==vs) break; } #ifdef MY_TRACE_HASH my_search_num++; if(my_search_num != 0) printf("Hash table average search length %d\n", (int) (my_search_tot/my_search_num)); #endif #ifdef TRACE_HASH note_searchlen(searchlen); #endif setCache(v); return v; }