Closed
Bug 854626
Opened 11 years ago
Closed 11 years ago
Make ErrorResult pass the rooting analysis
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
People
(Reporter: evilpie, Unassigned)
References
(Blocks 1 open bug)
Details
The rooting analysis goes crazy because of the unioned "JS::Value mJSException". But we also probably can't accept just always rooting it.
Updated•11 years ago
|
Blocks: ParisBindings
Comment 1•11 years ago
|
||
Indeed, having anything in mJSException is a rare case and the cost of rooting/unrooting this random slot no one will ever write to normally is not acceptable. If we ignore the rooting analysis for the moment, is the current behavior correct? I assume it's not, with a moving GC, right? What would correct behavior be?
Comment 2•11 years ago
|
||
So for example, I could almost certainly just store a "double" and reinterpret_cast it to JS::Value as needed. But that would obfuscate the code and not really help things be any more rooted, right?
Comment 3•11 years ago
|
||
If these are never copied around, we could manually root the object using one of ye olde rooting APIs if it gets an exception put into it, and unroot in the destructor. One of the old rooting APIs even does some refcounting, though maybe that's going away.
Comment 4•11 years ago
|
||
ErrorResult objects are never copied around. Note the private-and-deleted copy constructor and lack of relevant operator=. Setting the mJSException (via ThrowJSException) already calls JS_AddNamedValueRoot on &mJSException. ReportJSException calls JS_RemoveValueRoot. The destructor asserts that WouldReportJSException has been called; the contract is that any code that plans to call ReportJSException must also call WouldReportJSException (even if there is no exception, which is important!). I _did_ try to make this stuf sane. ;)
Updated•11 years ago
|
Summary: Figure out what to do about ErrorResult → Make ErrorResult pass the rooting analysis
Reporter | ||
Comment 5•11 years ago
|
||
This was fixed, otherwise we wouldn't have 3 hazards right now.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Assignee | ||
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•