| Summary: | 6% SunSpider commandline regression due to r165940 | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Mark Hahnenberg <mhahnenberg> | ||||
| Component: | JavaScriptCore | Assignee: | Mark Hahnenberg <mhahnenberg> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | ||||||
| Priority: | P2 | ||||||
| Version: | 528+ (Nightly build) | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Bug Depends on: | |||||||
| Bug Blocks: | 121074 | ||||||
| Attachments: |
|
||||||
|
Description
Mark Hahnenberg
2014-03-21 14:22:57 PDT
In GCActivityCallback::didAllocate, lastGCLength() returns 0 if we've never collected before. Some of the benchmarks are never running a single EdenCollection, which causes them to repeatedly call scheduleTimer with a newDelay of 0. This defeats our timer slop heuristic, causing us to invoke CFRunLoopTimerSetNextFireDate a couple orders of magnitude more than we normally would. The fix is to seed the last GC lengths in Heap with a non-zero length so that our heuristic works. Created attachment 227491 [details]
Patch
Comment on attachment 227491 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=227491&action=review r=me > Source/JavaScriptCore/heap/Heap.cpp:284 > + // schedule the timer if we've never done a collction. *collection* Committed r166099: <http://trac.webkit.org/changeset/166099> |