Closed
Bug 1235852
Opened 9 years ago
Closed 9 years ago
Convert Gecko's Hodgepodge of Unbarriered tracing to TraceRoot and TraceManuallyBarrieredEdge
Categories
(Core :: JavaScript: GC, defect)
Core
JavaScript: GC
Tracking
()
RESOLVED
DUPLICATE
of bug 1235923
Tracking | Status | |
---|---|---|
firefox46 | --- | affected |
People
(Reporter: terrence, Assigned: terrence)
References
(Blocks 1 open bug)
Details
Looking at Gecko's use of JS_CallUnbarrieredFooTracer, it seems that many of these uses are for tracing roots, but we are losing the root marking assertions by using the unbarriered trace functions. We should fix this as we convert to a new C++ focused API.
The primary internal and external edge tracing functions have different type signatures: JS::TraceEdge takes JS::Heap<T> and js::TraceEdge takes a WriteBarrieredBase<T>, so there is no ambiguity between the JS:: and js:: namespaces, even when we don't prefix. Unfortunately, both TraceRoot and TraceManuallyBarrieredEdge take raw pointers, so would force us to qualify all references.
Instead, I'd like to call them something different externally. After discussion with Olli on IRC, we settled on JS::UnsafeTraceRoot and JS::UnsafeTraceManuallyBarrieredEdge, to provide additional signaling that use of these is abnormal.
Assignee | ||
Comment 1•9 years ago
|
||
Whoops, forgot that I'd already opened this before refiling. The other bug already has patches, so let's keep that one.
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•