Bug 1153959 - Use RAII to manage tracing details; r=jonco
This commit is contained in:
@@ -3490,13 +3490,21 @@ js::ToObjectSlow(JSContext* cx, JS::HandleValue val, bool reportScanStack)
|
||||
return PrimitiveToObject(cx, val);
|
||||
}
|
||||
|
||||
void
|
||||
js::GetObjectSlotName(JSTracer* trc, char* buf, size_t bufsize)
|
||||
class GetObjectSlotNameFunctor : public JS::CallbackTracer::ContextFunctor
|
||||
{
|
||||
MOZ_ASSERT(trc->debugPrinter() == GetObjectSlotName);
|
||||
JSObject* obj;
|
||||
|
||||
JSObject* obj = (JSObject*)trc->debugPrintArg();
|
||||
uint32_t slot = uint32_t(trc->debugPrintIndex());
|
||||
public:
|
||||
explicit GetObjectSlotNameFunctor(JSObject* ctx) : obj(ctx) {}
|
||||
virtual void operator()(JS::CallbackTracer* trc, char* buf, size_t bufsize) override;
|
||||
};
|
||||
|
||||
void
|
||||
GetObjectSlotNameFunctor::operator()(JS::CallbackTracer* trc, char* buf, size_t bufsize)
|
||||
{
|
||||
MOZ_ASSERT(trc->contextIndex() != JS::CallbackTracer::InvalidIndex);
|
||||
|
||||
uint32_t slot = uint32_t(trc->contextIndex());
|
||||
|
||||
Shape* shape;
|
||||
if (obj->isNative()) {
|
||||
@@ -4069,7 +4077,11 @@ JSObject::markChildren(JSTracer* trc)
|
||||
|
||||
TraceEdge(trc, &nobj->shape_, "shape");
|
||||
|
||||
MarkObjectSlots(trc, nobj, 0, nobj->slotSpan());
|
||||
{
|
||||
GetObjectSlotNameFunctor func(nobj);
|
||||
JS::AutoTracingDetails ctx(trc, func);
|
||||
MarkObjectSlots(trc, nobj, 0, nobj->slotSpan());
|
||||
}
|
||||
|
||||
do {
|
||||
if (nobj->denseElementsAreCopyOnWrite()) {
|
||||
|
||||
Reference in New Issue
Block a user