Closed Bug 887322 Opened 11 years ago Closed 11 years ago

GenerationalGC: Many minor GCs on date-format-xparb due to store buffer overflows

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 889682

People

(Reporter: jandem, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

With the patch for bug 886911, we have 44 minor GCs on Sunspider date-format-xparb. We create many Date objects and writing doubles to their slots seems to fill up the store buffer. If I add "if (v.isObject())" checks to the callers of HeapSlot::post in Barrier-inl.h, there are no minor GCs while the benchmark is running and time is about as fast as non-ggc builds (17 ms -> 11 ms).
Attached patch Hacks (deleted) — Splinter Review
This bug + the generic buffer overflowing seems to be causing the Octane-pdf.js slowdown as well. With the patch in bug 888313 + this patch I get numbers that are very close to non-ggc builds. These patches also seem to win 15-20% on Kraken crypto-aes, crypto-pbkdf2 and crypto-sha256-iterative. Pretty cool, I've looked at these tests before and always hoped/assumed GGC would help us a bit, good to know that a lot of the difference there is indeed GC related.
This is actually not a terrible hack, but something that came from some misunderstanding. Apparently we used to think that just putting everything into the store buffer is a good idea, and that we should only check for objects once we iterate over it. I believe this was also fueled by how v8 checks this. They scatter the |IsObject| check all over the codebase, for no important reason. I think I actually wanted to file a bug that we should do something like this as an optimization. How much does this patch win without the is-in-nursery check?
It looks like bug 889682 should have fixed this too.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
Blocks: 1507445
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: