[Webkit-unassigned] [Bug 75503] New: WebKit spends ~8% of time in WriteBarrierBase::unvalidatedGet and JSCell::unvalidatedStructure for dromaeos' DOM attributes test

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jan 3 16:20:21 PST 2012


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

           Summary: WebKit spends ~8% of time in
                    WriteBarrierBase::unvalidatedGet and
                    JSCell::unvalidatedStructure for dromaeos' DOM
                    attributes test
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: JavaScriptCore
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: rniwa at webkit.org
                CC: darin at apple.com, andersca at apple.com, sam at webkit.org,
                    fpizlo at apple.com


Profiled DOM attributes on http://dromaeo.com/?dom

It seems like WebKit is spending ~8% of time in JSC::WriteBarrierBase<JSC::Structure>::unvalidatedGet() and JSCell::unvalidatedStructure. We're also spending 3.5% of time in locking a mutex inside a hash table. That seems like a lot of time. Maybe we should file a separate bug for that.

    4.7%    4.7%    JavaScriptCore    JSC::WriteBarrierBase<JSC::Structure>::unvalidatedGet() const
    0.0%    4.4%    JavaScriptCore     JSC::JSCell::unvalidatedStructure()
    0.0%    0.1%    JavaScriptCore     JSC::slowValidateCell(JSC::JSCell*)
    0.0%    0.0%    WebCore     void JSC::validateCell<JSC::Structure*>(JSC::Structure*)
    0.0%    0.0%    WebCore     WebCore::JSHTMLAnchorElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSHTMLHeadingElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSNode::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSHTMLDivElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    JavaScriptCore     void JSC::validateCell<JSC::JSString*>(JSC::JSString*)
    3.5%    3.5%    libSystem.B.dylib    __spin_lock
    0.0%    1.9%    libSystem.B.dylib     pthread_mutex_lock
    0.0%    1.9%    JavaScriptCore      WTF::Mutex::lock()
    0.0%    1.9%    WebCore       WTF::Locker<WTF::Mutex>::Locker(WTF::Mutex&)
    0.0%    0.5%    JavaScriptCore        void WTF::removeIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTableConstIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.5%    WebCore        void WTF::removeIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTableConstIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.4%    WebCore        void WTF::addIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTable<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> > const*, WTF::HashTableConstIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSS
 tring> > >, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.4%    JavaScriptCore        void WTF::addIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> > const*, WTF::HashTableConstIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.1%    JavaScriptCore        WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >::invalidateIterators()
    0.0%    0.0%    WebCore        void WTF::removeIterator<WebCore::RenderObject*, std::pair<WebCore::RenderObject*, WebCore::RenderBlock::FloatingObject*>, WTF::PairFirstExtractor<std::pair<WebCore::RenderObject*, WebCore::RenderBlock::FloatingObject*> >, WTF::PtrHash<WebCore::RenderObject*>, WTF::PairHashTraits<WTF::HashTraits<WebCore::RenderObject*>, WTF::HashTraits<WebCore::RenderBlock::FloatingObject*> >, WTF::HashTraits<WebCore::RenderObject*> >(WTF::HashTableConstIterator<WebCore::RenderObject*, std::pair<WebCore::RenderObject*, WebCore::RenderBlock::FloatingObject*>, WTF::PairFirstExtractor<std::pair<WebCore::RenderObject*, WebCore::RenderBlock::FloatingObject*> >, WTF::PtrHash<WebCore::RenderObject*>, WTF::PairHashTraits<WTF::HashTraits<WebCore::RenderObject*>, WTF::HashTraits<WebCore::RenderBlock::FloatingObject*> >, WTF::HashTraits<WebCore::RenderObject*> >*)
    0.0%    1.5%    libSystem.B.dylib     pthread_mutex_unlock
    0.0%    1.5%    JavaScriptCore      WTF::Mutex::unlock()
    0.0%    1.5%    WebCore       WTF::Locker<WTF::Mutex>::~Locker()
    0.0%    0.4%    JavaScriptCore        void WTF::addIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> > const*, WTF::HashTableConstIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.4%    WebCore        void WTF::addIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTable<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> > const*, WTF::HashTableConstIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSS
 tring> > >, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.3%    WebCore        void WTF::removeIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTableConstIterator<WTF::StringImpl*, std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> >, WTF::PairFirstExtractor<std::pair<WTF::StringImpl*, JSC::Weak<JSC::JSString> > >, WTF::StringHash, WTF::PairHashTraits<WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<JSC::Weak<JSC::JSString> > >, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.3%    JavaScriptCore        void WTF::removeIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >(WTF::HashTableConstIterator<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >*)
    0.0%    0.1%    JavaScriptCore        WTF::HashTable<WTF::StringImpl*, WTF::StringImpl*, WTF::IdentityExtractor, WTF::StringHash, WTF::HashTraits<WTF::StringImpl*>, WTF::HashTraits<WTF::StringImpl*> >::invalidateIterators()
    0.0%    0.0%    JavaScriptCore        JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode)
    0.0%    0.1%    libSystem.B.dylib     pthread_once
    0.0%    0.0%    libSystem.B.dylib     szone_free_definite_size
    0.0%    0.0%    libSystem.B.dylib     szone_malloc_should_clear
    0.0%    0.0%    libSystem.B.dylib     restore_sem_to_pool
    3.0%    3.0%    WebCore    JSC::JSCell::unvalidatedStructure()
    0.0%    1.5%    JavaScriptCore     JSC::slowValidateCell(JSC::JSCell*)
    0.0%    0.7%    WebCore     void JSC::validateCell<JSC::Structure*>(JSC::Structure*)
    0.0%    0.2%    JavaScriptCore     void JSC::validateCell<JSC::JSString*>(JSC::JSString*)
    0.0%    0.1%    WebCore     WebCore::JSHTMLElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.1%    WebCore     WebCore::JSHTMLAnchorElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.1%    WebCore     WebCore::JSHTMLHeadingElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.1%    WebCore     WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.1%    WebCore     void JSC::validateCell<JSC::JSCell*>(JSC::JSCell*)
    0.0%    0.0%    WebCore     WebCore::jsElementPrototypeFunctionGetAttribute(JSC::ExecState*)
    0.0%    0.0%    WebCore     WebCore::JSElement::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.0%    WebCore     WebCore::jsElementPrototypeFunctionSetAttribute(JSC::ExecState*)
    0.0%    0.0%    JavaScriptCore     JSC::JSCell::fastGetOwnPropertySlot(JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSHTMLAnchorElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    WebCore     JSC::WriteBarrierBase<JSC::Structure>::operator->() const
    0.0%    0.0%    WebCore     WebCore::JSNode::put(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::JSValue, JSC::PutPropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSNode::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    WebCore     WebCore::JSElement::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::Identifier const&, JSC::PropertySlot&)
    0.0%    0.0%    JavaScriptCore     operationPutByIdNonStrict
    0.0%    0.0%    JavaScriptCore     JSC::WriteBarrierBase<JSC::JSString>::operator->() const
    0.0%    0.0%    JavaScriptCore     JSC::slowValidateCell(JSC::JSGlobalObject*)
    0.0%    0.0%    WebCore     bool JSC::getStaticValueSlot<WebCore::JSHTMLElement, WebCore::JSElement>(JSC::ExecState*, JSC::HashTable const*, WebCore::JSHTMLElement*, JSC::Identifier const&, JSC::PropertySlot&)

-- 
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