Closed
Bug 531132
(TM:MIC)
Opened 15 years ago
Closed 13 years ago
Traversing a DOM on trace is hard due to megamorphism
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: bzbarsky, Unassigned)
Details
Attachments
(3 files)
Basic issue: different DOM node classes have different shapes. So any loop that walks a DOM and does stuff to them ends up branchy.
Testcases coming up. First one has only <div>s in the DOM and generates these jitstats:
recorder: started(1), aborted(0), completed(1), different header(0), trees trashed(0), slot promoted(0), unstable loop variable(0), breaks(0), returns(0), merged loop exits(0), unstableInnerCalls(0), blacklisted(0)
monitor: exits(1), timeouts(0), type mismatch(0), triggered(1), global mismatch(0), flushed(0)
Second one walks the HTML5 spec DOM (which is not that unreasonable as DOMs go in terms of size, but happens to be easier to de-script than most large pages) and generates these jitstats:
recorder: started(15), aborted(0), completed(109), different header(0), trees trashed(0), slot promoted(0), unstable loop variable(0), breaks(0), returns(0), merged loop exits(0), unstableInnerCalls(0), blacklisted(0)
monitor: exits(204), timeouts(6), type mismatch(0), triggered(210), global mismatch(5), flushed(5)
Reporter | ||
Comment 1•15 years ago
|
||
Reporter | ||
Comment 2•15 years ago
|
||
Comment 3•15 years ago
|
||
This may be a dup of bug 518487.
Boris, can you enable the DEBUG_notme code before TraceRecorder::guardShape and attach a shape-guard dump file? Thanks,
/be
Reporter | ||
Comment 4•15 years ago
|
||
Comment 5•15 years ago
|
||
This is not bug 518487, this is the bug where we should figure out how to despecialize megamorphic sites and not cycle through the PIC we'll have via fixing bug 518487, and perform just one generic, slower than shape-guarded "get" but faster than interpreter "get" for all node types.
/be
Alias: megamorphic
Summary: Traversing a DOM on trace is hard due to shape issues → Traversing a DOM on trace is hard due to megamorphism
Updated•15 years ago
|
Alias: megamorphic → TM:MIC
Comment 6•15 years ago
|
||
This looks like an important bug to get assigned and owned, at least in the deep thinking sense where you sleep on it, think about it outside of work, etc. The usual PIC techniques help, since PICs are really instrumentation devices more than inlining devices, and low cache hit rate with high cache test count means megamorphic callsite. So it may depend on the TM:PIC bug.
/be
Comment 7•13 years ago
|
||
Obsolete with the removal of tracejit.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → WONTFIX
Reporter | ||
Comment 8•13 years ago
|
||
Well, JM has similar (though less pronounced) issues: it'll end up with IC misses and slow stubcalls. Not sure there's anything we can do about that, though.
You need to log in
before you can comment on or make changes to this bug.
Description
•