Allocation is much slower when using non-default prototype objects.
Categories
(Core :: JavaScript Engine: JIT, defect)
Tracking
()
People
(Reporter: mbx, Assigned: shu)
Details
Attachments
(2 files, 2 obsolete files)
|
838 bytes,
application/x-javascript
|
Details | |
|
3.29 KB,
patch
|
bhackett1024
:
review+
|
Details | Diff | Splinter Review |
Comment 1•11 years ago
|
||
Comment 3•11 years ago
|
||
| Assignee | ||
Comment 4•11 years ago
|
||
| Assignee | ||
Comment 5•11 years ago
|
||
| Assignee | ||
Comment 6•11 years ago
|
||
Comment 7•11 years ago
|
||
| Assignee | ||
Comment 8•11 years ago
|
||
Comment 9•11 years ago
|
||
| Assignee | ||
Comment 10•11 years ago
|
||
| Assignee | ||
Updated•11 years ago
|
| Assignee | ||
Comment 11•11 years ago
|
||
Comment 12•11 years ago
|
||
| Assignee | ||
Comment 13•11 years ago
|
||
Comment 14•11 years ago
|
||
Comment 15•7 years ago
|
||
Comment 16•7 years ago
|
||
Comment 17•6 years ago
|
||
The leave-open keyword is there and there is no activity for 6 months.
:sdetar, maybe it's time to close this bug?
Comment 18•6 years ago
|
||
For what it's worth, the original testcase as filed here seems to be fixed: the times for the two versions are about the same.
That said, those times are about 3x slower than in Chrome...
Comment 19•6 years ago
|
||
(In reply to Boris Zbarsky [:bzbarsky, bz on IRC] from comment #18)
For what it's worth, the original testcase as filed here seems to be fixed: the times for the two versions are about the same.
That said, those times are about 3x slower than in Chrome...
Hm what I'm seeing here is that this is just testing empty loops now. Ion emits the following for the loop:
0x2a4c8738f955: 49 bb dc 97 a2 03 01 00 00 00 movabsq $0x103a297dc, %r11 ; imm = 0x103A297DC
0x2a4c8738f95f: 41 83 3b 00 cmpl $0x0, (%r11)
0x2a4c8738f963: 0f 85 71 07 00 00 jne 0x2a4c873900da
0x2a4c8738f969: 81 fe 00 04 00 00 cmpl $0x400, %esi ; imm = 0x400
0x2a4c8738f96f: 0f 8d 05 00 00 00 jge 0x2a4c8738f97a
0x2a4c8738f975: 83 c6 01 addl $0x1, %esi
0x2a4c8738f978: eb db jmp 0x2a4c8738f955
And d8 has:
0x1f8060032f0: 41 83 c3 01 addl $0x1, %r11d
0x1f8060032f4: 41 81 fb 00 04 00 00 cmpl $0x400, %r11d ; imm = 0x400
0x1f8060032fb: 0f 83 5f ff ff ff jae 0x1f806003260
0x1f806003301: 49 3b a5 c0 12 00 00 cmpq 0x12c0(%r13), %rsp
0x1f806003308: 77 e6 ja 0x1f8060032f0
0x1f80600330a: e9 a2 00 00 00 jmp 0x1f8060033b1
The interrupt check and order of operations is slightly different but overall it looks very similar.
Comment 20•6 years ago
|
||
Hmm. You're right; commenting out the allocations does not change the timing.
I guess the speed difference then (for the empty loops) might be something like spectre mitigations?
In any case, this bug as filed seems to be fixed.
Comment 21•6 years ago
|
||
(In reply to Boris Zbarsky [:bzbarsky, bz on IRC] from comment #20)
I guess the speed difference then (for the empty loops) might be something like spectre mitigations?
Their code is a bit more compact.. If we ever use Cranelift as Ion backend it would be easier to do micro-optimizations.
In any case, this bug as filed seems to be fixed.
Agreed.
Updated•6 years ago
|
Description
•