Changeset 84556 in webkit
- Timestamp:
- Apr 21, 2011 4:08:15 PM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 120 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSCallbackObject.h
r84052 r84556 69 69 } 70 70 71 void markChildren(MarkStack& markStack)71 void visitChildren(SlotVisitor& visitor) 72 72 { 73 73 if (!m_privateProperties) 74 74 return; 75 m_privateProperties-> markChildren(markStack);75 m_privateProperties->visitChildren(visitor); 76 76 } 77 77 … … 98 98 } 99 99 100 void markChildren(MarkStack& markStack)100 void visitChildren(SlotVisitor& visitor) 101 101 { 102 102 for (PrivatePropertyMap::iterator ptr = m_propertyMap.begin(); ptr != m_propertyMap.end(); ++ptr) { 103 103 if (ptr->second) 104 markStack.append(&ptr->second);104 visitor.append(&ptr->second); 105 105 } 106 106 } … … 150 150 151 151 protected: 152 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesHasInstance | Overrides MarkChildren | OverridesGetPropertyNames | Base::StructureFlags;152 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesHasInstance | OverridesVisitChildren | OverridesGetPropertyNames | Base::StructureFlags; 153 153 154 154 private: … … 173 173 virtual CallType getCallData(CallData&); 174 174 175 virtual void markChildren(MarkStack& markStack)176 { 177 Base:: markChildren(markStack);178 m_callbackObjectData-> markChildren(markStack);175 virtual void visitChildren(SlotVisitor& visitor) 176 { 177 Base::visitChildren(visitor); 178 m_callbackObjectData->visitChildren(visitor); 179 179 } 180 180 -
trunk/Source/JavaScriptCore/ChangeLog
r84550 r84556 1 2011-04-21 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Geoffrey Garen. 4 5 Start moving to a general visitor pattern for GC traversal 6 https://bugs.webkit.org/show_bug.cgi?id=59141 7 8 This is just a rename: 9 markChildren -> visitChildren 10 markAggregate -> visitAggregate 11 markStack -> visitor 12 MarkStack -> typedef'd to SlotVisitor 13 14 * API/JSCallbackObject.h: 15 (JSC::JSCallbackObjectData::visitChildren): 16 (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren): 17 (JSC::JSCallbackObject::visitChildren): 18 * JavaScriptCore.exp: 19 * bytecode/CodeBlock.cpp: 20 (JSC::CodeBlock::visitStructures): 21 (JSC::EvalCodeCache::visitAggregate): 22 (JSC::CodeBlock::visitAggregate): 23 * bytecode/CodeBlock.h: 24 * bytecode/EvalCodeCache.h: 25 * bytecode/Instruction.h: 26 (JSC::PolymorphicAccessStructureList::visitAggregate): 27 * bytecode/StructureStubInfo.cpp: 28 (JSC::StructureStubInfo::visitAggregate): 29 * bytecode/StructureStubInfo.h: 30 * debugger/DebuggerActivation.cpp: 31 (JSC::DebuggerActivation::visitChildren): 32 * debugger/DebuggerActivation.h: 33 * heap/HandleHeap.cpp: 34 (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): 35 (JSC::HandleHeap::markStrongHandles): 36 (JSC::HandleHeap::markWeakHandles): 37 * heap/HandleHeap.h: 38 * heap/HandleStack.cpp: 39 (JSC::HandleStack::mark): 40 * heap/HandleStack.h: 41 * heap/Heap.cpp: 42 (JSC::Heap::markProtectedObjects): 43 (JSC::Heap::markTempSortVectors): 44 (JSC::Heap::markRoots): 45 * heap/Heap.h: 46 * heap/MarkStack.cpp: 47 (JSC::MarkStack::visitChildren): 48 (JSC::MarkStack::drain): 49 * heap/MarkStack.h: 50 (JSC::HeapRootVisitor::HeapRootVisitor): 51 (JSC::HeapRootVisitor::mark): 52 (JSC::HeapRootVisitor::visitor): 53 * heap/MarkedSpace.h: 54 * runtime/ArgList.cpp: 55 (JSC::MarkedArgumentBuffer::markLists): 56 * runtime/ArgList.h: 57 * runtime/Arguments.cpp: 58 (JSC::Arguments::visitChildren): 59 * runtime/Arguments.h: 60 * runtime/Executable.cpp: 61 (JSC::EvalExecutable::visitChildren): 62 (JSC::ProgramExecutable::visitChildren): 63 (JSC::FunctionExecutable::visitChildren): 64 * runtime/Executable.h: 65 * runtime/GetterSetter.cpp: 66 (JSC::GetterSetter::visitChildren): 67 * runtime/GetterSetter.h: 68 (JSC::GetterSetter::createStructure): 69 * runtime/JSAPIValueWrapper.h: 70 (JSC::JSAPIValueWrapper::createStructure): 71 * runtime/JSActivation.cpp: 72 (JSC::JSActivation::visitChildren): 73 * runtime/JSActivation.h: 74 * runtime/JSArray.cpp: 75 (JSC::JSArray::visitChildren): 76 * runtime/JSArray.h: 77 (JSC::JSArray::visitDirect): 78 * runtime/JSCell.h: 79 (JSC::JSCell::JSCell::visitChildren): 80 * runtime/JSFunction.cpp: 81 (JSC::JSFunction::visitChildren): 82 * runtime/JSFunction.h: 83 * runtime/JSGlobalObject.cpp: 84 (JSC::visitIfNeeded): 85 (JSC::JSGlobalObject::visitChildren): 86 * runtime/JSGlobalObject.h: 87 * runtime/JSONObject.cpp: 88 * runtime/JSObject.cpp: 89 (JSC::JSObject::visitChildren): 90 * runtime/JSObject.h: 91 (JSC::JSObject::visitDirect): 92 * runtime/JSPropertyNameIterator.cpp: 93 (JSC::JSPropertyNameIterator::visitChildren): 94 * runtime/JSPropertyNameIterator.h: 95 (JSC::JSPropertyNameIterator::createStructure): 96 * runtime/JSStaticScopeObject.cpp: 97 (JSC::JSStaticScopeObject::visitChildren): 98 * runtime/JSStaticScopeObject.h: 99 * runtime/JSTypeInfo.h: 100 (JSC::TypeInfo::TypeInfo): 101 (JSC::TypeInfo::overridesVisitChildren): 102 * runtime/JSWrapperObject.cpp: 103 (JSC::JSWrapperObject::visitChildren): 104 * runtime/JSWrapperObject.h: 105 * runtime/JSZombie.h: 106 (JSC::JSZombie::visitChildren): 107 * runtime/NativeErrorConstructor.cpp: 108 (JSC::NativeErrorConstructor::visitChildren): 109 * runtime/NativeErrorConstructor.h: 110 * runtime/RegExpObject.cpp: 111 (JSC::RegExpObject::visitChildren): 112 * runtime/RegExpObject.h: 113 * runtime/ScopeChain.cpp: 114 (JSC::ScopeChainNode::visitChildren): 115 * runtime/ScopeChain.h: 116 * runtime/SmallStrings.cpp: 117 (JSC::SmallStrings::visitChildren): 118 * runtime/SmallStrings.h: 119 * runtime/Structure.cpp: 120 (JSC::Structure::Structure): 121 (JSC::Structure::visitChildren): 122 * runtime/Structure.h: 123 * runtime/StructureChain.cpp: 124 (JSC::StructureChain::visitChildren): 125 * runtime/StructureChain.h: 126 (JSC::StructureChain::createStructure): 127 1 128 2011-04-21 Sheriff Bot <webkit.review.bot@gmail.com> 2 129 -
trunk/Source/JavaScriptCore/JavaScriptCore.exp
r84052 r84556 157 157 __ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj 158 158 __ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj 159 __ZN3JSC14JSGlobalObject1 2markChildrenERNS_9MarkStackE159 __ZN3JSC14JSGlobalObject13visitChildrenERNS_9MarkStackE 160 160 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj 161 161 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE … … 169 169 __ZN3JSC14TimeoutChecker5resetEv 170 170 __ZN3JSC14throwTypeErrorEPNS_9ExecStateE 171 __ZN3JSC15JSWrapperObject1 2markChildrenERNS_9MarkStackE171 __ZN3JSC15JSWrapperObject13visitChildrenERNS_9MarkStackE 172 172 __ZN3JSC15WeakHandleOwner26isReachableFromOpaqueRootsENS_6HandleINS_7UnknownEEEPvRNS_9MarkStackE 173 173 __ZN3JSC15WeakHandleOwner8finalizeENS_6HandleINS_7UnknownEEEPv … … 253 253 __ZN3JSC6RegExp6createEPNS_12JSGlobalDataERKNS_7UStringENS_11RegExpFlagsE 254 254 __ZN3JSC6RegExpD1Ev 255 __ZN3JSC7JSArray1 2markChildrenERNS_9MarkStackE255 __ZN3JSC7JSArray13visitChildrenERNS_9MarkStackE 256 256 __ZN3JSC7JSArray15setSubclassDataEPv 257 257 __ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE … … 285 285 __ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE 286 286 __ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE 287 __ZN3JSC8JSObject1 2markChildrenERNS_9MarkStackE287 __ZN3JSC8JSObject13visitChildrenERNS_9MarkStackE 288 288 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE 289 289 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj … … 307 307 __ZN3JSC8JSObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE 308 308 __ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE 309 __ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE 309 __ZN3JSC8JSObject3putEPNS_9ExecStateEjNS_7JSValueE 310 310 __ZN3JSC8JSObject6s_infoE 311 311 __ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
r84052 r84556 238 238 ?lookupGetter@JSObject@JSC@@UAE?AVJSValue@2@PAVExecState@2@ABVIdentifier@2@@Z 239 239 ?lookupSetter@JSObject@JSC@@UAE?AVJSValue@2@PAVExecState@2@ABVIdentifier@2@@Z 240 ? markChildren@JSGlobalObject@JSC@@UAEXAAVMarkStack@2@@Z241 ? markChildren@JSObject@JSC@@UAEXAAVMarkStack@2@@Z242 ? markChildren@JSWrapperObject@JSC@@EAEXAAVMarkStack@2@@Z243 ? markChildren@ScopeChainNode@JSC@@UAEXAAVMarkStack@2@@Z240 ?visitChildren@JSGlobalObject@JSC@@UAEXAAVMarkStack@2@@Z 241 ?visitChildren@JSObject@JSC@@UAEXAAVMarkStack@2@@Z 242 ?visitChildren@JSWrapperObject@JSC@@EAEXAAVMarkStack@2@@Z 243 ?visitChildren@ScopeChainNode@JSC@@UAEXAAVMarkStack@2@@Z 244 244 ?materializePropertyMap@Structure@JSC@@AAEXAAVJSGlobalData@2@@Z 245 245 ?monthFromDayInYear@WTF@@YAHH_N@Z -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r84052 r84556 1401 1401 } 1402 1402 1403 void CodeBlock:: markStructures(MarkStack& markStack, Instruction* vPC) const1403 void CodeBlock::visitStructures(SlotVisitor& visitor, Instruction* vPC) const 1404 1404 { 1405 1405 Interpreter* interpreter = m_globalData->interpreter; 1406 1406 1407 1407 if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_self) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_self)) { 1408 markStack.append(&vPC[4].u.structure);1408 visitor.append(&vPC[4].u.structure); 1409 1409 return; 1410 1410 } 1411 1411 if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_proto) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_proto)) { 1412 markStack.append(&vPC[4].u.structure);1413 markStack.append(&vPC[5].u.structure);1412 visitor.append(&vPC[4].u.structure); 1413 visitor.append(&vPC[5].u.structure); 1414 1414 return; 1415 1415 } 1416 1416 if (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_getter_chain) || vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_chain)) { 1417 markStack.append(&vPC[4].u.structure);1418 markStack.append(&vPC[5].u.structureChain);1417 visitor.append(&vPC[4].u.structure); 1418 visitor.append(&vPC[5].u.structureChain); 1419 1419 return; 1420 1420 } 1421 1421 if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_transition)) { 1422 markStack.append(&vPC[4].u.structure);1423 markStack.append(&vPC[5].u.structure);1424 markStack.append(&vPC[6].u.structureChain);1422 visitor.append(&vPC[4].u.structure); 1423 visitor.append(&vPC[5].u.structure); 1424 visitor.append(&vPC[6].u.structureChain); 1425 1425 return; 1426 1426 } 1427 1427 if (vPC[0].u.opcode == interpreter->getOpcode(op_put_by_id_replace)) { 1428 markStack.append(&vPC[4].u.structure);1428 visitor.append(&vPC[4].u.structure); 1429 1429 return; 1430 1430 } 1431 1431 if (vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global) || vPC[0].u.opcode == interpreter->getOpcode(op_resolve_global_dynamic)) { 1432 1432 if (vPC[3].u.structure) 1433 markStack.append(&vPC[3].u.structure);1433 visitor.append(&vPC[3].u.structure); 1434 1434 return; 1435 1435 } … … 1441 1441 || (vPC[0].u.opcode == interpreter->getOpcode(op_get_by_id_custom_self_list))) { 1442 1442 PolymorphicAccessStructureList* polymorphicStructures = vPC[4].u.polymorphicStructures; 1443 polymorphicStructures-> markAggregate(markStack, vPC[5].u.operand);1443 polymorphicStructures->visitAggregate(visitor, vPC[5].u.operand); 1444 1444 delete polymorphicStructures; 1445 1445 return; … … 1450 1450 } 1451 1451 1452 void EvalCodeCache:: markAggregate(MarkStack& markStack)1452 void EvalCodeCache::visitAggregate(SlotVisitor& visitor) 1453 1453 { 1454 1454 EvalCacheMap::iterator end = m_cacheMap.end(); 1455 1455 for (EvalCacheMap::iterator ptr = m_cacheMap.begin(); ptr != end; ++ptr) 1456 markStack.append(&ptr->second);1457 } 1458 1459 void CodeBlock:: markAggregate(MarkStack& markStack)1460 { 1461 markStack.append(&m_globalObject);1462 markStack.append(&m_ownerExecutable);1456 visitor.append(&ptr->second); 1457 } 1458 1459 void CodeBlock::visitAggregate(SlotVisitor& visitor) 1460 { 1461 visitor.append(&m_globalObject); 1462 visitor.append(&m_ownerExecutable); 1463 1463 if (m_rareData) 1464 m_rareData->m_evalCodeCache. markAggregate(markStack);1465 markStack.appendValues(m_constantRegisters.data(), m_constantRegisters.size());1464 m_rareData->m_evalCodeCache.visitAggregate(visitor); 1465 visitor.appendValues(m_constantRegisters.data(), m_constantRegisters.size()); 1466 1466 for (size_t i = 0; i < m_functionExprs.size(); ++i) 1467 markStack.append(&m_functionExprs[i]);1467 visitor.append(&m_functionExprs[i]); 1468 1468 for (size_t i = 0; i < m_functionDecls.size(); ++i) 1469 markStack.append(&m_functionDecls[i]);1469 visitor.append(&m_functionDecls[i]); 1470 1470 #if ENABLE(JIT_OPTIMIZE_CALL) 1471 1471 for (unsigned i = 0; i < numberOfCallLinkInfos(); ++i) 1472 1472 if (callLinkInfo(i).isLinked()) 1473 markStack.append(&callLinkInfo(i).callee);1473 visitor.append(&callLinkInfo(i).callee); 1474 1474 #endif 1475 1475 #if ENABLE(INTERPRETER) 1476 1476 for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i) 1477 markStructures( markStack, &m_instructions[m_propertyAccessInstructions[i]]);1477 markStructures(visitor, &m_instructions[m_propertyAccessInstructions[i]]); 1478 1478 #endif 1479 1479 #if ENABLE(JIT) 1480 1480 for (size_t size = m_globalResolveInfos.size(), i = 0; i < size; ++i) { 1481 1481 if (m_globalResolveInfos[i].structure) 1482 markStack.append(&m_globalResolveInfos[i].structure);1482 visitor.append(&m_globalResolveInfos[i].structure); 1483 1483 } 1484 1484 1485 1485 for (size_t size = m_structureStubInfos.size(), i = 0; i < size; ++i) 1486 m_structureStubInfos[i]. markAggregate(markStack);1486 m_structureStubInfos[i].visitAggregate(visitor); 1487 1487 1488 1488 for (size_t size = m_methodCallLinkInfos.size(), i = 0; i < size; ++i) { 1489 1489 if (m_methodCallLinkInfos[i].cachedStructure) { 1490 1490 // Both members must be filled at the same time 1491 markStack.append(&m_methodCallLinkInfos[i].cachedStructure);1491 visitor.append(&m_methodCallLinkInfos[i].cachedStructure); 1492 1492 ASSERT(!!m_methodCallLinkInfos[i].cachedPrototypeStructure); 1493 markStack.append(&m_methodCallLinkInfos[i].cachedPrototypeStructure);1493 visitor.append(&m_methodCallLinkInfos[i].cachedPrototypeStructure); 1494 1494 } 1495 1495 } -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.h
r84052 r84556 212 212 virtual ~CodeBlock(); 213 213 214 void markAggregate(MarkStack&);214 void visitAggregate(SlotVisitor&); 215 215 216 216 static void dumpStatistics(); … … 482 482 void printPutByIdOp(ExecState*, int location, Vector<Instruction>::const_iterator&, const char* op) const; 483 483 #endif 484 void markStructures(MarkStack&, Instruction* vPC) const;484 void visitStructures(SlotVisitor&, Instruction* vPC) const; 485 485 486 486 void createRareDataIfNecessary() -
trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h
r80598 r84556 43 43 44 44 class MarkStack; 45 typedef MarkStack SlotVisitor; 45 46 46 47 class EvalCodeCache { … … 68 69 bool isEmpty() const { return m_cacheMap.isEmpty(); } 69 70 70 void markAggregate(MarkStack&);71 void visitAggregate(SlotVisitor&); 71 72 72 73 private: -
trunk/Source/JavaScriptCore/bytecode/Instruction.h
r84052 r84556 108 108 } 109 109 110 void markAggregate(MarkStack& markStack, int count)110 void visitAggregate(SlotVisitor& visitor, int count) 111 111 { 112 112 for (int i = 0; i < count; ++i) { … … 114 114 ASSERT(info.base); 115 115 116 markStack.append(&info.base);116 visitor.append(&info.base); 117 117 if (info.u.proto && !info.isChain) 118 markStack.append(&info.u.proto);118 visitor.append(&info.u.proto); 119 119 if (info.u.chain && info.isChain) 120 markStack.append(&info.u.chain);120 visitor.append(&info.u.chain); 121 121 } 122 122 } -
trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
r84052 r84556 64 64 } 65 65 66 void StructureStubInfo:: markAggregate(MarkStack& markStack)66 void StructureStubInfo::visitAggregate(SlotVisitor& visitor) 67 67 { 68 68 switch (accessType) { 69 69 case access_get_by_id_self: 70 markStack.append(&u.getByIdSelf.baseObjectStructure);70 visitor.append(&u.getByIdSelf.baseObjectStructure); 71 71 return; 72 72 case access_get_by_id_proto: 73 markStack.append(&u.getByIdProto.baseObjectStructure);74 markStack.append(&u.getByIdProto.prototypeStructure);73 visitor.append(&u.getByIdProto.baseObjectStructure); 74 visitor.append(&u.getByIdProto.prototypeStructure); 75 75 return; 76 76 case access_get_by_id_chain: 77 markStack.append(&u.getByIdChain.baseObjectStructure);78 markStack.append(&u.getByIdChain.chain);77 visitor.append(&u.getByIdChain.baseObjectStructure); 78 visitor.append(&u.getByIdChain.chain); 79 79 return; 80 80 case access_get_by_id_self_list: { 81 81 PolymorphicAccessStructureList* polymorphicStructures = u.getByIdSelfList.structureList; 82 polymorphicStructures-> markAggregate(markStack, u.getByIdSelfList.listSize);82 polymorphicStructures->visitAggregate(visitor, u.getByIdSelfList.listSize); 83 83 return; 84 84 } 85 85 case access_get_by_id_proto_list: { 86 86 PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList; 87 polymorphicStructures-> markAggregate(markStack, u.getByIdProtoList.listSize);87 polymorphicStructures->visitAggregate(visitor, u.getByIdProtoList.listSize); 88 88 return; 89 89 } 90 90 case access_put_by_id_transition: 91 markStack.append(&u.putByIdTransition.previousStructure);92 markStack.append(&u.putByIdTransition.structure);93 markStack.append(&u.putByIdTransition.chain);91 visitor.append(&u.putByIdTransition.previousStructure); 92 visitor.append(&u.putByIdTransition.structure); 93 visitor.append(&u.putByIdTransition.chain); 94 94 return; 95 95 case access_put_by_id_replace: 96 markStack.append(&u.putByIdReplace.baseObjectStructure);96 visitor.append(&u.putByIdReplace.baseObjectStructure); 97 97 return; 98 98 case access_get_by_id: -
trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h
r84052 r84556 117 117 118 118 void deref(); 119 void markAggregate(MarkStack&);119 void visitAggregate(SlotVisitor&); 120 120 121 121 bool seenOnce() -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.cpp
r84052 r84556 39 39 } 40 40 41 void DebuggerActivation:: markChildren(MarkStack& markStack)41 void DebuggerActivation::visitChildren(SlotVisitor& visitor) 42 42 { 43 JSObject:: markChildren(markStack);43 JSObject::visitChildren(visitor); 44 44 45 45 if (m_activation) 46 markStack.append(&m_activation);46 visitor.append(&m_activation); 47 47 } 48 48 -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.h
r84052 r84556 37 37 DebuggerActivation(JSGlobalData&, JSObject*); 38 38 39 virtual void markChildren(MarkStack&);39 virtual void visitChildren(SlotVisitor&); 40 40 virtual UString className() const; 41 41 virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); … … 56 56 57 57 protected: 58 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | Overrides MarkChildren | JSObject::StructureFlags;58 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | JSObject::StructureFlags; 59 59 60 60 private: -
trunk/Source/JavaScriptCore/heap/HandleHeap.cpp
r83910 r84556 35 35 } 36 36 37 bool WeakHandleOwner::isReachableFromOpaqueRoots(Handle<Unknown>, void*, MarkStack&)37 bool WeakHandleOwner::isReachableFromOpaqueRoots(Handle<Unknown>, void*, SlotVisitor&) 38 38 { 39 39 return false; … … 61 61 } 62 62 63 void HandleHeap::markStrongHandles(HeapRoot Marker& heapRootMarker)63 void HandleHeap::markStrongHandles(HeapRootVisitor& heapRootMarker) 64 64 { 65 65 Node* end = m_strongList.end(); … … 68 68 } 69 69 70 void HandleHeap::markWeakHandles(HeapRoot Marker& heapRootMarker)70 void HandleHeap::markWeakHandles(HeapRootVisitor& heapRootVisitor) 71 71 { 72 MarkStack& markStack = heapRootMarker.markStack();72 SlotVisitor& visitor = heapRootVisitor.visitor(); 73 73 74 74 Node* end = m_weakList.end(); … … 83 83 continue; 84 84 85 if (!weakOwner->isReachableFromOpaqueRoots(Handle<Unknown>::wrapSlot(node->slot()), node->weakOwnerContext(), markStack))85 if (!weakOwner->isReachableFromOpaqueRoots(Handle<Unknown>::wrapSlot(node->slot()), node->weakOwnerContext(), visitor)) 86 86 continue; 87 87 88 heapRoot Marker.mark(node->slot());88 heapRootVisitor.mark(node->slot()); 89 89 } 90 90 } -
trunk/Source/JavaScriptCore/heap/HandleHeap.h
r83885 r84556 35 35 36 36 class HandleHeap; 37 class HeapRoot Marker;37 class HeapRootVisitor; 38 38 class JSGlobalData; 39 39 class JSValue; 40 40 class MarkStack; 41 41 class TypeCounter; 42 typedef MarkStack SlotVisitor; 42 43 43 44 class WeakHandleOwner { 44 45 public: 45 46 virtual ~WeakHandleOwner(); 46 virtual bool isReachableFromOpaqueRoots(Handle<Unknown>, void* context, MarkStack&);47 virtual bool isReachableFromOpaqueRoots(Handle<Unknown>, void* context, SlotVisitor&); 47 48 virtual void finalize(Handle<Unknown>, void* context); 48 49 }; … … 62 63 HandleSlot copyWeak(HandleSlot); 63 64 64 void markStrongHandles(HeapRoot Marker&);65 void markWeakHandles(HeapRoot Marker&);65 void markStrongHandles(HeapRootVisitor&); 66 void markWeakHandles(HeapRootVisitor&); 66 67 void finalizeWeakHandles(); 67 68 -
trunk/Source/JavaScriptCore/heap/HandleStack.cpp
r83385 r84556 40 40 } 41 41 42 void HandleStack::mark(HeapRoot Marker& heapRootMarker)42 void HandleStack::mark(HeapRootVisitor& heapRootMarker) 43 43 { 44 44 const Vector<HandleSlot>& blocks = m_blockStack.blocks(); -
trunk/Source/JavaScriptCore/heap/HandleStack.h
r83385 r84556 36 36 37 37 class LocalScope; 38 class HeapRoot Marker;38 class HeapRootVisitor; 39 39 40 40 class HandleStack { … … 53 53 HandleSlot push(); 54 54 55 void mark(HeapRoot Marker&);55 void mark(HeapRootVisitor&); 56 56 57 57 private: -
trunk/Source/JavaScriptCore/heap/Heap.cpp
r83910 r84556 152 152 } 153 153 154 void Heap::markProtectedObjects(HeapRoot Marker& heapRootMarker)154 void Heap::markProtectedObjects(HeapRootVisitor& heapRootMarker) 155 155 { 156 156 ProtectCountSet::iterator end = m_protectedValues.end(); … … 170 170 } 171 171 172 void Heap::markTempSortVectors(HeapRoot Marker& heapRootMarker)172 void Heap::markTempSortVectors(HeapRootVisitor& heapRootMarker) 173 173 { 174 174 typedef Vector<Vector<ValueStringPair>* > VectorOfValueStringVectors; … … 208 208 m_operationInProgress = Collection; 209 209 210 MarkStack& markStack= m_markStack;211 HeapRoot Marker heapRootMarker(markStack);210 MarkStack& visitor = m_markStack; 211 HeapRootVisitor heapRootMarker(visitor); 212 212 213 213 // We gather conservative roots before clearing mark bits because … … 222 222 m_markedSpace.clearMarks(); 223 223 224 markStack.append(machineThreadRoots);225 markStack.drain();226 227 markStack.append(registerFileRoots);228 markStack.drain();224 visitor.append(machineThreadRoots); 225 visitor.drain(); 226 227 visitor.append(registerFileRoots); 228 visitor.drain(); 229 229 230 230 markProtectedObjects(heapRootMarker); 231 markStack.drain();231 visitor.drain(); 232 232 233 233 markTempSortVectors(heapRootMarker); 234 markStack.drain();234 visitor.drain(); 235 235 236 236 if (m_markListSet && m_markListSet->size()) … … 238 238 if (m_globalData->exception) 239 239 heapRootMarker.mark(&m_globalData->exception); 240 markStack.drain();240 visitor.drain(); 241 241 242 242 m_handleHeap.markStrongHandles(heapRootMarker); 243 markStack.drain();243 visitor.drain(); 244 244 245 245 m_handleStack.mark(heapRootMarker); 246 markStack.drain();246 visitor.drain(); 247 247 248 248 // Mark the small strings cache as late as possible, since it will clear 249 249 // itself if nothing else has marked it. 250 250 // FIXME: Change the small strings cache to use Weak<T>. 251 m_globalData->smallStrings. markChildren(heapRootMarker);252 markStack.drain();251 m_globalData->smallStrings.visitChildren(heapRootMarker); 252 visitor.drain(); 253 253 254 254 // Weak handles must be marked last, because their owners use the set of … … 256 256 int lastOpaqueRootCount; 257 257 do { 258 lastOpaqueRootCount = markStack.opaqueRootCount();258 lastOpaqueRootCount = visitor.opaqueRootCount(); 259 259 m_handleHeap.markWeakHandles(heapRootMarker); 260 markStack.drain();260 visitor.drain(); 261 261 // If the set of opaque roots has grown, more weak handles may have become reachable. 262 } while (lastOpaqueRootCount != markStack.opaqueRootCount());263 264 markStack.reset();262 } while (lastOpaqueRootCount != visitor.opaqueRootCount()); 263 264 visitor.reset(); 265 265 266 266 m_operationInProgress = NoOperation; -
trunk/Source/JavaScriptCore/heap/Heap.h
r83418 r84556 35 35 class GCActivityCallback; 36 36 class GlobalCodeBlock; 37 class HeapRoot Marker;37 class HeapRootVisitor; 38 38 class JSCell; 39 39 class JSGlobalData; … … 45 45 class UString; 46 46 class WeakGCHandlePool; 47 typedef MarkStack SlotVisitor; 47 48 48 49 typedef std::pair<JSValue, UString> ValueStringPair; … … 115 116 116 117 void markRoots(); 117 void markProtectedObjects(HeapRoot Marker&);118 void markTempSortVectors(HeapRoot Marker&);118 void markProtectedObjects(HeapRootVisitor&); 119 void markTempSortVectors(HeapRootVisitor&); 119 120 120 121 enum SweepToggle { DoNotSweep, DoSweep }; -
trunk/Source/JavaScriptCore/heap/MarkStack.cpp
r84052 r84556 55 55 } 56 56 57 inline void MarkStack:: markChildren(JSCell* cell)57 inline void MarkStack::visitChildren(JSCell* cell) 58 58 { 59 59 ASSERT(Heap::isMarked(cell)); 60 60 if (cell->structure()->typeInfo().type() < CompoundType) { 61 cell->JSCell:: markChildren(*this);61 cell->JSCell::visitChildren(*this); 62 62 return; 63 63 } 64 64 65 if (!cell->structure()->typeInfo().overrides MarkChildren()) {65 if (!cell->structure()->typeInfo().overridesVisitChildren()) { 66 66 ASSERT(cell->isObject()); 67 67 #ifdef NDEBUG 68 asObject(cell)-> markChildrenDirect(*this);68 asObject(cell)->visitChildrenDirect(*this); 69 69 #else 70 70 ASSERT(!m_isCheckingForDefaultMarkViolation); 71 71 m_isCheckingForDefaultMarkViolation = true; 72 cell-> markChildren(*this);72 cell->visitChildren(*this); 73 73 ASSERT(m_isCheckingForDefaultMarkViolation); 74 74 m_isCheckingForDefaultMarkViolation = false; … … 77 77 } 78 78 if (cell->vptr() == m_jsArrayVPtr) { 79 asArray(cell)-> markChildrenDirect(*this);79 asArray(cell)->visitChildrenDirect(*this); 80 80 return; 81 81 } 82 cell-> markChildren(*this);82 cell->visitChildren(*this); 83 83 } 84 84 … … 112 112 113 113 if (cell->structure()->typeInfo().type() < CompoundType) { 114 cell->JSCell:: markChildren(*this);114 cell->JSCell::visitChildren(*this); 115 115 if (current.m_values == end) { 116 116 m_markSets.removeLast(); … … 123 123 m_markSets.removeLast(); 124 124 125 markChildren(cell);125 visitChildren(cell); 126 126 } 127 127 while (!m_values.isEmpty()) 128 markChildren(m_values.removeLast());128 visitChildren(m_values.removeLast()); 129 129 } 130 130 #if !ASSERT_DISABLED -
trunk/Source/JavaScriptCore/heap/MarkStack.h
r84301 r84556 81 81 82 82 private: 83 friend class HeapRoot Marker; // Allowed to mark a JSValue* or JSCell** directly.83 friend class HeapRootVisitor; // Allowed to mark a JSValue* or JSCell** directly. 84 84 void append(JSValue*); 85 85 void append(JSValue*, size_t count); … … 88 88 void internalAppend(JSCell*); 89 89 void internalAppend(JSValue); 90 void markChildren(JSCell*);90 void visitChildren(JSCell*); 91 91 92 92 struct MarkSet { … … 203 203 }; 204 204 205 typedef MarkStack SlotVisitor; 206 205 207 inline void MarkStack::append(JSValue* slot, size_t count) 206 208 { … … 244 246 // All other references should be wrapped in WriteBarriers and marked through 245 247 // the MarkStack. 246 class HeapRoot Marker {248 class HeapRootVisitor { 247 249 private: 248 250 friend class Heap; 249 HeapRoot Marker(MarkStack&);251 HeapRootVisitor(SlotVisitor&); 250 252 251 253 public: … … 255 257 void mark(JSCell**); 256 258 257 MarkStack& markStack();259 SlotVisitor& visitor(); 258 260 259 261 private: 260 MarkStack& m_markStack;262 SlotVisitor& m_visitor; 261 263 }; 262 264 263 inline HeapRoot Marker::HeapRootMarker(MarkStack& markStack)264 : m_ markStack(markStack)265 { 266 } 267 268 inline void HeapRoot Marker::mark(JSValue* slot)269 { 270 m_ markStack.append(slot);271 } 272 273 inline void HeapRoot Marker::mark(JSValue* slot, size_t count)274 { 275 m_ markStack.append(slot, count);276 } 277 278 inline void HeapRoot Marker::mark(JSString** slot)279 { 280 m_ markStack.append(reinterpret_cast<JSCell**>(slot));281 } 282 283 inline void HeapRoot Marker::mark(JSCell** slot)284 { 285 m_ markStack.append(slot);286 } 287 288 inline MarkStack& HeapRootMarker::markStack()289 { 290 return m_ markStack;265 inline HeapRootVisitor::HeapRootVisitor(SlotVisitor& visitor) 266 : m_visitor(visitor) 267 { 268 } 269 270 inline void HeapRootVisitor::mark(JSValue* slot) 271 { 272 m_visitor.append(slot); 273 } 274 275 inline void HeapRootVisitor::mark(JSValue* slot, size_t count) 276 { 277 m_visitor.append(slot, count); 278 } 279 280 inline void HeapRootVisitor::mark(JSString** slot) 281 { 282 m_visitor.append(reinterpret_cast<JSCell**>(slot)); 283 } 284 285 inline void HeapRootVisitor::mark(JSCell** slot) 286 { 287 m_visitor.append(slot); 288 } 289 290 inline SlotVisitor& HeapRootVisitor::visitor() 291 { 292 return m_visitor; 291 293 } 292 294 -
trunk/Source/JavaScriptCore/heap/MarkedSpace.h
r83506 r84556 43 43 class MarkStack; 44 44 class WeakGCHandle; 45 typedef MarkStack SlotVisitor; 45 46 46 47 class MarkedSpace { -
trunk/Source/JavaScriptCore/runtime/ArgList.cpp
r81193 r84556 40 40 } 41 41 42 void MarkedArgumentBuffer::markLists(HeapRoot Marker& heapRootMarker, ListSet& markSet)42 void MarkedArgumentBuffer::markLists(HeapRootVisitor& heapRootMarker, ListSet& markSet) 43 43 { 44 44 ListSet::iterator end = markSet.end(); -
trunk/Source/JavaScriptCore/runtime/ArgList.h
r81193 r84556 31 31 32 32 class MarkStack; 33 typedef MarkStack SlotVisitor; 33 34 34 35 class MarkedArgumentBuffer { … … 142 143 const_iterator end() const { return m_buffer + m_size; } 143 144 144 static void markLists(HeapRoot Marker&, ListSet&);145 static void markLists(HeapRootVisitor&, ListSet&); 145 146 146 147 private: -
trunk/Source/JavaScriptCore/runtime/Arguments.cpp
r80285 r84556 44 44 } 45 45 46 void Arguments:: markChildren(MarkStack& markStack)47 { 48 JSObject:: markChildren(markStack);46 void Arguments::visitChildren(SlotVisitor& visitor) 47 { 48 JSObject::visitChildren(visitor); 49 49 50 50 if (d->registerArray) 51 markStack.appendValues(d->registerArray.get(), d->numParameters);51 visitor.appendValues(d->registerArray.get(), d->numParameters); 52 52 53 53 if (d->extraArguments) { 54 54 unsigned numExtraArguments = d->numArguments - d->numParameters; 55 markStack.appendValues(d->extraArguments, numExtraArguments);56 } 57 58 markStack.append(&d->callee);55 visitor.appendValues(d->extraArguments, numExtraArguments); 56 } 57 58 visitor.append(&d->callee); 59 59 60 60 if (d->activation) 61 markStack.append(&d->activation);61 visitor.append(&d->activation); 62 62 } 63 63 -
trunk/Source/JavaScriptCore/runtime/Arguments.h
r84052 r84556 72 72 static const ClassInfo s_info; 73 73 74 virtual void markChildren(MarkStack&);74 virtual void visitChildren(SlotVisitor&); 75 75 76 76 void fillArgList(ExecState*, MarkedArgumentBuffer&); … … 99 99 100 100 protected: 101 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | Overrides MarkChildren | OverridesGetPropertyNames | JSObject::StructureFlags;101 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSObject::StructureFlags; 102 102 103 103 private: -
trunk/Source/JavaScriptCore/runtime/Executable.cpp
r84052 r84556 136 136 } 137 137 138 void EvalExecutable:: markChildren(MarkStack& markStack)139 { 140 ScriptExecutable:: markChildren(markStack);138 void EvalExecutable::visitChildren(SlotVisitor& visitor) 139 { 140 ScriptExecutable::visitChildren(visitor); 141 141 if (m_evalCodeBlock) 142 m_evalCodeBlock-> markAggregate(markStack);142 m_evalCodeBlock->visitAggregate(visitor); 143 143 } 144 144 … … 222 222 #endif 223 223 224 void ProgramExecutable:: markChildren(MarkStack& markStack)225 { 226 ScriptExecutable:: markChildren(markStack);224 void ProgramExecutable::visitChildren(SlotVisitor& visitor) 225 { 226 ScriptExecutable::visitChildren(visitor); 227 227 if (m_programCodeBlock) 228 m_programCodeBlock-> markAggregate(markStack);228 m_programCodeBlock->visitAggregate(visitor); 229 229 } 230 230 … … 322 322 } 323 323 324 void FunctionExecutable:: markChildren(MarkStack& markStack)325 { 326 ScriptExecutable:: markChildren(markStack);324 void FunctionExecutable::visitChildren(SlotVisitor& visitor) 325 { 326 ScriptExecutable::visitChildren(visitor); 327 327 if (m_codeBlockForCall) 328 m_codeBlockForCall-> markAggregate(markStack);328 m_codeBlockForCall->visitAggregate(visitor); 329 329 if (m_codeBlockForConstruct) 330 m_codeBlockForConstruct-> markAggregate(markStack);330 m_codeBlockForConstruct->visitAggregate(visitor); 331 331 } 332 332 -
trunk/Source/JavaScriptCore/runtime/Executable.h
r84052 r84556 236 236 237 237 private: 238 static const unsigned StructureFlags = Overrides MarkChildren | ScriptExecutable::StructureFlags;238 static const unsigned StructureFlags = OverridesVisitChildren | ScriptExecutable::StructureFlags; 239 239 static const ClassInfo s_info; 240 240 EvalExecutable(ExecState*, const SourceCode&, bool); 241 241 242 242 JSObject* compileInternal(ExecState*, ScopeChainNode*); 243 virtual void markChildren(MarkStack&);243 virtual void visitChildren(SlotVisitor&); 244 244 245 245 OwnPtr<EvalCodeBlock> m_evalCodeBlock; … … 283 283 284 284 private: 285 static const unsigned StructureFlags = Overrides MarkChildren | ScriptExecutable::StructureFlags;285 static const unsigned StructureFlags = OverridesVisitChildren | ScriptExecutable::StructureFlags; 286 286 static const ClassInfo s_info; 287 287 ProgramExecutable(ExecState*, const SourceCode&); 288 288 289 289 JSObject* compileInternal(ExecState*, ScopeChainNode*); 290 virtual void markChildren(MarkStack&);290 virtual void visitChildren(SlotVisitor&); 291 291 292 292 OwnPtr<ProgramCodeBlock> m_programCodeBlock; … … 371 371 372 372 void discardCode(); 373 void markChildren(MarkStack&);373 void visitChildren(SlotVisitor&); 374 374 static FunctionExecutable* fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, JSObject** exception); 375 375 static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, 0); } … … 382 382 JSObject* compileForConstructInternal(ExecState*, ScopeChainNode*); 383 383 384 static const unsigned StructureFlags = Overrides MarkChildren | ScriptExecutable::StructureFlags;384 static const unsigned StructureFlags = OverridesVisitChildren | ScriptExecutable::StructureFlags; 385 385 static const ClassInfo s_info; 386 386 unsigned m_numCapturedVariables : 31; -
trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp
r77151 r84556 29 29 namespace JSC { 30 30 31 void GetterSetter:: markChildren(MarkStack& markStack)31 void GetterSetter::visitChildren(SlotVisitor& visitor) 32 32 { 33 JSCell:: markChildren(markStack);33 JSCell::visitChildren(visitor); 34 34 35 35 if (m_getter) 36 markStack.append(&m_getter);36 visitor.append(&m_getter); 37 37 if (m_setter) 38 markStack.append(&m_setter);38 visitor.append(&m_setter); 39 39 } 40 40 -
trunk/Source/JavaScriptCore/runtime/GetterSetter.h
r84052 r84556 43 43 } 44 44 45 virtual void markChildren(MarkStack&);45 virtual void visitChildren(SlotVisitor&); 46 46 47 47 JSObject* getter() const { return m_getter.get(); } … … 51 51 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) 52 52 { 53 return Structure::create(globalData, prototype, TypeInfo(GetterSetterType, Overrides MarkChildren), AnonymousSlotCount, 0);53 return Structure::create(globalData, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), AnonymousSlotCount, 0); 54 54 } 55 55 private: -
trunk/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h
r84052 r84556 39 39 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) 40 40 { 41 return Structure::create(globalData, prototype, TypeInfo(CompoundType, Overrides MarkChildren | OverridesGetPropertyNames), AnonymousSlotCount, 0);41 return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, 0); 42 42 } 43 43 -
trunk/Source/JavaScriptCore/runtime/JSActivation.cpp
r84052 r84556 59 59 } 60 60 61 void JSActivation:: markChildren(MarkStack& markStack)62 { 63 Base:: markChildren(markStack);61 void JSActivation::visitChildren(SlotVisitor& visitor) 62 { 63 Base::visitChildren(visitor); 64 64 65 65 // No need to mark our registers if they're still in the RegisterFile. … … 68 68 return; 69 69 70 markStack.appendValues(registerArray, m_numParametersMinusThis);70 visitor.appendValues(registerArray, m_numParametersMinusThis); 71 71 72 72 // Skip the call frame, which sits between the parameters and vars. 73 markStack.appendValues(registerArray + m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize, m_numCapturedVars, MayContainNullValues);73 visitor.appendValues(registerArray + m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize, m_numCapturedVars, MayContainNullValues); 74 74 } 75 75 -
trunk/Source/JavaScriptCore/runtime/JSActivation.h
r84052 r84556 46 46 virtual ~JSActivation(); 47 47 48 virtual void markChildren(MarkStack&);48 virtual void visitChildren(SlotVisitor&); 49 49 50 50 virtual bool isDynamicScope(bool& requiresDynamicChecks) const; … … 70 70 71 71 protected: 72 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | NeedsThisConversion | Overrides MarkChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags;72 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | NeedsThisConversion | OverridesVisitChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags; 73 73 74 74 private: -
trunk/Source/JavaScriptCore/runtime/JSArray.cpp
r84052 r84556 858 858 } 859 859 860 void JSArray:: markChildren(MarkStack& markStack)861 { 862 markChildrenDirect(markStack);860 void JSArray::visitChildren(SlotVisitor& visitor) 861 { 862 visitChildrenDirect(visitor); 863 863 } 864 864 -
trunk/Source/JavaScriptCore/runtime/JSArray.h
r84052 r84556 129 129 } 130 130 131 inline void markChildrenDirect(MarkStack& markStack);131 inline void visitChildrenDirect(SlotVisitor&); 132 132 133 133 static ptrdiff_t storageOffset() … … 142 142 143 143 protected: 144 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | Overrides MarkChildren | OverridesGetPropertyNames | JSObject::StructureFlags;144 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSObject::StructureFlags; 145 145 virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); 146 146 virtual bool deleteProperty(ExecState*, const Identifier& propertyName); 147 147 virtual bool deleteProperty(ExecState*, unsigned propertyName); 148 148 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 149 virtual void markChildren(MarkStack&);149 virtual void visitChildren(SlotVisitor&); 150 150 151 151 void* subclassData() const; … … 186 186 inline bool isJSArray(JSGlobalData* globalData, JSValue v) { return v.isCell() && isJSArray(globalData, v.asCell()); } 187 187 188 inline void JSArray:: markChildrenDirect(MarkStack& markStack)189 { 190 JSObject:: markChildrenDirect(markStack);188 inline void JSArray::visitChildrenDirect(SlotVisitor& visitor) 189 { 190 JSObject::visitChildrenDirect(visitor); 191 191 192 192 ArrayStorage* storage = m_storage; 193 193 194 194 unsigned usedVectorLength = std::min(storage->m_length, m_vectorLength); 195 markStack.appendValues(storage->m_vector, usedVectorLength, MayContainNullValues);195 visitor.appendValues(storage->m_vector, usedVectorLength, MayContainNullValues); 196 196 197 197 if (SparseArrayValueMap* map = storage->m_sparseValueMap) { 198 198 SparseArrayValueMap::iterator end = map->end(); 199 199 for (SparseArrayValueMap::iterator it = map->begin(); it != end; ++it) 200 markStack.append(&it->second);200 visitor.append(&it->second); 201 201 } 202 202 } -
trunk/Source/JavaScriptCore/runtime/JSCell.h
r84052 r84556 119 119 void* operator new(size_t, void* placementNewDestination) { return placementNewDestination; } 120 120 121 virtual void markChildren(MarkStack&);121 virtual void visitChildren(SlotVisitor&); 122 122 #if ENABLE(JSC_ZOMBIES) 123 123 virtual bool isZombie() const { return false; } … … 179 179 } 180 180 181 inline void JSCell:: markChildren(MarkStack& markStack)182 { 183 markStack.append(&m_structure);181 inline void JSCell::visitChildren(SlotVisitor& visitor) 182 { 183 visitor.append(&m_structure); 184 184 } 185 185 -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r84052 r84556 134 134 } 135 135 136 void JSFunction:: markChildren(MarkStack& markStack)137 { 138 Base:: markChildren(markStack);139 140 markStack.append(&m_scopeChain);136 void JSFunction::visitChildren(SlotVisitor& visitor) 137 { 138 Base::visitChildren(visitor); 139 140 visitor.append(&m_scopeChain); 141 141 if (m_executable) { 142 142 // Delightful race condition: m_executable may not have been initialised 143 143 // if this is a host function, as the executable isn't necessarily created 144 144 // until after the function has been allocated. 145 markStack.append(&m_executable);145 visitor.append(&m_executable); 146 146 } 147 147 } -
trunk/Source/JavaScriptCore/runtime/JSFunction.h
r84052 r84556 85 85 86 86 protected: 87 const static unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | Overrides MarkChildren | OverridesGetPropertyNames | JSObject::StructureFlags;87 const static unsigned StructureFlags = OverridesGetOwnPropertySlot | ImplementsHasInstance | OverridesVisitChildren | OverridesGetPropertyNames | JSObject::StructureFlags; 88 88 89 89 private: … … 98 98 virtual bool deleteProperty(ExecState*, const Identifier& propertyName); 99 99 100 virtual void markChildren(MarkStack&);100 virtual void visitChildren(SlotVisitor&); 101 101 102 102 static JSValue argumentsGetter(ExecState*, JSValue, const Identifier&); -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r84052 r84556 79 79 static const int preferredScriptCheckTimeInterval = 1000; 80 80 81 template <typename T> static inline void markIfNeeded(MarkStack& markStack, WriteBarrier<T>* v)81 template <typename T> static inline void visitIfNeeded(SlotVisitor& visitor, WriteBarrier<T>* v) 82 82 { 83 83 if (*v) 84 markStack.append(v);84 visitor.append(v); 85 85 } 86 86 … … 308 308 } 309 309 310 void JSGlobalObject:: markChildren(MarkStack& markStack)311 { 312 JSVariableObject:: markChildren(markStack);313 314 markIfNeeded(markStack, &m_globalScopeChain);315 markIfNeeded(markStack, &m_methodCallDummy);316 317 markIfNeeded(markStack, &m_regExpConstructor);318 markIfNeeded(markStack, &m_errorConstructor);319 markIfNeeded(markStack, &m_evalErrorConstructor);320 markIfNeeded(markStack, &m_rangeErrorConstructor);321 markIfNeeded(markStack, &m_referenceErrorConstructor);322 markIfNeeded(markStack, &m_syntaxErrorConstructor);323 markIfNeeded(markStack, &m_typeErrorConstructor);324 markIfNeeded(markStack, &m_URIErrorConstructor);325 326 markIfNeeded(markStack, &m_evalFunction);327 markIfNeeded(markStack, &m_callFunction);328 markIfNeeded(markStack, &m_applyFunction);329 330 markIfNeeded(markStack, &m_objectPrototype);331 markIfNeeded(markStack, &m_functionPrototype);332 markIfNeeded(markStack, &m_arrayPrototype);333 markIfNeeded(markStack, &m_booleanPrototype);334 markIfNeeded(markStack, &m_stringPrototype);335 markIfNeeded(markStack, &m_numberPrototype);336 markIfNeeded(markStack, &m_datePrototype);337 markIfNeeded(markStack, &m_regExpPrototype);338 339 markIfNeeded(markStack, &m_argumentsStructure);340 markIfNeeded(markStack, &m_arrayStructure);341 markIfNeeded(markStack, &m_booleanObjectStructure);342 markIfNeeded(markStack, &m_callbackConstructorStructure);343 markIfNeeded(markStack, &m_callbackFunctionStructure);344 markIfNeeded(markStack, &m_callbackObjectStructure);345 markIfNeeded(markStack, &m_dateStructure);346 markIfNeeded(markStack, &m_emptyObjectStructure);347 markIfNeeded(markStack, &m_errorStructure);348 markIfNeeded(markStack, &m_functionStructure);349 markIfNeeded(markStack, &m_numberObjectStructure);350 markIfNeeded(markStack, &m_regExpMatchesArrayStructure);351 markIfNeeded(markStack, &m_regExpStructure);352 markIfNeeded(markStack, &m_stringObjectStructure);353 markIfNeeded(markStack, &m_internalFunctionStructure);310 void JSGlobalObject::visitChildren(SlotVisitor& visitor) 311 { 312 JSVariableObject::visitChildren(visitor); 313 314 visitIfNeeded(visitor, &m_globalScopeChain); 315 visitIfNeeded(visitor, &m_methodCallDummy); 316 317 visitIfNeeded(visitor, &m_regExpConstructor); 318 visitIfNeeded(visitor, &m_errorConstructor); 319 visitIfNeeded(visitor, &m_evalErrorConstructor); 320 visitIfNeeded(visitor, &m_rangeErrorConstructor); 321 visitIfNeeded(visitor, &m_referenceErrorConstructor); 322 visitIfNeeded(visitor, &m_syntaxErrorConstructor); 323 visitIfNeeded(visitor, &m_typeErrorConstructor); 324 visitIfNeeded(visitor, &m_URIErrorConstructor); 325 326 visitIfNeeded(visitor, &m_evalFunction); 327 visitIfNeeded(visitor, &m_callFunction); 328 visitIfNeeded(visitor, &m_applyFunction); 329 330 visitIfNeeded(visitor, &m_objectPrototype); 331 visitIfNeeded(visitor, &m_functionPrototype); 332 visitIfNeeded(visitor, &m_arrayPrototype); 333 visitIfNeeded(visitor, &m_booleanPrototype); 334 visitIfNeeded(visitor, &m_stringPrototype); 335 visitIfNeeded(visitor, &m_numberPrototype); 336 visitIfNeeded(visitor, &m_datePrototype); 337 visitIfNeeded(visitor, &m_regExpPrototype); 338 339 visitIfNeeded(visitor, &m_argumentsStructure); 340 visitIfNeeded(visitor, &m_arrayStructure); 341 visitIfNeeded(visitor, &m_booleanObjectStructure); 342 visitIfNeeded(visitor, &m_callbackConstructorStructure); 343 visitIfNeeded(visitor, &m_callbackFunctionStructure); 344 visitIfNeeded(visitor, &m_callbackObjectStructure); 345 visitIfNeeded(visitor, &m_dateStructure); 346 visitIfNeeded(visitor, &m_emptyObjectStructure); 347 visitIfNeeded(visitor, &m_errorStructure); 348 visitIfNeeded(visitor, &m_functionStructure); 349 visitIfNeeded(visitor, &m_numberObjectStructure); 350 visitIfNeeded(visitor, &m_regExpMatchesArrayStructure); 351 visitIfNeeded(visitor, &m_regExpStructure); 352 visitIfNeeded(visitor, &m_stringObjectStructure); 353 visitIfNeeded(visitor, &m_internalFunctionStructure); 354 354 355 355 if (m_registerArray) { 356 356 // Outside the execution of global code, when our variables are torn off, 357 357 // we can mark the torn-off array. 358 markStack.appendValues(m_registerArray.get(), m_registerArraySize);358 visitor.appendValues(m_registerArray.get(), m_registerArraySize); 359 359 } else if (m_registers) { 360 360 // During execution of global code, when our variables are in the register file, 361 361 // the symbol table tells us how many variables there are, and registers 362 362 // points to where they end, and the registers used for execution begin. 363 markStack.appendValues(m_registers - symbolTable().size(), symbolTable().size());363 visitor.appendValues(m_registers - symbolTable().size(), symbolTable().size()); 364 364 } 365 365 } -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r84052 r84556 152 152 virtual ~JSGlobalObject(); 153 153 154 virtual void markChildren(MarkStack&);154 virtual void visitChildren(SlotVisitor&); 155 155 156 156 virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); … … 259 259 260 260 static const unsigned AnonymousSlotCount = JSVariableObject::AnonymousSlotCount + 1; 261 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | Overrides MarkChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags;261 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags; 262 262 263 263 struct GlobalPropertyInfo { -
trunk/Source/JavaScriptCore/runtime/JSONObject.cpp
r84052 r84556 80 80 Local<Unknown> stringify(Handle<Unknown>); 81 81 82 void markAggregate(MarkStack&);82 void visitAggregate(SlotVisitor&); 83 83 84 84 private: -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r84052 r84556 69 69 } 70 70 71 void JSObject:: markChildren(MarkStack& markStack)71 void JSObject::visitChildren(SlotVisitor& visitor) 72 72 { 73 73 #ifndef NDEBUG 74 bool wasCheckingForDefaultMarkViolation = markStack.m_isCheckingForDefaultMarkViolation;75 markStack.m_isCheckingForDefaultMarkViolation = false;74 bool wasCheckingForDefaultMarkViolation = visitor.m_isCheckingForDefaultMarkViolation; 75 visitor.m_isCheckingForDefaultMarkViolation = false; 76 76 #endif 77 77 78 markChildrenDirect(markStack);78 visitChildrenDirect(visitor); 79 79 80 80 #ifndef NDEBUG 81 markStack.m_isCheckingForDefaultMarkViolation = wasCheckingForDefaultMarkViolation;81 visitor.m_isCheckingForDefaultMarkViolation = wasCheckingForDefaultMarkViolation; 82 82 #endif 83 83 } -
trunk/Source/JavaScriptCore/runtime/JSObject.h
r84052 r84556 80 80 81 81 public: 82 virtual void markChildren(MarkStack&);83 ALWAYS_INLINE void markChildrenDirect(MarkStack& markStack);82 virtual void visitChildren(SlotVisitor&); 83 ALWAYS_INLINE void visitChildrenDirect(SlotVisitor&); 84 84 85 85 // The inline virtual destructor cannot be the first virtual function declared … … 821 821 } 822 822 823 ALWAYS_INLINE void JSObject:: markChildrenDirect(MarkStack& markStack)824 { 825 JSCell:: markChildren(markStack);823 ALWAYS_INLINE void JSObject::visitChildrenDirect(SlotVisitor& visitor) 824 { 825 JSCell::visitChildren(visitor); 826 826 827 827 PropertyStorage storage = propertyStorage(); 828 828 size_t storageSize = m_structure->propertyStorageSize(); 829 markStack.appendValues(storage, storageSize);829 visitor.appendValues(storage, storageSize); 830 830 if (m_inheritorID) 831 markStack.append(&m_inheritorID);831 visitor.append(&m_inheritorID); 832 832 } 833 833 -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
r84052 r84556 96 96 } 97 97 98 void JSPropertyNameIterator:: markChildren(MarkStack& markStack)98 void JSPropertyNameIterator::visitChildren(SlotVisitor& visitor) 99 99 { 100 markStack.appendValues(m_jsStrings.get(), m_jsStringsSize, MayContainNullValues);100 visitor.appendValues(m_jsStrings.get(), m_jsStringsSize, MayContainNullValues); 101 101 if (m_cachedPrototypeChain) 102 markStack.append(&m_cachedPrototypeChain);102 visitor.append(&m_cachedPrototypeChain); 103 103 } 104 104 -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
r84052 r84556 48 48 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) 49 49 { 50 return Structure::create(globalData, prototype, TypeInfo(CompoundType, Overrides MarkChildren), AnonymousSlotCount, &s_info);50 return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren), AnonymousSlotCount, &s_info); 51 51 } 52 52 53 53 virtual bool isPropertyNameIterator() const { return true; } 54 54 55 virtual void markChildren(MarkStack&);55 virtual void visitChildren(SlotVisitor&); 56 56 57 57 bool getOffset(size_t i, int& offset) -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.cpp
r80742 r84556 31 31 ASSERT_CLASS_FITS_IN_CELL(JSStaticScopeObject); 32 32 33 void JSStaticScopeObject:: markChildren(MarkStack& markStack)33 void JSStaticScopeObject::visitChildren(SlotVisitor& visitor) 34 34 { 35 JSVariableObject:: markChildren(markStack);36 markStack.append(&m_registerStore);35 JSVariableObject::visitChildren(visitor); 36 visitor.append(&m_registerStore); 37 37 } 38 38 -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.h
r84052 r84556 40 40 } 41 41 42 virtual void markChildren(MarkStack&);42 virtual void visitChildren(SlotVisitor&); 43 43 bool isDynamicScope(bool& requiresDynamicChecks) const; 44 44 virtual JSObject* toThisObject(ExecState*) const; … … 51 51 52 52 protected: 53 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | NeedsThisConversion | Overrides MarkChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags;53 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | NeedsThisConversion | OverridesVisitChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags; 54 54 55 55 private: -
trunk/Source/JavaScriptCore/runtime/JSTypeInfo.h
r84052 r84556 42 42 static const unsigned NeedsThisConversion = 1 << 4; 43 43 static const unsigned OverridesGetOwnPropertySlot = 1 << 5; 44 static const unsigned Overrides MarkChildren = 1 << 6;44 static const unsigned OverridesVisitChildren = 1 << 6; 45 45 static const unsigned OverridesGetPropertyNames = 1 << 7; 46 46 static const unsigned IsJSFinalObject = 1 << 8; … … 55 55 ASSERT(flags <= 0x1FF); 56 56 ASSERT(type <= 0xFF); 57 ASSERT(type >= CompoundType || !(flags & Overrides MarkChildren));57 ASSERT(type >= CompoundType || !(flags & OverridesVisitChildren)); 58 58 // ImplementsDefaultHasInstance means (ImplementsHasInstance & !OverridesHasInstance) 59 59 if ((m_flags & (ImplementsHasInstance | OverridesHasInstance)) == ImplementsHasInstance) … … 68 68 bool needsThisConversion() const { return m_flags & NeedsThisConversion; } 69 69 bool overridesGetOwnPropertySlot() const { return m_flags & OverridesGetOwnPropertySlot; } 70 bool overrides MarkChildren() const { return m_flags & OverridesMarkChildren; }70 bool overridesVisitChildren() const { return m_flags & OverridesVisitChildren; } 71 71 bool overridesGetPropertyNames() const { return m_flags & OverridesGetPropertyNames; } 72 72 unsigned flags() const { return m_flags; } -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.cpp
r77151 r84556 27 27 ASSERT_CLASS_FITS_IN_CELL(JSWrapperObject); 28 28 29 void JSWrapperObject:: markChildren(MarkStack& markStack)29 void JSWrapperObject::visitChildren(SlotVisitor& visitor) 30 30 { 31 JSObject:: markChildren(markStack);31 JSObject::visitChildren(visitor); 32 32 if (m_internalValue) 33 markStack.append(&m_internalValue);33 visitor.append(&m_internalValue); 34 34 } 35 35 -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.h
r84052 r84556 43 43 44 44 protected: 45 static const unsigned StructureFlags = Overrides MarkChildren | JSNonFinalObject::StructureFlags;45 static const unsigned StructureFlags = OverridesVisitChildren | JSNonFinalObject::StructureFlags; 46 46 47 47 private: 48 virtual void markChildren(MarkStack&);48 virtual void visitChildren(SlotVisitor&); 49 49 50 50 WriteBarrier<Unknown> m_internalValue; -
trunk/Source/JavaScriptCore/runtime/JSZombie.h
r84052 r84556 56 56 virtual UString toString(ExecState*) const { ASSERT_NOT_REACHED(); return ""; } 57 57 virtual JSObject* toObject(ExecState*) const { ASSERT_NOT_REACHED(); return 0; } 58 virtual void markChildren(MarkStack&) { ASSERT_NOT_REACHED(); }58 virtual void visitChildren(SlotVisitor&) { ASSERT_NOT_REACHED(); } 59 59 virtual void put(ExecState*, const Identifier&, JSValue, PutPropertySlot&) { ASSERT_NOT_REACHED(); } 60 60 virtual void put(ExecState*, unsigned, JSValue) { ASSERT_NOT_REACHED(); } -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp
r84052 r84556 47 47 } 48 48 49 void NativeErrorConstructor:: markChildren(MarkStack& markStack)49 void NativeErrorConstructor::visitChildren(SlotVisitor& visitor) 50 50 { 51 InternalFunction:: markChildren(markStack);51 InternalFunction::visitChildren(visitor); 52 52 if (m_errorStructure) 53 markStack.append(&m_errorStructure);53 visitor.append(&m_errorStructure); 54 54 } 55 55 -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
r84052 r84556 44 44 45 45 private: 46 static const unsigned StructureFlags = Overrides MarkChildren | InternalFunction::StructureFlags;46 static const unsigned StructureFlags = OverridesVisitChildren | InternalFunction::StructureFlags; 47 47 virtual ConstructType getConstructData(ConstructData&); 48 48 virtual CallType getCallData(CallData&); 49 virtual void markChildren(MarkStack&);49 virtual void visitChildren(SlotVisitor&); 50 50 51 51 WriteBarrier<Structure> m_errorStructure; -
trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp
r84052 r84556 73 73 } 74 74 75 void RegExpObject:: markChildren(MarkStack& markStack)75 void RegExpObject::visitChildren(SlotVisitor& visitor) 76 76 { 77 Base:: markChildren(markStack);77 Base::visitChildren(visitor); 78 78 if (UNLIKELY(!d->lastIndex.get().isInt32())) 79 markStack.append(&d->lastIndex);79 visitor.append(&d->lastIndex); 80 80 } 81 81 -
trunk/Source/JavaScriptCore/runtime/RegExpObject.h
r84052 r84556 65 65 66 66 protected: 67 static const unsigned StructureFlags = Overrides MarkChildren | OverridesGetOwnPropertySlot | JSObjectWithGlobalObject::StructureFlags;67 static const unsigned StructureFlags = OverridesVisitChildren | OverridesGetOwnPropertySlot | JSObjectWithGlobalObject::StructureFlags; 68 68 69 69 private: 70 virtual void markChildren(MarkStack&);70 virtual void visitChildren(SlotVisitor&); 71 71 72 72 bool match(ExecState*); -
trunk/Source/JavaScriptCore/runtime/ScopeChain.cpp
r82971 r84556 68 68 } 69 69 70 void ScopeChainNode:: markChildren(MarkStack& markStack)70 void ScopeChainNode::visitChildren(SlotVisitor& visitor) 71 71 { 72 72 if (next) 73 markStack.append(&next);74 markStack.append(&object);75 markStack.append(&globalObject);76 markStack.append(&globalThis);73 visitor.append(&next); 74 visitor.append(&object); 75 visitor.append(&globalObject); 76 visitor.append(&globalThis); 77 77 } 78 78 -
trunk/Source/JavaScriptCore/runtime/ScopeChain.h
r84052 r84556 33 33 class MarkStack; 34 34 class ScopeChainIterator; 35 typedef MarkStack SlotVisitor; 35 36 36 37 class ScopeChainNode : public JSCell { … … 67 68 68 69 static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info); } 69 virtual void markChildren(MarkStack&);70 virtual void visitChildren(SlotVisitor&); 70 71 private: 71 static const unsigned StructureFlags = Overrides MarkChildren;72 static const unsigned StructureFlags = OverridesVisitChildren; 72 73 static const ClassInfo s_info; 73 74 }; -
trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp
r81191 r84556 75 75 } 76 76 77 void SmallStrings:: markChildren(HeapRootMarker& heapRootMarker)77 void SmallStrings::visitChildren(HeapRootVisitor& heapRootMarker) 78 78 { 79 79 /* -
trunk/Source/JavaScriptCore/runtime/SmallStrings.h
r81191 r84556 34 34 namespace JSC { 35 35 36 class HeapRoot Marker;36 class HeapRootVisitor; 37 37 class JSGlobalData; 38 38 class JSString; 39 39 class MarkStack; 40 40 class SmallStringsStorage; 41 typedef MarkStack SlotVisitor; 41 42 42 43 static const unsigned maxSingleCharacterString = 0xFF; … … 64 65 StringImpl* singleCharacterStringRep(unsigned char character); 65 66 66 void markChildren(HeapRootMarker&);67 void visitChildren(HeapRootVisitor&); 67 68 void clear(); 68 69 -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r84121 r84556 199 199 Structure::Structure(JSGlobalData& globalData) 200 200 : JSCell(globalData, this) 201 , m_typeInfo(CompoundType, Overrides MarkChildren)201 , m_typeInfo(CompoundType, OverridesVisitChildren) 202 202 , m_prototype(globalData, this, jsNull()) 203 203 , m_classInfo(&s_info) … … 766 766 } 767 767 768 void Structure:: markChildren(MarkStack& markStack)769 { 770 JSCell:: markChildren(markStack);768 void Structure::visitChildren(SlotVisitor& visitor) 769 { 770 JSCell::visitChildren(visitor); 771 771 if (m_prototype) 772 markStack.append(&m_prototype);772 visitor.append(&m_prototype); 773 773 if (m_cachedPrototypeChain) 774 markStack.append(&m_cachedPrototypeChain);774 visitor.append(&m_cachedPrototypeChain); 775 775 if (m_previous) 776 markStack.append(&m_previous);776 visitor.append(&m_previous); 777 777 if (m_specificValueInPrevious) 778 markStack.append(&m_specificValueInPrevious);778 visitor.append(&m_specificValueInPrevious); 779 779 if (m_enumerationCache) 780 markStack.append(&m_enumerationCache);780 visitor.append(&m_enumerationCache); 781 781 if (m_propertyTable) { 782 782 PropertyTable::iterator end = m_propertyTable->end(); 783 783 for (PropertyTable::iterator ptr = m_propertyTable->begin(); ptr != end; ++ptr) { 784 784 if (ptr->specificValue) 785 markStack.append(&ptr->specificValue);785 visitor.append(&ptr->specificValue); 786 786 } 787 787 } -
trunk/Source/JavaScriptCore/runtime/Structure.h
r84121 r84556 48 48 class PropertyNameArrayData; 49 49 class StructureChain; 50 typedef MarkStack SlotVisitor; 50 51 51 52 struct ClassInfo; … … 100 101 JSValue prototypeForLookup(ExecState*) const; 101 102 StructureChain* prototypeChain(ExecState*) const; 102 void markChildren(MarkStack&);103 void visitChildren(SlotVisitor&); 103 104 104 105 Structure* previousID() const { return m_previous.get(); } -
trunk/Source/JavaScriptCore/runtime/StructureChain.cpp
r84052 r84556 54 54 } 55 55 56 void StructureChain:: markChildren(MarkStack& markStack)56 void StructureChain::visitChildren(SlotVisitor& visitor) 57 57 { 58 58 size_t i = 0; 59 59 while (m_vector[i]) 60 markStack.append(&m_vector[i++]);60 visitor.append(&m_vector[i++]); 61 61 } 62 62 -
trunk/Source/JavaScriptCore/runtime/StructureChain.h
r84052 r84556 45 45 static StructureChain* create(JSGlobalData& globalData, Structure* head) { return new (&globalData) StructureChain(globalData, globalData.structureChainStructure.get(), head); } 46 46 WriteBarrier<Structure>* head() { return m_vector.get(); } 47 void markChildren(MarkStack&);47 void visitChildren(SlotVisitor&); 48 48 49 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { return Structure::create(globalData, prototype, TypeInfo(CompoundType, Overrides MarkChildren), 0, &s_info); }49 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren), 0, &s_info); } 50 50 51 51 private: -
trunk/Source/JavaScriptGlue/ChangeLog
r84290 r84556 1 2011-04-21 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Geoffrey Garen. 4 5 Start moving to a general visitor pattern for GC traversal 6 https://bugs.webkit.org/show_bug.cgi?id=59141 7 8 This is just a rename: 9 markChildren -> visitChildren 10 markAggregate -> visitAggregate 11 markStack -> visitor 12 MarkStack -> typedef'd to SlotVisitor 13 14 * UserObjectImp.cpp: 15 (UserObjectImp::visitChildren): 16 1 17 2011-04-19 Renata Hodovan <reni@webkit.org> 2 18 -
trunk/Source/JavaScriptGlue/UserObjectImp.cpp
r84052 r84556 405 405 } 406 406 407 void UserObjectImp:: markChildren(MarkStack& markStack)408 { 409 JSObject:: markChildren(markStack);407 void UserObjectImp::visitChildren(SlotVisitor& visitor) 408 { 409 JSObject::visitChildren(visitor); 410 410 if (fJSUserObject) 411 411 fJSUserObject->Mark(); -
trunk/Source/JavaScriptGlue/UserObjectImp.h
r84052 r84556 55 55 virtual UString toString(ExecState *exec) const; 56 56 57 virtual void markChildren(MarkStack&);57 virtual void visitChildren(SlotVisitor&); 58 58 59 59 JSUserObject *GetJSUserObject() const; … … 61 61 static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) 62 62 { 63 return Structure::create(globalData, prototype, TypeInfo(ObjectType, OverridesGetOwnPropertySlot | Overrides MarkChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info);63 return Structure::create(globalData, prototype, TypeInfo(ObjectType, OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info); 64 64 } 65 65 -
trunk/Source/WebCore/ChangeLog
r84553 r84556 1 2011-04-21 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Geoffrey Garen. 4 5 Start moving to a general visitor pattern for GC traversal 6 https://bugs.webkit.org/show_bug.cgi?id=59141 7 8 This is just a rename: 9 markChildren -> visitChildren 10 markAggregate -> visitAggregate 11 markStack -> visitor 12 MarkStack -> typedef'd to SlotVisitor 13 14 * bindings/js/JSAttrCustom.cpp: 15 (WebCore::JSAttr::visitChildren): 16 * bindings/js/JSAudioConstructor.cpp: 17 (WebCore::constructAudio): 18 * bindings/js/JSCSSRuleCustom.cpp: 19 (WebCore::JSCSSRule::visitChildren): 20 * bindings/js/JSCSSStyleDeclarationCustom.cpp: 21 (WebCore::JSCSSStyleDeclaration::visitChildren): 22 * bindings/js/JSDOMBinding.cpp: 23 (WebCore::visitActiveObjectsForContext): 24 (WebCore::markDOMObjectWrapper): 25 * bindings/js/JSDOMBinding.h: 26 * bindings/js/JSDOMGlobalObject.cpp: 27 (WebCore::JSDOMGlobalObject::visitChildren): 28 * bindings/js/JSDOMGlobalObject.h: 29 * bindings/js/JSDOMImplementationCustom.cpp: 30 (WebCore::JSDOMImplementation::visitChildren): 31 * bindings/js/JSDOMWindowCustom.cpp: 32 (WebCore::JSDOMWindow::visitChildren): 33 * bindings/js/JSDOMWindowShell.cpp: 34 (WebCore::JSDOMWindowShell::visitChildren): 35 * bindings/js/JSDOMWindowShell.h: 36 * bindings/js/JSDocumentCustom.cpp: 37 (WebCore::JSDocument::visitChildren): 38 * bindings/js/JSElementCustom.cpp: 39 (WebCore::JSElement::visitChildren): 40 * bindings/js/JSEventListener.cpp: 41 (WebCore::JSEventListener::markJSFunction): 42 * bindings/js/JSEventListener.h: 43 * bindings/js/JSHTMLCanvasElementCustom.cpp: 44 (WebCore::JSHTMLCanvasElement::visitChildren): 45 * bindings/js/JSHTMLLinkElementCustom.cpp: 46 (WebCore::JSHTMLLinkElement::visitChildren): 47 * bindings/js/JSHTMLStyleElementCustom.cpp: 48 (WebCore::JSHTMLStyleElement::visitChildren): 49 * bindings/js/JSImageConstructor.cpp: 50 (WebCore::constructImage): 51 * bindings/js/JSJavaScriptAudioNodeCustom.cpp: 52 (WebCore::JSJavaScriptAudioNode::visitChildren): 53 * bindings/js/JSMessageChannelCustom.cpp: 54 (WebCore::JSMessageChannel::visitChildren): 55 * bindings/js/JSMessagePortCustom.cpp: 56 (WebCore::JSMessagePort::visitChildren): 57 * bindings/js/JSNamedNodeMapCustom.cpp: 58 (WebCore::JSNamedNodeMapOwner::isReachableFromOpaqueRoots): 59 (WebCore::JSNamedNodeMap::visitChildren): 60 * bindings/js/JSNavigatorCustom.cpp: 61 (WebCore::JSNavigator::visitChildren): 62 * bindings/js/JSNodeCustom.cpp: 63 (WebCore::isObservable): 64 (WebCore::isReachableFromDOM): 65 (WebCore::JSNodeOwner::isReachableFromOpaqueRoots): 66 (WebCore::JSNode::visitChildren): 67 * bindings/js/JSNodeCustom.h: 68 * bindings/js/JSNodeFilterCondition.cpp: 69 (WebCore::JSNodeFilterCondition::WeakOwner::isReachableFromOpaqueRoots): 70 * bindings/js/JSNodeFilterCondition.h: 71 * bindings/js/JSNodeFilterCustom.cpp: 72 (WebCore::JSNodeFilter::visitChildren): 73 * bindings/js/JSNodeIteratorCustom.cpp: 74 (WebCore::JSNodeIterator::visitChildren): 75 * bindings/js/JSNodeListCustom.cpp: 76 (WebCore::JSNodeListOwner::isReachableFromOpaqueRoots): 77 * bindings/js/JSProcessingInstructionCustom.cpp: 78 (WebCore::JSProcessingInstruction::visitChildren): 79 * bindings/js/JSSVGElementInstanceCustom.cpp: 80 (WebCore::JSSVGElementInstance::visitChildren): 81 * bindings/js/JSSharedWorkerCustom.cpp: 82 (WebCore::JSSharedWorker::visitChildren): 83 * bindings/js/JSStyleSheetCustom.cpp: 84 (WebCore::JSStyleSheet::visitChildren): 85 * bindings/js/JSTreeWalkerCustom.cpp: 86 (WebCore::JSTreeWalker::visitChildren): 87 * bindings/js/JSWebGLRenderingContextCustom.cpp: 88 (WebCore::JSWebGLRenderingContext::visitChildren): 89 * bindings/js/JSWebKitAnimationListCustom.cpp: 90 (WebCore::JSWebKitAnimationList::visitChildren): 91 * bindings/js/JSWorkerContextCustom.cpp: 92 (WebCore::JSWorkerContext::visitChildren): 93 * bindings/js/JSXMLHttpRequestCustom.cpp: 94 (WebCore::JSXMLHttpRequest::visitChildren): 95 * bindings/js/JSXMLHttpRequestUploadCustom.cpp: 96 (WebCore::JSXMLHttpRequestUpload::visitChildren): 97 * bindings/scripts/CodeGeneratorJS.pm: 98 * bridge/qt/qt_instance.cpp: 99 (JSC::Bindings::QtRuntimeObject::visitChildren): 100 (JSC::Bindings::QtInstance::markAggregate): 101 * bridge/qt/qt_instance.h: 102 * bridge/qt/qt_pixmapruntime.cpp: 103 * bridge/qt/qt_runtime.cpp: 104 (JSC::Bindings::QtRuntimeMetaMethod::visitChildren): 105 * bridge/qt/qt_runtime.h: 106 * dom/EventListener.h: 107 (WebCore::EventListener::visitJSFunction): 108 * dom/EventTarget.h: 109 (WebCore::EventTarget::visitJSEventListeners): 110 * dom/Node.h: 111 * dom/NodeFilterCondition.h: 112 (WebCore::NodeFilterCondition::visitAggregate): 113 * page/DOMWindow.h: 114 * workers/WorkerContext.h: 115 1 116 2011-04-21 Beth Dakin <bdakin@apple.com> 2 117 -
trunk/Source/WebCore/bindings/js/JSAttrCustom.cpp
r83938 r84556 40 40 using namespace HTMLNames; 41 41 42 void JSAttr:: markChildren(MarkStack& markStack)42 void JSAttr::visitChildren(SlotVisitor& visitor) 43 43 { 44 Base:: markChildren(markStack);44 Base::visitChildren(visitor); 45 45 46 46 Element* element = impl()->ownerElement(); 47 47 if (!element) 48 48 return; 49 markStack.addOpaqueRoot(root(element));49 visitor.addOpaqueRoot(root(element)); 50 50 } 51 51 -
trunk/Source/WebCore/bindings/js/JSAudioConstructor.cpp
r81272 r84556 57 57 58 58 // Calling toJS on the document causes the JS document wrapper to be 59 // added to the window object. This is done to ensure that JSDocument:: markChildren59 // added to the window object. This is done to ensure that JSDocument::visitChildren 60 60 // will be called, which will cause the audio element to be marked if necessary. 61 61 toJS(exec, jsConstructor->globalObject(), document); -
trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp
r84527 r84556 80 80 } 81 81 82 void JSCSSRule:: markChildren(MarkStack& markStack)82 void JSCSSRule::visitChildren(SlotVisitor& visitor) 83 83 { 84 Base:: markChildren(markStack);85 markStack.addOpaqueRoot(root(impl()));84 Base::visitChildren(visitor); 85 visitor.addOpaqueRoot(root(impl())); 86 86 } 87 87 -
trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
r84527 r84556 74 74 } 75 75 76 void JSCSSStyleDeclaration:: markChildren(MarkStack& markStack)77 { 78 Base:: markChildren(markStack);79 markStack.addOpaqueRoot(root(impl()));76 void JSCSSStyleDeclaration::visitChildren(SlotVisitor& visitor) 77 { 78 Base::visitChildren(visitor); 79 visitor.addOpaqueRoot(root(impl())); 80 80 } 81 81 -
trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp
r84194 r84556 135 135 } 136 136 137 void markActiveObjectsForContext(MarkStack& markStack, JSGlobalData& globalData, ScriptExecutionContext* scriptExecutionContext)137 void visitActiveObjectsForContext(SlotVisitor& visitor, JSGlobalData& globalData, ScriptExecutionContext* scriptExecutionContext) 138 138 { 139 139 // If an element has pending activity that may result in event listeners being called … … 146 146 // Generally, an active object with pending activity must have a wrapper to mark its listeners. 147 147 // However, some ActiveDOMObjects don't have JS wrappers. 148 markDOMObjectWrapper( markStack, globalData, iter->second);148 markDOMObjectWrapper(visitor, globalData, iter->second); 149 149 } 150 150 } … … 155 155 // If the message port is remotely entangled, then always mark it as in-use because we can't determine reachability across threads. 156 156 if (!(*iter)->locallyEntangledPort() || (*iter)->hasPendingActivity()) 157 markDOMObjectWrapper( markStack, globalData, *iter);158 } 159 } 160 161 void markDOMObjectWrapper( MarkStack& markStack, JSGlobalData& globalData, void* object)157 markDOMObjectWrapper(visitor, globalData, *iter); 158 } 159 } 160 161 void markDOMObjectWrapper(SlotVisitor& visitor, JSGlobalData& globalData, void* object) 162 162 { 163 163 // FIXME: This could be changed to only mark wrappers that are "observable" … … 169 169 for (JSGlobalDataWorldIterator worldIter(&globalData); worldIter; ++worldIter) { 170 170 if (JSDOMWrapper* wrapper = worldIter->m_wrappers.get(object).get()) 171 markStack.deprecatedAppend(reinterpret_cast<JSCell**>(&wrapper));171 visitor.deprecatedAppend(reinterpret_cast<JSCell**>(&wrapper)); 172 172 } 173 173 } -
trunk/Source/WebCore/bindings/js/JSDOMBinding.h
r84194 r84556 90 90 91 91 protected: 92 static const unsigned StructureFlags = JSC::ImplementsHasInstance | JSC::Overrides MarkChildren | JSDOMWrapperWithGlobalPointer::StructureFlags;92 static const unsigned StructureFlags = JSC::ImplementsHasInstance | JSC::OverridesVisitChildren | JSDOMWrapperWithGlobalPointer::StructureFlags; 93 93 DOMConstructorObject(JSC::Structure* structure, JSDOMGlobalObject* globalObject) 94 94 : JSDOMWrapperWithGlobalPointer(structure, globalObject) … … 114 114 }; 115 115 116 void markActiveObjectsForContext(JSC::MarkStack&, JSC::JSGlobalData&, ScriptExecutionContext*);117 void markDOMObjectWrapper(JSC:: MarkStack&, JSC::JSGlobalData& globalData, void* object);116 void visitActiveObjectsForContext(JSC::SlotVisitor&, JSC::JSGlobalData&, ScriptExecutionContext*); 117 void markDOMObjectWrapper(JSC::SlotVisitor&, JSC::JSGlobalData&, void*); 118 118 119 119 JSC::Structure* getCachedDOMStructure(JSDOMGlobalObject*, const JSC::ClassInfo*); -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp
r84052 r84556 51 51 } 52 52 53 void JSDOMGlobalObject:: markChildren(MarkStack& markStack)53 void JSDOMGlobalObject::visitChildren(SlotVisitor& visitor) 54 54 { 55 Base:: markChildren(markStack);55 Base::visitChildren(visitor); 56 56 57 57 JSDOMStructureMap::iterator end = structures().end(); 58 58 for (JSDOMStructureMap::iterator it = structures().begin(); it != end; ++it) 59 markStack.append(&it->second);59 visitor.append(&it->second); 60 60 61 61 JSDOMConstructorMap::iterator end2 = constructors().end(); 62 62 for (JSDOMConstructorMap::iterator it2 = constructors().begin(); it2 != end2; ++it2) 63 markStack.append(&it2->second);63 visitor.append(&it2->second); 64 64 65 65 if (m_injectedScript) 66 markStack.append(&m_injectedScript);66 visitor.append(&m_injectedScript); 67 67 } 68 68 -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h
r84052 r84556 64 64 JSObject* injectedScript() const; 65 65 66 virtual void markChildren(JSC::MarkStack&);66 virtual void visitChildren(JSC::SlotVisitor&); 67 67 68 68 DOMWrapperWorld* world() { return m_world.get(); } -
trunk/Source/WebCore/bindings/js/JSDOMImplementationCustom.cpp
r83938 r84556 30 30 namespace WebCore { 31 31 32 void JSDOMImplementation:: markChildren(MarkStack& markStack)32 void JSDOMImplementation::visitChildren(SlotVisitor& visitor) 33 33 { 34 Base:: markChildren(markStack);34 Base::visitChildren(visitor); 35 35 36 36 Document* ownerDocument = impl()->ownerDocument(); 37 37 if (!ownerDocument) 38 38 return; 39 markStack.addOpaqueRoot(ownerDocument);39 visitor.addOpaqueRoot(ownerDocument); 40 40 } 41 41 -
trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
r84194 r84556 73 73 namespace WebCore { 74 74 75 void JSDOMWindow:: markChildren(MarkStack& markStack)76 { 77 Base:: markChildren(markStack);78 79 impl()-> markJSEventListeners(markStack);75 void JSDOMWindow::visitChildren(SlotVisitor& visitor) 76 { 77 Base::visitChildren(visitor); 78 79 impl()->visitJSEventListeners(visitor); 80 80 81 81 JSGlobalData& globalData = *Heap::heap(this)->globalData(); 82 82 83 markDOMObjectWrapper( markStack, globalData, impl()->optionalConsole());84 markDOMObjectWrapper( markStack, globalData, impl()->optionalHistory());85 markDOMObjectWrapper( markStack, globalData, impl()->optionalLocationbar());86 markDOMObjectWrapper( markStack, globalData, impl()->optionalMenubar());87 markDOMObjectWrapper( markStack, globalData, impl()->optionalNavigator());88 markDOMObjectWrapper( markStack, globalData, impl()->optionalPersonalbar());89 markDOMObjectWrapper( markStack, globalData, impl()->optionalScreen());90 markDOMObjectWrapper( markStack, globalData, impl()->optionalScrollbars());91 markDOMObjectWrapper( markStack, globalData, impl()->optionalSelection());92 markDOMObjectWrapper( markStack, globalData, impl()->optionalStatusbar());93 markDOMObjectWrapper( markStack, globalData, impl()->optionalToolbar());94 markDOMObjectWrapper( markStack, globalData, impl()->optionalLocation());95 markDOMObjectWrapper( markStack, globalData, impl()->optionalMedia());83 markDOMObjectWrapper(visitor, globalData, impl()->optionalConsole()); 84 markDOMObjectWrapper(visitor, globalData, impl()->optionalHistory()); 85 markDOMObjectWrapper(visitor, globalData, impl()->optionalLocationbar()); 86 markDOMObjectWrapper(visitor, globalData, impl()->optionalMenubar()); 87 markDOMObjectWrapper(visitor, globalData, impl()->optionalNavigator()); 88 markDOMObjectWrapper(visitor, globalData, impl()->optionalPersonalbar()); 89 markDOMObjectWrapper(visitor, globalData, impl()->optionalScreen()); 90 markDOMObjectWrapper(visitor, globalData, impl()->optionalScrollbars()); 91 markDOMObjectWrapper(visitor, globalData, impl()->optionalSelection()); 92 markDOMObjectWrapper(visitor, globalData, impl()->optionalStatusbar()); 93 markDOMObjectWrapper(visitor, globalData, impl()->optionalToolbar()); 94 markDOMObjectWrapper(visitor, globalData, impl()->optionalLocation()); 95 markDOMObjectWrapper(visitor, globalData, impl()->optionalMedia()); 96 96 #if ENABLE(DOM_STORAGE) 97 markDOMObjectWrapper( markStack, globalData, impl()->optionalSessionStorage());98 markDOMObjectWrapper( markStack, globalData, impl()->optionalLocalStorage());97 markDOMObjectWrapper(visitor, globalData, impl()->optionalSessionStorage()); 98 markDOMObjectWrapper(visitor, globalData, impl()->optionalLocalStorage()); 99 99 #endif 100 100 #if ENABLE(OFFLINE_WEB_APPLICATIONS) 101 markDOMObjectWrapper( markStack, globalData, impl()->optionalApplicationCache());101 markDOMObjectWrapper(visitor, globalData, impl()->optionalApplicationCache()); 102 102 #endif 103 103 } -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp
r84371 r84556 33 33 #include "JSDOMWindow.h" 34 34 #include "DOMWindow.h" 35 #include "ScriptController.h" 35 36 #include <runtime/JSObject.h> 36 37 … … 73 74 // ---- 74 75 75 void JSDOMWindowShell:: markChildren(MarkStack& markStack)76 void JSDOMWindowShell::visitChildren(SlotVisitor& visitor) 76 77 { 77 Base:: markChildren(markStack);78 Base::visitChildren(visitor); 78 79 if (m_window) 79 markStack.append(&m_window);80 visitor.append(&m_window); 80 81 } 81 82 -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h
r84052 r84556 67 67 68 68 private: 69 static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::Overrides MarkChildren | JSC::OverridesGetPropertyNames | Base::StructureFlags;69 static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesVisitChildren | JSC::OverridesGetPropertyNames | Base::StructureFlags; 70 70 71 virtual void markChildren(JSC::MarkStack&);71 virtual void visitChildren(JSC::SlotVisitor&); 72 72 virtual JSC::UString className() const; 73 73 virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); -
trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp
r84527 r84556 35 35 #include "JSTouchList.h" 36 36 #include "Location.h" 37 #include "ScriptController.h" 37 38 #include "TouchList.h" 38 39 … … 48 49 namespace WebCore { 49 50 50 void JSDocument:: markChildren(MarkStack& markStack)51 void JSDocument::visitChildren(SlotVisitor& visitor) 51 52 { 52 JSNode:: markChildren(markStack);53 JSNode::visitChildren(visitor); 53 54 54 55 Document* document = impl(); 55 56 JSGlobalData& globalData = *Heap::heap(this)->globalData(); 56 57 57 markActiveObjectsForContext(markStack, globalData, document);58 markDOMObjectWrapper( markStack, globalData, document->implementation());58 visitActiveObjectsForContext(visitor, globalData, document); 59 markDOMObjectWrapper(visitor, globalData, document->implementation()); 59 60 } 60 61 -
trunk/Source/WebCore/bindings/js/JSElementCustom.cpp
r84194 r84556 52 52 using namespace HTMLNames; 53 53 54 void JSElement:: markChildren(MarkStack& markStack)54 void JSElement::visitChildren(SlotVisitor& visitor) 55 55 { 56 Base:: markChildren(markStack);56 Base::visitChildren(visitor); 57 57 58 58 Element* element = impl(); 59 59 JSGlobalData& globalData = *Heap::heap(this)->globalData(); 60 60 61 markDOMObjectWrapper( markStack, globalData, element->attributeMap());62 markDOMObjectWrapper( markStack, globalData, element->optionalClassList());63 markDOMObjectWrapper( markStack, globalData, element->optionalDataset());61 markDOMObjectWrapper(visitor, globalData, element->attributeMap()); 62 markDOMObjectWrapper(visitor, globalData, element->optionalClassList()); 63 markDOMObjectWrapper(visitor, globalData, element->optionalDataset()); 64 64 65 65 if (element->isStyledElement()) 66 markDOMObjectWrapper( markStack, globalData, static_cast<StyledElement*>(element)->inlineStyleDecl());66 markDOMObjectWrapper(visitor, globalData, static_cast<StyledElement*>(element)->inlineStyleDecl()); 67 67 } 68 68 -
trunk/Source/WebCore/bindings/js/JSEventListener.cpp
r84052 r84556 57 57 } 58 58 59 void JSEventListener::markJSFunction( MarkStack& markStack)59 void JSEventListener::markJSFunction(SlotVisitor& visitor) 60 60 { 61 61 if (m_jsFunction) 62 markStack.append(&m_jsFunction);62 visitor.append(&m_jsFunction); 63 63 } 64 64 -
trunk/Source/WebCore/bindings/js/JSEventListener.h
r83385 r84556 58 58 private: 59 59 virtual JSC::JSObject* initializeJSFunction(ScriptExecutionContext*) const; 60 virtual void markJSFunction(JSC:: MarkStack&);60 virtual void markJSFunction(JSC::SlotVisitor&); 61 61 virtual bool virtualisAttribute() const; 62 62 -
trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp
r81899 r84556 41 41 namespace WebCore { 42 42 43 void JSHTMLCanvasElement:: markChildren(MarkStack& markStack)43 void JSHTMLCanvasElement::visitChildren(SlotVisitor& visitor) 44 44 { 45 Base:: markChildren(markStack);45 Base::visitChildren(visitor); 46 46 47 47 HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(impl()); 48 48 JSGlobalData& globalData = *Heap::heap(this)->globalData(); 49 49 50 markDOMObjectWrapper( markStack, globalData, canvas->renderingContext());50 markDOMObjectWrapper(visitor, globalData, canvas->renderingContext()); 51 51 } 52 52 -
trunk/Source/WebCore/bindings/js/JSHTMLLinkElementCustom.cpp
r72344 r84556 33 33 namespace WebCore { 34 34 35 void JSHTMLLinkElement:: markChildren(MarkStack& markStack)35 void JSHTMLLinkElement::visitChildren(SlotVisitor& visitor) 36 36 { 37 Base:: markChildren(markStack);37 Base::visitChildren(visitor); 38 38 39 39 if (StyleSheet* sheet = static_cast<HTMLLinkElement*>(impl())->sheet()) 40 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), sheet);40 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), sheet); 41 41 } 42 42 -
trunk/Source/WebCore/bindings/js/JSHTMLStyleElementCustom.cpp
r72344 r84556 33 33 namespace WebCore { 34 34 35 void JSHTMLStyleElement:: markChildren(MarkStack& markStack)35 void JSHTMLStyleElement::visitChildren(SlotVisitor& visitor) 36 36 { 37 Base:: markChildren(markStack);37 Base::visitChildren(visitor); 38 38 39 39 if (StyleSheet* sheet = static_cast<HTMLStyleElement*>(impl())->sheet()) 40 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), sheet);40 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), sheet); 41 41 } 42 42 -
trunk/Source/WebCore/bindings/js/JSImageConstructor.cpp
r81272 r84556 50 50 51 51 // Calling toJS on the document causes the JS document wrapper to be 52 // added to the window object. This is done to ensure that JSDocument:: markChildren52 // added to the window object. This is done to ensure that JSDocument::visit 53 53 // will be called, which will cause the image element to be marked if necessary. 54 54 toJS(exec, jsConstructor->globalObject(), document); -
trunk/Source/WebCore/bindings/js/JSJavaScriptAudioNodeCustom.cpp
r72838 r84556 35 35 namespace WebCore { 36 36 37 void JSJavaScriptAudioNode:: markChildren(MarkStack& markStack)37 void JSJavaScriptAudioNode::visitChildren(SlotVisitor& visitor) 38 38 { 39 Base:: markChildren(markStack);40 static_cast<JavaScriptAudioNode*>(impl())->markJSEventListeners( markStack);39 Base::visitChildren(visitor); 40 static_cast<JavaScriptAudioNode*>(impl())->markJSEventListeners(visitor); 41 41 } 42 42 -
trunk/Source/WebCore/bindings/js/JSMessageChannelCustom.cpp
r61136 r84556 34 34 namespace WebCore { 35 35 36 void JSMessageChannel:: markChildren(MarkStack& markStack)36 void JSMessageChannel::visitChildren(SlotVisitor& visitor) 37 37 { 38 Base:: markChildren(markStack);38 Base::visitChildren(visitor); 39 39 40 40 if (MessagePort* port = m_impl->port1()) 41 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), port);41 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), port); 42 42 43 43 if (MessagePort* port = m_impl->port2()) 44 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), port);44 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), port); 45 45 } 46 46 -
trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
r65077 r84556 42 42 namespace WebCore { 43 43 44 void JSMessagePort:: markChildren(MarkStack& markStack)44 void JSMessagePort::visitChildren(SlotVisitor& visitor) 45 45 { 46 Base:: markChildren(markStack);46 Base::visitChildren(visitor); 47 47 48 48 // If we have a locally entangled port, we can directly mark it as reachable. Ports that are remotely entangled are marked in-use by markActiveObjectsForContext(). 49 49 if (MessagePort* entangledPort = m_impl->locallyEntangledPort()) 50 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), entangledPort);50 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), entangledPort); 51 51 52 m_impl-> markJSEventListeners(markStack);52 m_impl->visitJSEventListeners(visitor); 53 53 } 54 54 -
trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp
r84309 r84556 28 28 29 29 #include "JSNode.h" 30 30 31 #include "Element.h" 31 32 #include "NamedNodeMap.h" … … 36 37 37 38 class JSNamedNodeMapOwner : public JSC::WeakHandleOwner { 38 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC:: MarkStack&);39 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&); 39 40 virtual void finalize(JSC::Handle<JSC::Unknown>, void* context); 40 41 }; 41 42 42 bool JSNamedNodeMapOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, MarkStack& markStack)43 bool JSNamedNodeMapOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) 43 44 { 44 45 JSNamedNodeMap* jsNamedNodeMap = static_cast<JSNamedNodeMap*>(handle.get().asCell()); … … 48 49 if (!element) 49 50 return false; 50 return markStack.containsOpaqueRoot(root(element));51 return visitor.containsOpaqueRoot(root(element)); 51 52 } 52 53 … … 80 81 } 81 82 82 void JSNamedNodeMap:: markChildren(MarkStack& markStack)83 void JSNamedNodeMap::visitChildren(SlotVisitor& visitor) 83 84 { 84 Base:: markChildren(markStack);85 Base::visitChildren(visitor); 85 86 86 87 // We need to keep the wrapper for our underlying NamedNodeMap's element … … 91 92 if (!element) 92 93 return; 93 markStack.addOpaqueRoot(root(element));94 visitor.addOpaqueRoot(root(element)); 94 95 } 95 96 -
trunk/Source/WebCore/bindings/js/JSNavigatorCustom.cpp
r83287 r84556 33 33 using namespace JSC; 34 34 35 void JSNavigator:: markChildren(MarkStack& markStack)35 void JSNavigator::visitChildren(SlotVisitor& visitor) 36 36 { 37 Base:: markChildren(markStack);37 Base::visitChildren(visitor); 38 38 39 39 JSGlobalData& globalData = *Heap::heap(this)->globalData(); 40 40 41 markDOMObjectWrapper( markStack, globalData, impl()->optionalGeolocation());41 markDOMObjectWrapper(visitor, globalData, impl()->optionalGeolocation()); 42 42 } 43 43 -
trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp
r84520 r84556 109 109 // those objects through the DOM must reflect those properties. 110 110 // FIXME: It would be better if this logic could be in the node next to 111 // the custom markChildrenfunctions rather than here.111 // the custom visit functions rather than here. 112 112 // Note that for some compound objects like stylesheets and CSSStyleDeclarations, 113 113 // we don't descend to check children for custom properties, and just conservatively … … 148 148 } 149 149 150 static inline bool isReachableFromDOM(JSNode* jsNode, Node* node, DOMWrapperWorld* world, MarkStack& markStack)150 static inline bool isReachableFromDOM(JSNode* jsNode, Node* node, DOMWrapperWorld* world, SlotVisitor& visitor) 151 151 { 152 152 if (!node->inDocument()) { … … 171 171 } 172 172 173 return isObservable(jsNode, node, world) && markStack.containsOpaqueRoot(root(node));174 } 175 176 bool JSNodeOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void* context, MarkStack& markStack)173 return isObservable(jsNode, node, world) && visitor.containsOpaqueRoot(root(node)); 174 } 175 176 bool JSNodeOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void* context, SlotVisitor& visitor) 177 177 { 178 178 JSNode* jsNode = static_cast<JSNode*>(handle.get().asCell()); 179 179 DOMWrapperWorld* world = static_cast<DOMWrapperWorld*>(context); 180 return isReachableFromDOM(jsNode, jsNode->impl(), world, markStack);180 return isReachableFromDOM(jsNode, jsNode->impl(), world, visitor); 181 181 } 182 182 … … 237 237 } 238 238 239 void JSNode:: markChildren(MarkStack& markStack)240 { 241 Base:: markChildren(markStack);239 void JSNode::visitChildren(SlotVisitor& visitor) 240 { 241 Base::visitChildren(visitor); 242 242 243 243 Node* node = m_impl.get(); 244 node-> markJSEventListeners(markStack);245 246 markStack.addOpaqueRoot(root(node));244 node->visitJSEventListeners(visitor); 245 246 visitor.addOpaqueRoot(root(node)); 247 247 } 248 248 -
trunk/Source/WebCore/bindings/js/JSNodeCustom.h
r84527 r84556 36 36 37 37 class JSNodeOwner : public JSC::WeakHandleOwner { 38 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC:: MarkStack&);38 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&); 39 39 virtual void finalize(JSC::Handle<JSC::Unknown>, void* context); 40 40 }; -
trunk/Source/WebCore/bindings/js/JSNodeFilterCondition.cpp
r84024 r84556 84 84 } 85 85 86 bool JSNodeFilterCondition::WeakOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, MarkStack& markStack)86 bool JSNodeFilterCondition::WeakOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, SlotVisitor& visitor) 87 87 { 88 return markStack.containsOpaqueRoot(context);88 return visitor.containsOpaqueRoot(context); 89 89 } 90 90 -
trunk/Source/WebCore/bindings/js/JSNodeFilterCondition.h
r84021 r84556 44 44 45 45 class WeakOwner : public JSC::WeakHandleOwner { 46 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC:: MarkStack&);46 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&); 47 47 }; 48 48 WeakOwner m_weakOwner; -
trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
r84021 r84556 37 37 namespace WebCore { 38 38 39 void JSNodeFilter:: markChildren(MarkStack& markStack)39 void JSNodeFilter::visitChildren(SlotVisitor& visitor) 40 40 { 41 Base:: markChildren(markStack);42 markStack.addOpaqueRoot(impl());41 Base::visitChildren(visitor); 42 visitor.addOpaqueRoot(impl()); 43 43 } 44 44 -
trunk/Source/WebCore/bindings/js/JSNodeIteratorCustom.cpp
r84021 r84556 30 30 namespace WebCore { 31 31 32 void JSNodeIterator:: markChildren(MarkStack& markStack)32 void JSNodeIterator::visitChildren(SlotVisitor& visitor) 33 33 { 34 Base:: markChildren(markStack);34 Base::visitChildren(visitor); 35 35 36 36 if (NodeFilter* filter = m_impl->filter()) 37 markStack.addOpaqueRoot(filter);37 visitor.addOpaqueRoot(filter); 38 38 } 39 39 -
trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp
r84309 r84556 38 38 39 39 class JSNodeListOwner : public JSC::WeakHandleOwner { 40 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC:: MarkStack&);40 virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&); 41 41 virtual void finalize(JSC::Handle<JSC::Unknown>, void* context); 42 42 }; 43 43 44 bool JSNodeListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, MarkStack& markStack)44 bool JSNodeListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) 45 45 { 46 46 JSNodeList* jsNodeList = static_cast<JSNodeList*>(handle.get().asCell()); … … 49 49 if (!jsNodeList->impl()->isDynamicNodeList()) 50 50 return false; 51 return markStack.containsOpaqueRoot(root(static_cast<DynamicNodeList*>(jsNodeList->impl())->rootNode()));51 return visitor.containsOpaqueRoot(root(static_cast<DynamicNodeList*>(jsNodeList->impl())->rootNode())); 52 52 } 53 53 -
trunk/Source/WebCore/bindings/js/JSProcessingInstructionCustom.cpp
r72344 r84556 33 33 namespace WebCore { 34 34 35 void JSProcessingInstruction:: markChildren(MarkStack& markStack)35 void JSProcessingInstruction::visitChildren(SlotVisitor& visitor) 36 36 { 37 Base:: markChildren(markStack);37 Base::visitChildren(visitor); 38 38 39 39 if (StyleSheet* sheet = static_cast<ProcessingInstruction*>(impl())->sheet()) 40 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), sheet);40 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), sheet); 41 41 } 42 42 -
trunk/Source/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp
r83938 r84556 34 34 namespace WebCore { 35 35 36 void JSSVGElementInstance:: markChildren(JSC::MarkStack& markStack)36 void JSSVGElementInstance::visitChildren(JSC::SlotVisitor& visitor) 37 37 { 38 Base:: markChildren(markStack);39 markStack.addOpaqueRoot(root(impl()->correspondingElement()));38 Base::visitChildren(visitor); 39 visitor.addOpaqueRoot(root(impl()->correspondingElement())); 40 40 } 41 41 -
trunk/Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp
r62845 r84556 44 44 namespace WebCore { 45 45 46 void JSSharedWorker:: markChildren(MarkStack& markStack)46 void JSSharedWorker::visitChildren(SlotVisitor& visitor) 47 47 { 48 Base:: markChildren(markStack);48 Base::visitChildren(visitor); 49 49 50 50 if (MessagePort* port = impl()->port()) 51 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), port);51 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), port); 52 52 } 53 53 -
trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp
r84527 r84556 67 67 } 68 68 69 void JSStyleSheet:: markChildren(MarkStack& markStack)69 void JSStyleSheet::visitChildren(SlotVisitor& visitor) 70 70 { 71 Base:: markChildren(markStack);72 markStack.addOpaqueRoot(root(impl()));71 Base::visitChildren(visitor); 72 visitor.addOpaqueRoot(root(impl())); 73 73 } 74 74 -
trunk/Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp
r84021 r84556 30 30 namespace WebCore { 31 31 32 void JSTreeWalker:: markChildren(MarkStack& markStack)32 void JSTreeWalker::visitChildren(SlotVisitor& visitor) 33 33 { 34 Base:: markChildren(markStack);34 Base::visitChildren(visitor); 35 35 36 36 if (NodeFilter* filter = m_impl->filter()) 37 markStack.addOpaqueRoot(filter);37 visitor.addOpaqueRoot(filter); 38 38 } 39 39 -
trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
r79011 r84556 193 193 } 194 194 195 void JSWebGLRenderingContext:: markChildren(MarkStack& markStack)196 { 197 Base:: markChildren(markStack);195 void JSWebGLRenderingContext::visitChildren(SlotVisitor& visitor) 196 { 197 Base::visitChildren(visitor); 198 198 199 199 WebGLRenderingContext* context = static_cast<WebGLRenderingContext*>(impl()); 200 200 for (int i = 0; i < context->getNumberOfExtensions(); ++i) 201 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), context->getExtensionNumber(i));201 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), context->getExtensionNumber(i)); 202 202 } 203 203 -
trunk/Source/WebCore/bindings/js/JSWebKitAnimationListCustom.cpp
r80846 r84556 33 33 namespace WebCore { 34 34 35 void JSWebKitAnimationList:: markChildren(MarkStack& markStack)35 void JSWebKitAnimationList::visitChildren(SlotVisitor& visitor) 36 36 { 37 Base:: markChildren(markStack);37 Base::visitChildren(visitor); 38 38 39 39 WebKitAnimationList* list = impl(); … … 42 42 unsigned length = list->length(); 43 43 for (unsigned i = 0; i < length; ++i) 44 markDOMObjectWrapper( markStack, globalData, list->item(i));44 markDOMObjectWrapper(visitor, globalData, list->item(i)); 45 45 } 46 46 -
trunk/Source/WebCore/bindings/js/JSWorkerContextCustom.cpp
r84073 r84556 54 54 namespace WebCore { 55 55 56 void JSWorkerContext:: markChildren(MarkStack& markStack)56 void JSWorkerContext::visitChildren(SlotVisitor& visitor) 57 57 { 58 Base:: markChildren(markStack);58 Base::visitChildren(visitor); 59 59 60 60 JSGlobalData& globalData = this->globalData(); 61 61 62 markActiveObjectsForContext(markStack, globalData, scriptExecutionContext());62 visitActiveObjectsForContext(visitor, globalData, scriptExecutionContext()); 63 63 64 markDOMObjectWrapper( markStack, globalData, impl()->optionalLocation());65 markDOMObjectWrapper( markStack, globalData, impl()->optionalNavigator());64 markDOMObjectWrapper(visitor, globalData, impl()->optionalLocation()); 65 markDOMObjectWrapper(visitor, globalData, impl()->optionalNavigator()); 66 66 67 impl()-> markJSEventListeners(markStack);67 impl()->visitJSEventListeners(visitor); 68 68 } 69 69 -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
r83532 r84556 55 55 namespace WebCore { 56 56 57 void JSXMLHttpRequest:: markChildren(MarkStack& markStack)58 { 59 Base:: markChildren(markStack);57 void JSXMLHttpRequest::visitChildren(SlotVisitor& visitor) 58 { 59 Base::visitChildren(visitor); 60 60 61 61 if (XMLHttpRequestUpload* upload = m_impl->optionalUpload()) 62 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), upload);62 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), upload); 63 63 64 64 if (Document* responseDocument = m_impl->optionalResponseXML()) 65 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), responseDocument);65 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), responseDocument); 66 66 67 67 if (ArrayBuffer* responseArrayBuffer = m_impl->optionalResponseArrayBuffer()) 68 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), responseArrayBuffer);68 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), responseArrayBuffer); 69 69 70 70 #if ENABLE(XHR_RESPONSE_BLOB) 71 71 if (Blob* responseBlob = m_impl->optionalResponseBlob()) 72 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), responseBlob);72 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), responseBlob); 73 73 #endif 74 74 75 m_impl-> markJSEventListeners(markStack);75 m_impl->visitJSEventListeners(visitor); 76 76 } 77 77 -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestUploadCustom.cpp
r58330 r84556 42 42 namespace WebCore { 43 43 44 void JSXMLHttpRequestUpload:: markChildren(MarkStack& markStack)44 void JSXMLHttpRequestUpload::visitChildren(SlotVisitor& visitor) 45 45 { 46 Base:: markChildren(markStack);46 Base::visitChildren(visitor); 47 47 48 48 if (XMLHttpRequest* xmlHttpRequest = m_impl->associatedXMLHttpRequest()) 49 markDOMObjectWrapper( markStack, *Heap::heap(this)->globalData(), xmlHttpRequest);49 markDOMObjectWrapper(visitor, *Heap::heap(this)->globalData(), xmlHttpRequest); 50 50 51 m_impl-> markJSEventListeners(markStack);51 m_impl->visitJSEventListeners(visitor); 52 52 } 53 53 -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r84194 r84556 752 752 " }\n\n"); 753 753 754 # markChildrenfunction754 # visit function 755 755 if ($needsMarkChildren) { 756 push(@headerContent, " virtual void markChildren(JSC::MarkStack&);\n\n");757 $structureFlags{"JSC::Overrides MarkChildren"} = 1;756 push(@headerContent, " virtual void visitChildren(JSC::SlotVisitor&);\n\n"); 757 $structureFlags{"JSC::OverridesVisitChildren"} = 1; 758 758 } 759 759 … … 956 956 } 957 957 if ($dataNode->extendedAttributes->{"CustomMarkFunction"} or $needsMarkChildren) { 958 $structureFlags{"JSC::Overrides MarkChildren"} = 1;958 $structureFlags{"JSC::OverridesVisitChildren"} = 1; 959 959 } 960 960 push(@headerContent, … … 1432 1432 1433 1433 if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) { 1434 push(@implContent, "void ${className}:: markChildren(MarkStack& markStack)\n");1434 push(@implContent, "void ${className}::visitChildren(SlotVisitor& visitor)\n"); 1435 1435 push(@implContent, "{\n"); 1436 push(@implContent, " Base:: markChildren(markStack);\n");1437 push(@implContent, " impl()-> markJSEventListeners(markStack);\n");1436 push(@implContent, " Base::visitChildren(visitor);\n"); 1437 push(@implContent, " impl()->visitJSEventListeners(visitor);\n"); 1438 1438 push(@implContent, "}\n\n"); 1439 1439 } -
trunk/Source/WebCore/bridge/qt/qt_instance.cpp
r84286 r84556 52 52 static const ClassInfo s_info; 53 53 54 virtual void markChildren(MarkStack& markStack)54 virtual void visitChildren(SlotVisitor& visitor) 55 55 { 56 RuntimeObject:: markChildren(markStack);56 RuntimeObject::visitChildren(visitor); 57 57 QtInstance* instance = static_cast<QtInstance*>(getInternalInstance()); 58 58 if (instance) 59 instance-> markAggregate(markStack);59 instance->visitAggregate(visitor); 60 60 } 61 61 … … 66 66 67 67 protected: 68 static const unsigned StructureFlags = RuntimeObject::StructureFlags | Overrides MarkChildren;68 static const unsigned StructureFlags = RuntimeObject::StructureFlags | OverridesVisitChildren; 69 69 }; 70 70 … … 186 186 } 187 187 188 void QtInstance:: markAggregate(MarkStack& markStack)188 void QtInstance::visitAggregate(SlotVisitor& visitor) 189 189 { 190 190 if (m_defaultMethod) 191 markStack.append(&m_defaultMethod);191 visitor.append(&m_defaultMethod); 192 192 for (QHash<QByteArray, WriteBarrier<JSObject> >::Iterator it = m_methods.begin(), end = m_methods.end(); it != end; ++it) 193 markStack.append(&it.value());193 visitor.append(&it.value()); 194 194 } 195 195 -
trunk/Source/WebCore/bridge/qt/qt_instance.h
r84286 r84556 49 49 virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const; 50 50 51 void markAggregate(MarkStack&);51 void visitAggregate(SlotVisitor&); 52 52 53 53 virtual JSValue getMethod(ExecState* exec, const Identifier& propertyName); -
trunk/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp
r84052 r84556 157 157 158 158 protected: 159 static const unsigned StructureFlags = RuntimeObject::StructureFlags | Overrides MarkChildren;159 static const unsigned StructureFlags = RuntimeObject::StructureFlags | OverridesVisitChildren; 160 160 }; 161 161 -
trunk/Source/WebCore/bridge/qt/qt_runtime.cpp
r82173 r84556 1401 1401 } 1402 1402 1403 void QtRuntimeMetaMethod:: markChildren(MarkStack& markStack)1404 { 1405 QtRuntimeMethod:: markChildren(markStack);1403 void QtRuntimeMetaMethod::visitChildren(SlotVisitor& visitor) 1404 { 1405 QtRuntimeMethod::visitChildren(visitor); 1406 1406 QW_D(QtRuntimeMetaMethod); 1407 1407 if (d->m_connect) 1408 markStack.append(&d->m_connect);1408 visitor.append(&d->m_connect); 1409 1409 if (d->m_disconnect) 1410 markStack.append(&d->m_disconnect);1410 visitor.append(&d->m_disconnect); 1411 1411 } 1412 1412 -
trunk/Source/WebCore/bridge/qt/qt_runtime.h
r84052 r84556 160 160 161 161 protected: 162 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | InternalFunction::StructureFlags | Overrides MarkChildren;162 static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | InternalFunction::StructureFlags | OverridesVisitChildren; 163 163 164 164 QtRuntimeMethodData *d_func() const {return d_ptr;} … … 176 176 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 177 177 178 virtual void markChildren(MarkStack& markStack);178 virtual void visitChildren(SlotVisitor&); 179 179 180 180 protected: -
trunk/Source/WebCore/dom/EventListener.h
r78634 r84556 27 27 class JSObject; 28 28 class MarkStack; 29 typedef MarkStack SlotVisitor; 29 30 } 30 31 … … 54 55 55 56 #if USE(JSC) 56 virtual void markJSFunction(JSC::MarkStack&) { }57 virtual void visitJSFunction(JSC::SlotVisitor&) { } 57 58 #endif 58 59 -
trunk/Source/WebCore/dom/EventTarget.h
r83261 r84556 171 171 172 172 #if USE(JSC) 173 void markJSEventListeners(JSC::MarkStack&);173 void visitJSEventListeners(JSC::SlotVisitor&); 174 174 void invalidateJSEventListeners(JSC::JSObject*); 175 175 #endif … … 224 224 225 225 #if USE(JSC) 226 inline void EventTarget:: markJSEventListeners(JSC::MarkStack& markStack)226 inline void EventTarget::visitJSEventListeners(JSC::SlotVisitor& visitor) 227 227 { 228 228 EventTargetData* d = eventTargetData(); … … 234 234 EventListenerVector& entry = *it->second; 235 235 for (size_t i = 0; i < entry.size(); ++i) 236 entry[i].listener-> markJSFunction(markStack);236 entry[i].listener->visitJSFunction(visitor); 237 237 } 238 238 } -
trunk/Source/WebCore/dom/Node.h
r84520 r84556 38 38 class JSGlobalData; 39 39 class MarkStack; 40 typedef MarkStack SlotVisitor; 40 41 } 41 42 #endif -
trunk/Source/WebCore/dom/NodeFilterCondition.h
r47022 r84556 31 31 namespace JSC { 32 32 class MarkStack; 33 typedef MarkStack SlotVisitor; 33 34 } 34 35 … … 41 42 virtual ~NodeFilterCondition() { } 42 43 virtual short acceptNode(ScriptState*, Node*) const = 0; 43 virtual void markAggregate(JSC::MarkStack&) { }44 virtual void visitAggregate(JSC::SlotVisitor&) { } 44 45 }; 45 46 -
trunk/Source/WebCore/page/DOMWindow.h
r84224 r84556 341 341 void finishedLoading(); 342 342 343 // These functions are used for GC marking. See JSDOMWindow:: markChildren(MarkStack&) in JSDOMWindowCustom.cpp.343 // These functions are used for GC marking. See JSDOMWindow::visitChildren(SlotVisitor&) in JSDOMWindowCustom.cpp. 344 344 Screen* optionalScreen() const { return m_screen.get(); } 345 345 DOMSelection* optionalSelection() const { return m_selection.get(); } -
trunk/Source/WebCore/workers/WorkerContext.h
r84224 r84556 142 142 WorkerInspectorController* workerInspectorController() { return m_workerInspectorController.get(); } 143 143 #endif 144 // These methods are used for GC marking. See JSWorkerContext:: markChildren(MarkStack&) in144 // These methods are used for GC marking. See JSWorkerContext::visitChildren(SlotVisitor&) in 145 145 // JSWorkerContextCustom.cpp. 146 146 WorkerNavigator* optionalNavigator() const { return m_navigator.get(); }
Note: See TracChangeset
for help on using the changeset viewer.