void JSPropertyNameIterator::visitChildren(JSCell* cell, SlotVisitor& visitor) { JSPropertyNameIterator* thisObject = static_cast<JSPropertyNameIterator*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); visitor.appendValues(thisObject->m_jsStrings.get(), thisObject->m_jsStringsSize); if (thisObject->m_cachedPrototypeChain) visitor.append(&thisObject->m_cachedPrototypeChain); }
void JSActivation::visitChildren(JSCell* cell, SlotVisitor& visitor) { JSActivation* thisObject = static_cast<JSActivation*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); Base::visitChildren(thisObject, visitor); // No need to mark our registers if they're still in the RegisterFile. WriteBarrier<Unknown>* registerArray = thisObject->m_registerArray.get(); if (!registerArray) return; visitor.appendValues(registerArray, thisObject->m_numParametersMinusThis); // Skip the call frame, which sits between the parameters and vars. visitor.appendValues(registerArray + thisObject->m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize, thisObject->m_numCapturedVars); }
void JSActivation::visitChildren(JSCell* cell, SlotVisitor& visitor) { JSActivation* thisObject = jsCast<JSActivation*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); Base::visitChildren(thisObject, visitor); // No need to mark our registers if they're still in the RegisterFile. WriteBarrier<Unknown>* registerArray = thisObject->m_registerArray.get(); if (!registerArray) return; visitor.appendValues(registerArray, thisObject->m_numCapturedArgs); // Skip 'this' and call frame. visitor.appendValues(registerArray + CallFrame::offsetFor(thisObject->m_numCapturedArgs + 1), thisObject->m_numCapturedVars); }
void Arguments::visitChildren(SlotVisitor& visitor) { ASSERT_GC_OBJECT_INHERITS(this, &s_info); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(structure()->typeInfo().overridesVisitChildren()); JSObject::visitChildren(visitor); if (d->registerArray) visitor.appendValues(d->registerArray.get(), d->numParameters); if (d->extraArguments) { unsigned numExtraArguments = d->numArguments - d->numParameters; visitor.appendValues(d->extraArguments, numExtraArguments); } visitor.append(&d->callee); if (d->activation) visitor.append(&d->activation); }
void Arguments::visitChildren(JSCell* cell, SlotVisitor& visitor) { Arguments* thisObject = static_cast<Arguments*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); JSObject::visitChildren(thisObject, visitor); if (thisObject->d->registerArray) visitor.appendValues(thisObject->d->registerArray.get(), thisObject->d->numParameters); if (thisObject->d->extraArguments) { unsigned numExtraArguments = thisObject->d->numArguments - thisObject->d->numParameters; visitor.appendValues(thisObject->d->extraArguments, numExtraArguments); } visitor.append(&thisObject->d->callee); if (thisObject->d->activation) visitor.append(&thisObject->d->activation); }
void Arguments::visitChildren(JSCell* cell, SlotVisitor& visitor) { Arguments* thisObject = jsCast<Arguments*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); JSObject::visitChildren(thisObject, visitor); if (thisObject->m_registerArray) visitor.appendValues(thisObject->m_registerArray.get(), thisObject->m_numArguments); visitor.append(&thisObject->m_callee); visitor.append(&thisObject->m_activation); }
void UnlinkedCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor) { UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(&thisObject->m_symbolTable); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionDecls.begin(), end = thisObject->m_functionDecls.end(); ptr != end; ++ptr) visitor.append(ptr); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionExprs.begin(), end = thisObject->m_functionExprs.end(); ptr != end; ++ptr) visitor.append(ptr); visitor.appendValues(thisObject->m_constantRegisters.data(), thisObject->m_constantRegisters.size()); if (thisObject->m_rareData) { for (size_t i = 0, end = thisObject->m_rareData->m_regexps.size(); i != end; i++) visitor.append(&thisObject->m_rareData->m_regexps[i]); } }
void Arguments::visitChildren(JSCell* cell, SlotVisitor& visitor) { Arguments* thisObject = jsCast<Arguments*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); JSObject::visitChildren(thisObject, visitor); if (thisObject->isTornOff()) visitor.appendValues(&thisObject->registerArray(), thisObject->m_numArguments); if (thisObject->m_slowArgumentData) { visitor.copyLater(thisObject, ArgumentsSlowArgumentDataCopyToken, thisObject->m_slowArgumentData.get(), SlowArgumentData::sizeForNumArguments(thisObject->m_numArguments)); } visitor.append(&thisObject->m_callee); visitor.append(&thisObject->m_lexicalEnvironment); }
void UnlinkedCodeBlock::visitChildren(JSCell* cell, SlotVisitor& visitor) { UnlinkedCodeBlock* thisObject = jsCast<UnlinkedCodeBlock*>(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); Base::visitChildren(thisObject, visitor); visitor.append(&thisObject->m_symbolTable); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionDecls.begin(), end = thisObject->m_functionDecls.end(); ptr != end; ++ptr) visitor.append(ptr); for (FunctionExpressionVector::iterator ptr = thisObject->m_functionExprs.begin(), end = thisObject->m_functionExprs.end(); ptr != end; ++ptr) visitor.append(ptr); visitor.appendValues(thisObject->m_constantRegisters.data(), thisObject->m_constantRegisters.size()); if (thisObject->m_rareData) { for (size_t i = 0, end = thisObject->m_rareData->m_regexps.size(); i != end; i++) visitor.append(&thisObject->m_rareData->m_regexps[i]); } }
void MapData::visitChildren(JSCell* cell, SlotVisitor& visitor) { Base::visitChildren(cell, visitor); MapData* thisObject = jsCast<MapData*>(cell); Entry* entries = thisObject->m_entries; if (!entries) return; size_t size = thisObject->m_size; if (thisObject->m_deletedCount) { for (size_t i = 0; i < size; i++) { if (!entries[i].key) continue; visitor.append(&entries[i].key); visitor.append(&entries[i].value); } } else visitor.appendValues(&entries[0].key, size * (sizeof(Entry) / sizeof(WriteBarrier<Unknown>))); visitor.copyLater(thisObject, MapBackingStoreCopyToken, entries, thisObject->capacityInBytes()); }