Closed Bug 1008473 (SemispaceGC) Opened 11 years ago Closed 10 years ago

Implement a two-generation nursery

Categories

(Core :: JavaScript: GC, defect)

defect
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: terrence, Assigned: jonco)

References

(Blocks 1 open bug)

Details

Attachments

(11 files, 3 obsolete files)

2.38 KB, patch
terrence
: review+
Details | Diff | Splinter Review
9.31 KB, patch
terrence
: review+
Details | Diff | Splinter Review
40.50 KB, patch
Details | Diff | Splinter Review
838 bytes, patch
terrence
: review+
Details | Diff | Splinter Review
29.56 KB, patch
Details | Diff | Splinter Review
9.19 KB, patch
Details | Diff | Splinter Review
23.12 KB, patch
Details | Diff | Splinter Review
12.16 KB, patch
Details | Diff | Splinter Review
19.45 KB, patch
Details | Diff | Splinter Review
6.47 KB, patch
Details | Diff | Splinter Review
48.87 KB, patch
Details | Diff | Splinter Review
This is along the same lines as bug 902174, but will be simpler to implement in a short timeframe.
Target Milestone: flash10 → ---
Assignee: nobody → jcoppeard
Attachment #8431710 - Flags: review?(terrence)
Attached patch 2 - Add NurserySpace class (obsolete) — Splinter Review
Comment on attachment 8431710 [details] [diff] [review] 0 - make Value::toGCThing() return a Cell* Review of attachment 8431710 [details] [diff] [review]: ----------------------------------------------------------------- \o/
Attachment #8431710 - Flags: review?(terrence) → review+
Comment on attachment 8431711 [details] [diff] [review] 1 - Misc refactoring and removal of unused methods Review of attachment 8431711 [details] [diff] [review]: ----------------------------------------------------------------- Thanks!
Attachment #8431711 - Flags: review?(terrence) → review+
Comment on attachment 8431712 [details] [diff] [review] 2 - Add NurserySpace class Review of attachment 8431712 [details] [diff] [review]: ----------------------------------------------------------------- Great abstraction! ::: js/src/gc/Nursery.cpp @@ +144,5 @@ > + JS_ASSERT(isEnabled()); > + JS_ASSERT(!runtime_->isHeapBusy()); > + JS_ASSERT(position_ >= allocStart_); > + > + if (position_ + size > chunkEnd_) { Just pushed bug 1017852, so you'll probably want to apply that here.
Attachment #8431712 - Flags: feedback+
Attachment #8431714 - Flags: feedback+
Couldn't build on OSX without also adding js::gc::Cell *cell to line 305 (little endian something something)
Flags: needinfo?(jcoppeard)
Yes, I broke little-endian 32 bit architectures.
Attachment #8433372 - Flags: review?(terrence)
Flags: needinfo?(jcoppeard)
Comment on attachment 8433372 [details] [diff] [review] 1.5 - Fix build error Review of attachment 8433372 [details] [diff] [review]: ----------------------------------------------------------------- r=me
Attachment #8433372 - Flags: review?(terrence) → review+
Attachment #8431712 - Attachment is obsolete: true
This reverts that change that removed the generic hashtable postbarrier function. This gets rid of the casting away of hashtable barriers before doing the rekeying, as we now need this create new store buffer entries where appropriate, i.e. when moving a value that contains nursery pointers. This was not possible before because all objects were evacuated from the nursery on minor GC.
We now need to allow postbarriers to add store buffer entries during minor GC.
Attachment #8439960 - Attachment is patch: true
This now passes all tests and try is green. Current octane benchmark results on linux with 16MB nursery, average of 10 runs, semispace results on the right: Richards: 22540.3 (10 0.6%) 22447.2 (10 0.7%) -0.4% DeltaBlue: 35849.1 (10 0.6%) 33636.8 (10 4.0%) -6.2% Crypto: 26765.1 (10 0.4%) 26802.5 (10 0.2%) 0.1% RayTrace: 84477.4 (10 1.1%) 82338.8 (10 7.5%) -2.5% EarleyBoyer: 33213.7 (10 0.5%) 29295.6 (10 1.3%) -11.8% RegExp: 3234.2 (10 1.3%) 3219.3 (10 0.5%) -0.5% Splay: 17577.2 (10 2.4%) 17490.3 (10 1.8%) -0.5% SplayLatency: 11985.4 (10 0.7%) 12016.4 (10 1.6%) 0.3% NavierStokes: 32826.2 (10 0.2%) 32834.3 (10 0.2%) 0.0% PdfJS: 19285.6 (10 1.6%) 20391.6 (10 1.1%) 5.7% Mandreel: 31807.1 (10 2.3%) 32055.6 (10 2.1%) 0.8% MandreelLatency: 41505.5 (10 4.2%) 42623.4 (10 3.5%) 2.7% Gameboy: 58851.7 (10 0.4%) 58754.2 (10 0.3%) -0.2% CodeLoad: 19922.7 (10 0.7%) 19829.5 (10 0.8%) -0.5% Box2D: 37498.3 (10 1.7%) 36924.9 (10 0.6%) -1.5% zlib: 85531.4 (10 0.5%) 85714.3 (10 0.6%) 0.2% Typescript: 28189.7 (10 3.0%) 27735.3 (10 1.3%) -1.6% Score (version 9): 27854.1 (10 0.8%) 27572.4 (10 0.7%) -1.0% And with current 16M nursery comparted to 32MB semispace nursery: Richards: 22540.3 (10 0.6%) 22510.7 (10 0.7%) -0.1% DeltaBlue: 35849.1 (10 0.6%) 33771.9 (10 4.8%) -5.8% Crypto: 26765.1 (10 0.4%) 26803.8 (10 0.2%) 0.1% RayTrace: 84477.4 (10 1.1%) 84595.8 (10 1.7%) 0.1% EarleyBoyer: 33213.7 (10 0.5%) 32809.7 (10 1.1%) -1.2% RegExp: 3234.2 (10 1.3%) 3094.6 (10 0.5%) -4.3% Splay: 17577.2 (10 2.4%) 17689.6 (10 1.4%) 0.6% SplayLatency: 11985.4 (10 0.7%) 12364.1 (10 0.8%) 3.2% NavierStokes: 32826.2 (10 0.2%) 32809.7 (10 0.2%) -0.1% PdfJS: 19285.6 (10 1.6%) 20226.0 (10 0.9%) 4.9% Mandreel: 31807.1 (10 2.3%) 32438.0 (10 0.4%) 2.0% MandreelLatency: 41505.5 (10 4.2%) 43503.2 (10 0.7%) 4.8% Gameboy: 58851.7 (10 0.4%) 58983.3 (10 0.3%) 0.2% CodeLoad: 19922.7 (10 0.7%) 19927.0 (10 0.6%) 0.0% Box2D: 37498.3 (10 1.7%) 36237.3 (10 1.4%) -3.4% zlib: 85531.4 (10 0.5%) 85366.3 (10 0.7%) -0.2% Typescript: 28189.7 (10 3.0%) 27250.3 (10 2.6%) -3.3% Score (version 9): 27854.1 (10 0.8%) 27803.5 (10 0.4%) -0.2%
I wasn't able to show that this gained us any performance over what we have already.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WONTFIX
Removing leave-open keyword from resolved bugs, per :sylvestre.
Keywords: leave-open
See Also: → 1787526
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: