Bug 101390

Summary: Copying phase should use work lists
Product: WebKit Reporter: Mark Hahnenberg <mhahnenberg>
Component: JavaScriptCoreAssignee: Mark Hahnenberg <mhahnenberg>
Status: RESOLVED FIXED    
Severity: Normal CC: ggaren, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch fpizlo: review+, webkit.review.bot: commit-queue-

Mark Hahnenberg
Reported 2012-11-06 13:43:01 PST
Currently we iterate over every cell in the Heap during the copying phase. To improve our performance under paging, we'd like to reduce the number of pages we touch during a collection. One way to avoid having to iterate every cell during copying is to use per-CopiedBlock work lists created during the marking phase to record just the JSCells that need to be revisited during the copying phase. Then, during the copying phase, we iterate over all the CopiedBlocks and use their accumulated work lists to perform the necessary copying.
Attachments
Patch (16.43 KB, patch)
2012-11-06 14:35 PST, Mark Hahnenberg
no flags
Patch (32.51 KB, patch)
2012-11-28 12:13 PST, Mark Hahnenberg
fpizlo: review+
webkit.review.bot: commit-queue-
Mark Hahnenberg
Comment 1 2012-11-06 14:35:17 PST
Filip Pizlo
Comment 2 2012-11-06 15:36:37 PST
Comment on attachment 172651 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=172651&action=review > Source/JavaScriptCore/heap/CopiedBlock.h:83 > + typedef Vector<JSCell*, blockSize / (sizeof(JSValue) * 4)> WorkList; Would be better to conserve space for these wordlists somehow!
Geoffrey Garen
Comment 3 2012-11-07 10:35:30 PST
Mark, you mentioned reduced paging as a benefit to this strategy. How can we measure that?
Mark Hahnenberg
Comment 4 2012-11-28 12:13:08 PST
WebKit Review Bot
Comment 5 2012-11-28 16:14:12 PST
Comment on attachment 176542 [details] Patch Rejecting attachment 176542 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: commit-queue/Source/WebKit/chromium/third_party/v8-i18n --revision 159 --non-interactive --force --accept theirs-conflict --ignore-externals' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' 51>At revision 159. ________ running '/usr/bin/python tools/clang/scripts/update.py --mac-only' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' ________ running '/usr/bin/python gyp_webkit' in '/mnt/git/webkit-commit-queue/Source/WebKit/chromium' Updating webkit projects from gyp files... Full output: http://queues.webkit.org/results/15027601
Mark Hahnenberg
Comment 6 2012-11-28 17:04:33 PST
Note You need to log in before you can comment on or make changes to this bug.