Closed
Bug 1344691
Opened 7 years ago
Closed 7 years ago
CacheIR: dense element stub should support element (re)allocation
Categories
(Core :: JavaScript Engine: JIT, enhancement)
Core
JavaScript Engine: JIT
Tracking
()
RESOLVED
FIXED
mozilla55
Tracking | Status | |
---|---|---|
firefox55 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
8.12 KB,
patch
|
evilpie
:
review+
|
Details | Diff | Splinter Review |
We use an IC stub for adding a dense element, but this stub checks the capacity and will fail if we need to (re)allocate elements. The attached patch fixes this to call a helper function to reallocate instead of failing the stub. I need this for bug 1328140 to avoid regressing Talos CanvasMark, but it's nice to have anyway. This also works when adding the first dense element. The micro-benchmark below improves from 3 seconds to 0.3 seconds and I see a similar change with --no-ion. function f() { var t = new Date; for (var i=0; i<10000000; i++) { // Int32Array to force an IC in Ion. var a = (i == 100) ? new Int32Array(1) : {}; a[0] = i; } print(new Date - t); } f();
Attachment #8843934 -
Flags: review?(evilpies)
Comment 1•7 years ago
|
||
Comment on attachment 8843934 [details] [diff] [review] Patch Review of attachment 8843934 [details] [diff] [review]: ----------------------------------------------------------------- Great, that is a huge perf difference. I am pretty sure I have seen cases where adding the first element to some object would help. Maybe just add this benchmark as a test to jit-test/cacheir? ::: js/src/jit/BaselineCacheIRCompiler.cpp @@ +1122,3 @@ > Address capacity(scratch, ObjectElements::offsetOfCapacity()); > + masm.branch32(Assembler::Above, capacity, index, &capacityOk); > + I think we can just check ObjectElements::NONWRITABLE_ARRAY_LENGTH here, instead of doing this in the function.
Attachment #8843934 -
Flags: review?(evilpies) → review+
Pushed by jandemooij@gmail.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/d80e4bee4db1 Make add-dense-element stub support element (re)allocation. r=evilpie
Assignee | ||
Comment 3•7 years ago
|
||
(In reply to Tom Schuster [:evilpie] from comment #1) > Maybe just add this benchmark as a test to jit-test/cacheir? Done. > I think we can just check ObjectElements::NONWRITABLE_ARRAY_LENGTH here, > instead of doing this in the function. Good point, that should be a little faster.
Comment 4•7 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/d80e4bee4db1
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
status-firefox55:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
You need to log in
before you can comment on or make changes to this bug.
Description
•