[Webkit-unassigned] [Bug 53564] New: canHaveChildrenForEditing should be more efficient

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Feb 1 17:58:13 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=53564

           Summary: canHaveChildrenForEditing should be more efficient
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Enhancement
          Priority: P2
         Component: HTML Editing
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: rniwa at webkit.org
                CC: eric at webkit.org, mjs at apple.com, darin at apple.com,
                    ap at webkit.org, justin.garcia at apple.com,
                    enrica at apple.com, leviw at chromium.org


I profiled editing/selection/extend-selection because they take more than 5s to run on the debug build.  The blame is on editingIgnoresContent, which consumes more than 5% of the run time according to Shark.  We should make function more efficient.

    5.5%    5.5%    WebCore    WebCore::Node::getFlag(WebCore::Node::NodeFlags) const
    0.0%    4.1%    WebCore     WebCore::Node::isElementNode() const
    0.0%    2.7%    WebCore      WebCore::Node::hasTagName(WebCore::QualifiedName const&) const
    0.0%    2.5%    WebCore       WebCore::canHaveChildrenForEditing(WebCore::Node const*)
    0.0%    2.5%    WebCore        WebCore::editingIgnoresContent(WebCore::Node const*)
    0.0%    0.1%    WebCore       WebCore::endsOfNodeAreVisuallyDistinctPositions(WebCore::Node*)
    0.0%    0.1%    WebCore       WebCore::Position::downstream(WebCore::EditingBoundaryCrossingRule) const
    0.0%    0.0%    WebCore       WebCore::Node::rootEditableElement() const
    0.0%    0.0%    WebCore       WebCore::highestEditableRoot(WebCore::Position const&)
    0.0%    1.1%    WebCore      WebCore::toElement(WebCore::Node const*)
    0.0%    1.1%    WebCore       WebCore::Node::hasTagName(WebCore::QualifiedName const&) const
    0.0%    1.0%    WebCore        WebCore::canHaveChildrenForEditing(WebCore::Node const*)
    0.0%    0.1%    WebCore        WebCore::Position::downstream(WebCore::EditingBoundaryCrossingRule) const
    0.0%    0.0%    WebCore        WebCore::Node::rootEditableElement() const
    0.0%    0.0%    WebCore        WebCore::Position::isCandidate() const
    0.0%    0.0%    WebCore        WebCore::highestEditableRoot(WebCore::Position const&)
    0.0%    0.0%    WebCore        WebCore::endsOfNodeAreVisuallyDistinctPositions(WebCore::Node*)
    0.0%    0.1%    WebCore      WebCore::isTableElement(WebCore::Node*)
    0.0%    0.0%    WebCore      WebCore::Node::rootEditableElement() const
    0.0%    0.0%    WebCore      WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
    0.0%    0.6%    WebCore     WebCore::Node::parentNode() const
    0.0%    0.4%    WebCore     WebCore::Node::isContainerNode() const
    0.0%    0.3%    WebCore     WebCore::Node::isTextNode() const
    0.0%    0.0%    WebCore     WebCore::Node::isShadowRoot() const
    0.0%    0.0%    WebCore     WebCore::Node::parentNodeGuaranteedHostFree() const
    0.0%    0.0%    WebCore     WebCore::Node::isSVGElement() const
    0.0%    0.0%    WebCore     WebCore::Node::rootEditableElement() const
    0.0%    0.0%    WebCore     WebCore::Node::inDocument() const
    0.0%    0.0%    WebCore     WebCore::Node::hasTagName(WebCore::QualifiedName const&) const
    0.0%    0.0%    WebCore     WebCore::isDeletableElement(WebCore::Node const*)
    2.1%    2.1%    WebCore    WebCore::Node::hasTagName(WebCore::QualifiedName const&) const
    1.9%    1.9%    WebCore    WebCore::Node::isElementNode() const
    1.6%    1.6%    WebCore    WTF::RefPtr<WTF::StringImpl>::get() const
    1.6%    1.6%    JavaScriptCore    WTF::isMainThread()
    1.5%    1.5%    WebCore    WebCore::QualifiedName::matches(WebCore::QualifiedName const&) const
    1.3%    1.3%    libSystem.B.dylib    __spin_lock
    1.2%    1.2%    libobjc.A.dylib    objc_msgSend
    1.1%    1.1%    libicucore.A.dylib    icu::RuleBasedBreakIterator::handleNext(icu::RBBIStateTable const*)

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list