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)

defect
Not set
normal

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.
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.