Closed
Bug 1032750
Opened 10 years ago
Closed 9 years ago
Triggers are updated for non-collected zones on GC
Categories
(Core :: JavaScript: GC, defect)
Core
JavaScript: GC
Tracking
()
RESOLVED
FIXED
mozilla37
People
(Reporter: jonco, Assigned: jonco)
References
(Blocks 1 open bug)
Details
Attachments
(1 file, 1 obsolete file)
4.82 KB,
patch
|
terrence
:
review+
|
Details | Diff | Splinter Review |
After a GC, we update the allocation triggers for all zones rather than just the ones we collected. It seems like this could lead to a situation where a zone that sees frequently allocation would be collected often, and that other more slowly allocated zones might not be collected at all. Bill, do you know if this is intended behaviour? The attached patch changes this to only update triggers for collected zones.
Assignee | ||
Updated•10 years ago
|
Flags: needinfo?(wmccloskey)
Comment on attachment 8448624 [details] [diff] [review] dont-update-triggers-for-uncollected-zones Yeah, this seems bad. I don't know of any reason why it should work this way.
Attachment #8448624 -
Flags: review+
Flags: needinfo?(wmccloskey)
Comment 2•10 years ago
|
||
In the browser, we occasionally do a full GC on a timer in nsJSEnvironment.cpp, so we shouldn't leak forever.
Assignee | ||
Comment 3•10 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/14f0326f6c77
Comment 4•10 years ago
|
||
sorry had to backout this changes for test failures like https://tbpl.mozilla.org/php/getParsedLog.php?id=42936365&tree=Mozilla-Inbound starting with this patch included
Assignee | ||
Comment 5•10 years ago
|
||
It seems it's this patch that causes the test failures, rather than the others that were pushed with it.
Assignee | ||
Comment 6•10 years ago
|
||
The test failure is js1_5/Regress/regress-360969-05.js timeout on Android 2.3 ARMv6 only. Interestingly, a GC is running when the test is killed.
Updated•10 years ago
|
Blocks: GC.performance
Assignee | ||
Comment 7•9 years ago
|
||
Try build looks ok for this now, so I'm going to try and re-land it. Re-requesting review because this patch contains some tidyups that weren't in the first version.
Attachment #8448624 -
Attachment is obsolete: true
Attachment #8542193 -
Flags: review?(terrence)
Comment 8•9 years ago
|
||
This will be nice to get landed now that we're actually doing non-full GCs a reasonable amount of the time. ;)
Comment 9•9 years ago
|
||
Comment on attachment 8542193 [details] [diff] [review] dont-update-triggers-on-uncollected-zones v2 Review of attachment 8542193 [details] [diff] [review]: ----------------------------------------------------------------- ::: js/src/jsgc.cpp @@ +3311,2 @@ > if (zone->usage.gcBytes() > 1024 * 1024 && > + zone->isCloseToAllocTrigger(schedulingState.inHighFrequencyGCMode()) && In my head I had envisioned the flow here to be more like: if (zone->threshold.hasLargeHeap(zone->usage) && zone->threshold.isCloseToAllocTrigger(zone->usage, schedulingState) && etc...) But I'm fine landing it like this, since it's definitely better. @@ +3313,1 @@ > incrementalState == NO_INCREMENTAL && Also, I totally hate our open coding of "is not in a GC" as "incrementalState == NO_INCREMENTAL": it is a real readability issue.
Attachment #8542193 -
Flags: review?(terrence) → review+
Assignee | ||
Comment 10•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/87fe5bc1233f
https://hg.mozilla.org/mozilla-central/rev/87fe5bc1233f
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
You need to log in
before you can comment on or make changes to this bug.
Description
•