Closed
Bug 701415
Opened 13 years ago
Closed 13 years ago
Generate detailed JS information for cycle collector dumps in opt builds
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
FIXED
mozilla15
People
(Reporter: mccr8, Assigned: mccr8)
References
Details
Attachments
(1 file, 3 obsolete files)
9.86 KB,
patch
|
billm
:
review+
|
Details | Diff | Splinter Review |
Currently, detailed information in JS_TraceChildren is only generated in debug builds. Bill says that this can be done without impacting the GC because the GC and CC use different mark paths. We still need to be careful about not doing a lot of string building on non-dumping CCs, but that can probably be done by setting some kind of flag in the tracer. Checking a boolean flag in a bunch of places probably isn't that bad for the CC.
Assignee | ||
Comment 1•13 years ago
|
||
dbaron's unlanded patch 1 in Bug 652056 looks like it may do some or all of what I want to do in here.
Assignee | ||
Comment 2•13 years ago
|
||
Part 1 of this patch is to grab the values set by the JS engine's debug printer, like dbaron's patch (though it can be made simpler now that I added a JS API function to grab the edge value from a printer). However, the setting of printers are actually disabled in non-DEBUG builds, by setting JS_SET_TRACING_DETAILS to be a no-op.
Bill, it looks to me like these macros are called in the GC's marking. I guess I could add all 3 arguments to the tracer to Mark, and then only set them once we test (IS_GC_MARKING_TRACER(trc)) but that seems kind of gross. Do you have any ideas?
(In reply to Andrew McCreight [:mccr8] from comment #2)
> Bill, it looks to me like these macros are called in the GC's marking. I
> guess I could add all 3 arguments to the tracer to Mark, and then only set
> them once we test (IS_GC_MARKING_TRACER(trc)) but that seems kind of gross.
> Do you have any ideas?
I think all we need is to remove the DEBUG-only stuff in JS_SET_TRACING_DETAILS and at the end of Mark. Most marking is done off these paths, so I don't expect this would hurt performance. But we should still check.
Assignee | ||
Comment 4•13 years ago
|
||
Assignee | ||
Comment 5•13 years ago
|
||
Attachment #588567 -
Attachment is obsolete: true
Assignee | ||
Comment 6•13 years ago
|
||
Attachment #596478 -
Attachment is obsolete: true
Assignee | ||
Comment 7•13 years ago
|
||
Attachment #596479 -
Attachment is obsolete: true
I just tested earley-boyer and splay with and without this patch. It seems to be faster when the debug information is included. That's odd, but I think it means we shouldn't worry about performance.
Assignee | ||
Comment 9•13 years ago
|
||
Great, thanks for checking!
Assignee | ||
Updated•13 years ago
|
Assignee: general → continuation
Assignee | ||
Comment 10•13 years ago
|
||
Hmm. I guess it would make sense to enable DumpHeapComplete, too. Maybe I'll do that in a follow up patch, as this is probably close to being landable.
Assignee | ||
Comment 11•13 years ago
|
||
Comment on attachment 622567 [details] [diff] [review]
unbitrotted
Try run looked fine, and I checked that the CC dump did have edge names.
Attachment #622567 -
Flags: review?(wmccloskey)
Comment on attachment 622567 [details] [diff] [review]
unbitrotted
Review of attachment 622567 [details] [diff] [review]:
-----------------------------------------------------------------
Looks good. I also just tried the JS realtime raytracer benchmark, and the mark times don't seem to be affected by this.
While you're touching this code, could you change the all PrintX names to GetX?
Attachment #622567 -
Flags: review?(wmccloskey) → review+
Assignee | ||
Comment 13•13 years ago
|
||
I changed PrintX names to GetX.
https://hg.mozilla.org/integration/mozilla-inbound/rev/60e143614688
Target Milestone: --- → mozilla15
Comment 14•13 years ago
|
||
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•