Bug 1147588 - Replace slots marking functions with TraceEdge; r=jonco

This commit is contained in:
Terrence Cole 2015-03-26 10:23:26 -07:00
parent 2e8bed2812
commit 20916f0bed
5 changed files with 7 additions and 29 deletions

View File

@ -1309,22 +1309,6 @@ gc::IsSlotMarked(HeapSlot* s)
return IsMarked(s);
}
void
gc::MarkSlot(JSTracer* trc, HeapSlot* s, const char* name)
{
trc->setTracingName(name);
MarkValueInternal(trc, s->unsafeGet());
}
void
gc::MarkArraySlots(JSTracer* trc, size_t len, HeapSlot* vec, const char* name)
{
for (size_t i = 0; i < len; ++i) {
trc->setTracingIndex(name, i);
MarkValueInternal(trc, vec[i].unsafeGet());
}
}
void
gc::MarkObjectSlots(JSTracer* trc, NativeObject* obj, uint32_t start, uint32_t nslots)
{

View File

@ -269,12 +269,6 @@ IsValueAboutToBeFinalizedFromAnyThread(Value* v);
bool
IsSlotMarked(HeapSlot* s);
void
MarkSlot(JSTracer* trc, HeapSlot* s, const char* name);
void
MarkArraySlots(JSTracer* trc, size_t len, HeapSlot* vec, const char* name);
void
MarkObjectSlots(JSTracer* trc, NativeObject* obj, uint32_t start, uint32_t nslots);

View File

@ -36,8 +36,8 @@ StoreBuffer::SlotsEdge::mark(JSTracer* trc) const
int32_t initLen = obj->getDenseInitializedLength();
int32_t clampedStart = Min(start_, initLen);
int32_t clampedEnd = Min(start_ + count_, initLen);
gc::MarkArraySlots(trc, clampedEnd - clampedStart,
obj->getDenseElements() + clampedStart, "element");
TraceRange(trc, clampedEnd - clampedStart,
static_cast<HeapSlot*>(obj->getDenseElements() + clampedStart), "element");
} else {
int32_t start = Min(uint32_t(start_), obj->slotSpan());
int32_t end = Min(uint32_t(start_) + count_, obj->slotSpan());

View File

@ -4094,10 +4094,10 @@ JSObject::markChildren(JSTracer* trc)
}
}
gc::MarkArraySlots(trc,
nobj->getDenseInitializedLength(),
nobj->getDenseElementsAllowCopyOnWrite(),
"objectElements");
TraceRange(trc,
nobj->getDenseInitializedLength(),
static_cast<HeapSlot*>(nobj->getDenseElementsAllowCopyOnWrite()),
"objectElements");
} while (false);
}
}

View File

@ -1177,7 +1177,7 @@ ArrayBufferViewObject::trace(JSTracer* trc, JSObject* objArg)
{
NativeObject* obj = &objArg->as<NativeObject>();
HeapSlot& bufSlot = obj->getReservedSlotRef(TypedArrayLayout::BUFFER_SLOT);
MarkSlot(trc, &bufSlot, "typedarray.buffer");
TraceEdge(trc, &bufSlot, "typedarray.buffer");
// Update obj's data pointer if it moved.
if (bufSlot.isObject()) {