Bug 31693

Summary: isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
Product: WebKit Reporter: Dmitry Titov <dimich>
Component: Web Template FrameworkAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: ap, dglazkov, levin
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Attachments:
Description Flags
Proposed patch. levin: review+, dimich: commit-queue-

Dmitry Titov
Reported 2009-11-19 15:17:12 PST
http://trac.webkit.org/changeset/51158 added ASSERT(isMainThread()) to TreeShared methods. This practically didn't slow down debug build on Mac and Windows, but on Chromium some layout tests started to timeout. For example, editing/selection/extend-selection.html execution time grew 15 times (!). This test operates with selection and it does a lot of operations like Position::previous() that churns refcout on Nodes. Turned out the isMainThread() on pthread-based Chromium (Mac and Linux) involves mapping through threadMap, which in turn takes 2 Mutexes to lock - in identifierByPthreadHandle() and in iterator code. By comparing handle itself rather then mapped Id the time required by isMainThread() goes back to reasonable. Patch is coming.
Attachments
Proposed patch. (1.90 KB, patch)
2009-11-19 15:21 PST, Dmitry Titov
levin: review+
dimich: commit-queue-
Dmitry Titov
Comment 1 2009-11-19 15:21:03 PST
Created attachment 43530 [details] Proposed patch.
Alexey Proskuryakov
Comment 2 2009-11-19 15:26:36 PST
Comment on attachment 43530 [details] Proposed patch. I wonder why you chose to rename the variable to mainThreadHandle. Mac man page for pthread_self says "returns the thread ID of the calling thread". Of course, "identifier" is taken already, but it's not a handle either.
Dmitry Titov
Comment 3 2009-11-19 15:33:56 PST
Note You need to log in before you can comment on or make changes to this bug.