Changeset 95849 in webkit
- Timestamp:
- Sep 23, 2011 12:40:09 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 81 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r95685 r95849 1 2011-09-23 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 Add static version of JSCell::visitChildren 4 https://bugs.webkit.org/show_bug.cgi?id=68404 5 6 Reviewed by Darin Adler. 7 8 In this patch we just extract the bodies of the virtual visitChildren methods 9 throughout the JSCell inheritance hierarchy out into static methods, which are 10 now called from the virtual methods. This is an intermediate step in trying to 11 move the virtual-ness of visitChildren into our own custom vtable stored in 12 ClassInfo. We need to convert the methods to static methods in order to be 13 able to more easily store and refer to them in our custom vtable since normal 14 member methods store some implicit information in their types, making it 15 impossible to store them generically in ClassInfo. 16 17 * Source/autotools/symbols.filter: 18 1 19 2011-09-21 Julien Chaffraix <jchaffraix@webkit.org> 2 20 -
trunk/Source/JavaScriptCore/API/JSCallbackObject.h
r95250 r95849 197 197 virtual CallType getCallData(CallData&); 198 198 199 virtual void visitChildren(SlotVisitor& visitor) 200 { 201 ASSERT_GC_OBJECT_INHERITS((static_cast<Parent*>(this)), &JSCallbackObject<Parent>::s_info); 199 virtual void visitChildrenVirtual(SlotVisitor& visitor) 200 { 201 visitChildren(this, visitor); 202 } 203 204 static void visitChildren(JSCell* cell, SlotVisitor& visitor) 205 { 206 JSCallbackObject* thisObject = static_cast<JSCallbackObject*>(cell); 207 ASSERT_GC_OBJECT_INHERITS((static_cast<Parent*>(thisObject)), &JSCallbackObject<Parent>::s_info); 202 208 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 203 ASSERT( Parent::structure()->typeInfo().overridesVisitChildren());204 Parent::visitChildren( visitor);205 m_callbackObjectData->visitChildren(visitor);209 ASSERT(thisObject->Parent::structure()->typeInfo().overridesVisitChildren()); 210 Parent::visitChildren(thisObject, visitor); 211 thisObject->m_callbackObjectData->visitChildren(visitor); 206 212 } 207 213 -
trunk/Source/JavaScriptCore/ChangeLog
r95846 r95849 1 2011-09-23 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 Add static version of JSCell::visitChildren 4 https://bugs.webkit.org/show_bug.cgi?id=68404 5 6 Reviewed by Darin Adler. 7 8 In this patch we just extract the bodies of the virtual visitChildren methods 9 throughout the JSCell inheritance hierarchy out into static methods, which are 10 now called from the virtual methods. This is an intermediate step in trying to 11 move the virtual-ness of visitChildren into our own custom vtable stored in 12 ClassInfo. We need to convert the methods to static methods in order to be 13 able to more easily store and refer to them in our custom vtable since normal 14 member methods store some implicit information in their types, making it 15 impossible to store them generically in ClassInfo. 16 17 * API/JSCallbackObject.h: 18 (JSC::JSCallbackObject::visitChildrenVirtual): 19 (JSC::JSCallbackObject::visitChildren): 20 * JavaScriptCore.exp: 21 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 22 * debugger/DebuggerActivation.cpp: 23 (JSC::DebuggerActivation::visitChildrenVirtual): 24 (JSC::DebuggerActivation::visitChildren): 25 * debugger/DebuggerActivation.h: 26 * heap/MarkStack.cpp: 27 (JSC::SlotVisitor::visitChildren): 28 (JSC::SlotVisitor::drain): 29 * runtime/Arguments.cpp: 30 (JSC::Arguments::visitChildrenVirtual): 31 (JSC::Arguments::visitChildren): 32 * runtime/Arguments.h: 33 * runtime/Executable.cpp: 34 (JSC::EvalExecutable::visitChildrenVirtual): 35 (JSC::EvalExecutable::visitChildren): 36 (JSC::ProgramExecutable::visitChildrenVirtual): 37 (JSC::ProgramExecutable::visitChildren): 38 (JSC::FunctionExecutable::visitChildrenVirtual): 39 (JSC::FunctionExecutable::visitChildren): 40 * runtime/Executable.h: 41 * runtime/GetterSetter.cpp: 42 (JSC::GetterSetter::visitChildrenVirtual): 43 (JSC::GetterSetter::visitChildren): 44 * runtime/GetterSetter.h: 45 * runtime/JSActivation.cpp: 46 (JSC::JSActivation::visitChildrenVirtual): 47 (JSC::JSActivation::visitChildren): 48 * runtime/JSActivation.h: 49 * runtime/JSArray.cpp: 50 (JSC::JSArray::visitChildrenVirtual): 51 (JSC::JSArray::visitChildren): 52 * runtime/JSArray.h: 53 * runtime/JSBoundFunction.cpp: 54 (JSC::JSBoundFunction::visitChildrenVirtual): 55 (JSC::JSBoundFunction::visitChildren): 56 * runtime/JSBoundFunction.h: 57 * runtime/JSCell.h: 58 (JSC::JSCell::visitChildrenVirtual): 59 (JSC::JSCell::visitChildren): 60 * runtime/JSFunction.cpp: 61 (JSC::JSFunction::visitChildrenVirtual): 62 (JSC::JSFunction::visitChildren): 63 * runtime/JSFunction.h: 64 * runtime/JSGlobalObject.cpp: 65 (JSC::JSGlobalObject::visitChildrenVirtual): 66 (JSC::JSGlobalObject::visitChildren): 67 * runtime/JSGlobalObject.h: 68 * runtime/JSObject.cpp: 69 (JSC::JSObject::visitChildrenVirtual): 70 (JSC::JSObject::visitChildren): 71 * runtime/JSObject.h: 72 (JSC::JSObject::visitChildrenDirect): 73 * runtime/JSPropertyNameIterator.cpp: 74 (JSC::JSPropertyNameIterator::visitChildrenVirtual): 75 (JSC::JSPropertyNameIterator::visitChildren): 76 * runtime/JSPropertyNameIterator.h: 77 * runtime/JSStaticScopeObject.cpp: 78 (JSC::JSStaticScopeObject::visitChildrenVirtual): 79 (JSC::JSStaticScopeObject::visitChildren): 80 * runtime/JSStaticScopeObject.h: 81 * runtime/JSWrapperObject.cpp: 82 (JSC::JSWrapperObject::visitChildrenVirtual): 83 (JSC::JSWrapperObject::visitChildren): 84 * runtime/JSWrapperObject.h: 85 * runtime/NativeErrorConstructor.cpp: 86 (JSC::NativeErrorConstructor::visitChildrenVirtual): 87 (JSC::NativeErrorConstructor::visitChildren): 88 * runtime/NativeErrorConstructor.h: 89 * runtime/RegExpObject.cpp: 90 (JSC::RegExpObject::visitChildrenVirtual): 91 (JSC::RegExpObject::visitChildren): 92 * runtime/RegExpObject.h: 93 * runtime/ScopeChain.cpp: 94 (JSC::ScopeChainNode::visitChildrenVirtual): 95 (JSC::ScopeChainNode::visitChildren): 96 * runtime/ScopeChain.h: 97 * runtime/Structure.cpp: 98 (JSC::Structure::visitChildrenVirtual): 99 (JSC::Structure::visitChildren): 100 * runtime/Structure.h: 101 * runtime/StructureChain.cpp: 102 (JSC::StructureChain::visitChildrenVirtual): 103 (JSC::StructureChain::visitChildren): 104 * runtime/StructureChain.h: 105 1 106 2011-09-23 Oliver Hunt <oliver@apple.com> 2 107 -
trunk/Source/JavaScriptCore/JavaScriptCore.exp
r95751 r95849 163 163 __ZN3JSC14JSGlobalObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj 164 164 __ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj 165 __ZN3JSC14JSGlobalObject13visitChildrenE RNS_11SlotVisitorE165 __ZN3JSC14JSGlobalObject13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE 166 166 __ZN3JSC14JSGlobalObject16addStaticGlobalsEPNS0_18GlobalPropertyInfoEi 167 167 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj 168 168 __ZN3JSC14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE 169 __ZN3JSC14JSGlobalObject20visitChildrenVirtualERNS_11SlotVisitorE 169 170 __ZN3JSC14JSGlobalObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE 170 171 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE … … 180 181 __ZN3JSC14VTableSpectrum5countEPNS_6JSCellE 181 182 __ZN3JSC14throwTypeErrorEPNS_9ExecStateE 182 __ZN3JSC15JSWrapperObject13visitChildrenERNS_11SlotVisitorE183 183 __ZN3JSC15WeakHandleOwner26isReachableFromOpaqueRootsENS_6HandleINS_7UnknownEEEPvRNS_11SlotVisitorE 184 184 __ZN3JSC15WeakHandleOwner8finalizeENS_6HandleINS_7UnknownEEEPv … … 276 276 __ZN3JSC6RegExp6createERNS_12JSGlobalDataERKNS_7UStringENS_11RegExpFlagsE 277 277 __ZN3JSC6RegExpD1Ev 278 __ZN3JSC7JSArray13visitChildrenERNS_11SlotVisitorE279 278 __ZN3JSC7JSArray14finishCreationERNS_12JSGlobalDataE 280 279 __ZN3JSC7JSArray14finishCreationERNS_12JSGlobalDataERKNS_7ArgListE 281 280 __ZN3JSC7JSArray15setSubclassDataEPv 282 281 __ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 282 __ZN3JSC7JSArray20visitChildrenVirtualERNS_11SlotVisitorE 283 283 __ZN3JSC7JSArray6s_infoE 284 284 __ZN3JSC7JSArray9setLengthEj … … 309 309 __ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE 310 310 __ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE 311 __ZN3JSC8JSObject13visitChildrenE RNS_11SlotVisitorE311 __ZN3JSC8JSObject13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE 312 312 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE 313 313 __ZN3JSC8JSObject14deletePropertyEPNS_9ExecStateEj … … 325 325 __ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRNS_7JSValueE 326 326 __ZN3JSC8JSObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE 327 __ZN3JSC8JSObject20visitChildrenVirtualERNS_11SlotVisitorE 327 328 __ZN3JSC8JSObject21getPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE 328 329 __ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_16WriteBarrierBaseINS_7UnknownEEE -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
r95762 r95849 377 377 ?utf8@UString@JSC@@QBE?AVCString@WTF@@_N@Z 378 378 ?validateValue@MarkStack@JSC@@KAXVJSValue@2@@Z 379 ?visitChildren@JSGlobalObject@JSC@@UAEXAAVSlotVisitor@2@@Z380 ?visitChildren@JSObject@JSC@@UAEXAAVSlotVisitor@2@@Z381 ?visitChildren@JSWrapperObject@JSC@@EAEXAAVSlotVisitor@2@@Z382 ?visitChildren@ScopeChainNode@JSC@@UAEXAAVSlotVisitor@2@@Z383 379 ?vtableAnchor@InternalFunction@JSC@@EAEXXZ 380 ?visitChildren@JSGlobalObject@JSC@@SAXPAVJSCell@2@AAVSlotVisitor@2@@Z 381 ?visitChildren@JSObject@JSC@@SAXPAVJSCell@2@AAVSlotVisitor@2@@Z 382 ?visitChildrenVirtual@JSGlobalObject@JSC@@UAEXAAVSlotVisitor@2@@Z 383 ?visitChildrenVirtual@JSObject@JSC@@UAEXAAVSlotVisitor@2@@Z 384 ?visitChildrenVirtual@ScopeChainNode@JSC@@UAEXAAVSlotVisitor@2@@Z 384 385 ?wait@ThreadCondition@WTF@@QAEXAAVMutex@2@@Z 385 386 ?waitForThreadCompletion@WTF@@YAHIPAPAX@Z -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.cpp
r94875 r95849 44 44 } 45 45 46 void DebuggerActivation::visitChildren (SlotVisitor& visitor)46 void DebuggerActivation::visitChildrenVirtual(SlotVisitor& visitor) 47 47 { 48 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 48 visitChildren(this, visitor); 49 } 50 51 void DebuggerActivation::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 { 53 DebuggerActivation* thisObject = static_cast<DebuggerActivation*>(cell); 54 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 49 55 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 50 ASSERT( structure()->typeInfo().overridesVisitChildren());51 JSObject::visitChildren( visitor);56 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 57 JSObject::visitChildren(thisObject, visitor); 52 58 53 if ( m_activation)54 visitor.append(& m_activation);59 if (thisObject->m_activation) 60 visitor.append(&thisObject->m_activation); 55 61 } 56 62 -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.h
r94929 r95849 42 42 } 43 43 44 virtual void visitChildren(SlotVisitor&); 44 virtual void visitChildrenVirtual(SlotVisitor&); 45 static void visitChildren(JSCell*, SlotVisitor&); 45 46 virtual UString className() const; 46 47 virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); -
trunk/Source/JavaScriptCore/heap/MarkStack.cpp
r94929 r95849 60 60 ASSERT(Heap::isMarked(cell)); 61 61 if (cell->structure()->typeInfo().type() < CompoundType) { 62 cell->JSCell::visitChildren(*this);62 JSCell::visitChildren(cell, *this); 63 63 return; 64 64 } … … 71 71 ASSERT(!m_isCheckingForDefaultMarkViolation); 72 72 m_isCheckingForDefaultMarkViolation = true; 73 cell->visitChildren (*this);73 cell->visitChildrenVirtual(*this); 74 74 ASSERT(m_isCheckingForDefaultMarkViolation); 75 75 m_isCheckingForDefaultMarkViolation = false; … … 81 81 return; 82 82 } 83 cell->visitChildren (*this);83 cell->visitChildrenVirtual(*this); 84 84 } 85 85 … … 116 116 m_visitedTypeCounts.count(cell); 117 117 #endif 118 cell->JSCell::visitChildren(*this);118 JSCell::visitChildren(cell, *this); 119 119 if (current.m_values == end) { 120 120 m_markSets.removeLast(); -
trunk/Source/JavaScriptCore/runtime/Arguments.cpp
r86499 r95849 44 44 } 45 45 46 void Arguments::visitChildren(SlotVisitor& visitor) 47 { 48 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 46 void Arguments::visitChildrenVirtual(SlotVisitor& visitor) 47 { 48 visitChildren(this, visitor); 49 } 50 51 void Arguments::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 { 53 Arguments* thisObject = static_cast<Arguments*>(cell); 54 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 49 55 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 50 ASSERT( structure()->typeInfo().overridesVisitChildren());51 JSObject::visitChildren( visitor);52 53 if ( d->registerArray)54 visitor.appendValues( d->registerArray.get(),d->numParameters);55 56 if ( d->extraArguments) {57 unsigned numExtraArguments = d->numArguments -d->numParameters;58 visitor.appendValues( d->extraArguments, numExtraArguments);59 } 60 61 visitor.append(& d->callee);62 63 if ( d->activation)64 visitor.append(& d->activation);56 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 57 JSObject::visitChildren(thisObject, visitor); 58 59 if (thisObject->d->registerArray) 60 visitor.appendValues(thisObject->d->registerArray.get(), thisObject->d->numParameters); 61 62 if (thisObject->d->extraArguments) { 63 unsigned numExtraArguments = thisObject->d->numArguments - thisObject->d->numParameters; 64 visitor.appendValues(thisObject->d->extraArguments, numExtraArguments); 65 } 66 67 visitor.append(&thisObject->d->callee); 68 69 if (thisObject->d->activation) 70 visitor.append(&thisObject->d->activation); 65 71 } 66 72 -
trunk/Source/JavaScriptCore/runtime/Arguments.h
r94929 r95849 91 91 static const ClassInfo s_info; 92 92 93 virtual void visitChildren(SlotVisitor&); 93 virtual void visitChildrenVirtual(SlotVisitor&); 94 static void visitChildren(JSCell*, SlotVisitor&); 94 95 95 96 void fillArgList(ExecState*, MarkedArgumentBuffer&); -
trunk/Source/JavaScriptCore/runtime/Executable.cpp
r95779 r95849 235 235 #endif 236 236 237 void EvalExecutable::visitChildren(SlotVisitor& visitor) 238 { 239 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 237 void EvalExecutable::visitChildrenVirtual(SlotVisitor& visitor) 238 { 239 visitChildren(this, visitor); 240 } 241 242 void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor) 243 { 244 EvalExecutable* thisObject = static_cast<EvalExecutable*>(cell); 245 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 240 246 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 241 ASSERT( structure()->typeInfo().overridesVisitChildren());242 ScriptExecutable::visitChildren( visitor);243 if ( m_evalCodeBlock)244 m_evalCodeBlock->visitAggregate(visitor);247 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 248 ScriptExecutable::visitChildren(thisObject, visitor); 249 if (thisObject->m_evalCodeBlock) 250 thisObject->m_evalCodeBlock->visitAggregate(visitor); 245 251 } 246 252 … … 373 379 } 374 380 375 void ProgramExecutable::visitChildren(SlotVisitor& visitor) 376 { 377 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 381 void ProgramExecutable::visitChildrenVirtual(SlotVisitor& visitor) 382 { 383 visitChildren(this, visitor); 384 } 385 386 void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor) 387 { 388 ProgramExecutable* thisObject = static_cast<ProgramExecutable*>(cell); 389 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 378 390 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 379 ASSERT( structure()->typeInfo().overridesVisitChildren());380 ScriptExecutable::visitChildren( visitor);381 if ( m_programCodeBlock)382 m_programCodeBlock->visitAggregate(visitor);391 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 392 ScriptExecutable::visitChildren(thisObject, visitor); 393 if (thisObject->m_programCodeBlock) 394 thisObject->m_programCodeBlock->visitAggregate(visitor); 383 395 } 384 396 … … 585 597 #endif 586 598 587 void FunctionExecutable::visitChildren(SlotVisitor& visitor) 588 { 589 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 599 void FunctionExecutable::visitChildrenVirtual(SlotVisitor& visitor) 600 { 601 visitChildren(this, visitor); 602 } 603 604 void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor) 605 { 606 FunctionExecutable* thisObject = static_cast<FunctionExecutable*>(cell); 607 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 590 608 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 591 ASSERT( structure()->typeInfo().overridesVisitChildren());592 ScriptExecutable::visitChildren( visitor);593 if ( m_nameValue)594 visitor.append(& m_nameValue);595 if ( m_codeBlockForCall)596 m_codeBlockForCall->visitAggregate(visitor);597 if ( m_codeBlockForConstruct)598 m_codeBlockForConstruct->visitAggregate(visitor);609 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 610 ScriptExecutable::visitChildren(thisObject, visitor); 611 if (thisObject->m_nameValue) 612 visitor.append(&thisObject->m_nameValue); 613 if (thisObject->m_codeBlockForCall) 614 thisObject->m_codeBlockForCall->visitAggregate(visitor); 615 if (thisObject->m_codeBlockForConstruct) 616 thisObject->m_codeBlockForConstruct->visitAggregate(visitor); 599 617 } 600 618 -
trunk/Source/JavaScriptCore/runtime/Executable.h
r95772 r95849 357 357 358 358 JSObject* compileInternal(ExecState*, ScopeChainNode*, JITCode::JITType); 359 virtual void visitChildren(SlotVisitor&); 359 virtual void visitChildrenVirtual(SlotVisitor&); 360 static void visitChildren(JSCell*, SlotVisitor&); 360 361 void unlinkCalls(); 361 362 … … 422 423 423 424 JSObject* compileInternal(ExecState*, ScopeChainNode*, JITCode::JITType); 424 virtual void visitChildren(SlotVisitor&); 425 virtual void visitChildrenVirtual(SlotVisitor&); 426 static void visitChildren(JSCell*, SlotVisitor&); 425 427 void unlinkCalls(); 426 428 … … 581 583 582 584 void discardCode(); 583 void visitChildren(SlotVisitor&); 585 void visitChildrenVirtual(SlotVisitor&); 586 static void visitChildren(JSCell*, SlotVisitor&); 584 587 static FunctionExecutable* fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, JSObject** exception); 585 588 static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) -
trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp
r94930 r95849 31 31 const ClassInfo GetterSetter::s_info = { "GetterSetter", 0, 0, 0 }; 32 32 33 void GetterSetter::visitChildren (SlotVisitor& visitor)33 void GetterSetter::visitChildrenVirtual(SlotVisitor& visitor) 34 34 { 35 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 36 ASSERT(structure()->typeInfo().overridesVisitChildren()); 37 JSCell::visitChildren(visitor); 35 visitChildren(this, visitor); 36 } 38 37 39 if (m_getter) 40 visitor.append(&m_getter); 41 if (m_setter) 42 visitor.append(&m_setter); 38 void GetterSetter::visitChildren(JSCell* cell, SlotVisitor& visitor) 39 { 40 GetterSetter* thisObject = static_cast<GetterSetter*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 42 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 43 JSCell::visitChildren(thisObject, visitor); 44 45 if (thisObject->m_getter) 46 visitor.append(&thisObject->m_getter); 47 if (thisObject->m_setter) 48 visitor.append(&thisObject->m_setter); 43 49 } 44 50 -
trunk/Source/JavaScriptCore/runtime/GetterSetter.h
r94930 r95849 54 54 } 55 55 56 virtual void visitChildren(SlotVisitor&); 56 virtual void visitChildrenVirtual(SlotVisitor&); 57 static void visitChildren(JSCell*, SlotVisitor&); 57 58 58 59 JSObject* getter() const { return m_getter.get(); } -
trunk/Source/JavaScriptCore/runtime/JSActivation.cpp
r94875 r95849 64 64 } 65 65 66 void JSActivation::visitChildren(SlotVisitor& visitor) 67 { 68 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 66 void JSActivation::visitChildrenVirtual(SlotVisitor& visitor) 67 { 68 visitChildren(this, visitor); 69 } 70 71 void JSActivation::visitChildren(JSCell* cell, SlotVisitor& visitor) 72 { 73 JSActivation* thisObject = static_cast<JSActivation*>(cell); 74 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 69 75 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 70 ASSERT( structure()->typeInfo().overridesVisitChildren());71 Base::visitChildren( visitor);76 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 77 Base::visitChildren(thisObject, visitor); 72 78 73 79 // No need to mark our registers if they're still in the RegisterFile. 74 WriteBarrier<Unknown>* registerArray = m_registerArray.get();80 WriteBarrier<Unknown>* registerArray = thisObject->m_registerArray.get(); 75 81 if (!registerArray) 76 82 return; 77 83 78 visitor.appendValues(registerArray, m_numParametersMinusThis);84 visitor.appendValues(registerArray, thisObject->m_numParametersMinusThis); 79 85 80 86 // Skip the call frame, which sits between the parameters and vars. 81 visitor.appendValues(registerArray + m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize,m_numCapturedVars);87 visitor.appendValues(registerArray + thisObject->m_numParametersMinusThis + RegisterFile::CallFrameHeaderSize, thisObject->m_numCapturedVars); 82 88 } 83 89 -
trunk/Source/JavaScriptCore/runtime/JSActivation.h
r94929 r95849 56 56 virtual ~JSActivation(); 57 57 58 virtual void visitChildren(SlotVisitor&); 58 virtual void visitChildrenVirtual(SlotVisitor&); 59 static void visitChildren(JSCell*, SlotVisitor&); 59 60 60 61 virtual bool isDynamicScope(bool& requiresDynamicChecks) const; -
trunk/Source/JavaScriptCore/runtime/JSArray.cpp
r95787 r95849 872 872 } 873 873 874 void JSArray::visitChildren(SlotVisitor& visitor) 875 { 876 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 874 void JSArray::visitChildrenVirtual(SlotVisitor& visitor) 875 { 876 visitChildren(this, visitor); 877 } 878 879 void JSArray::visitChildren(JSCell* cell, SlotVisitor& visitor) 880 { 881 JSArray* thisObject = static_cast<JSArray*>(cell); 882 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 877 883 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 878 ASSERT( structure()->typeInfo().overridesVisitChildren());879 visitChildrenDirect(visitor);884 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 885 thisObject->visitChildrenDirect(visitor); 880 886 } 881 887 -
trunk/Source/JavaScriptCore/runtime/JSArray.h
r94929 r95849 173 173 virtual bool deleteProperty(ExecState*, unsigned propertyName); 174 174 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 175 virtual void visitChildren(SlotVisitor&); 175 virtual void visitChildrenVirtual(SlotVisitor&); 176 static void visitChildren(JSCell*, SlotVisitor&); 176 177 177 178 void* subclassData() const; -
trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp
r95751 r95849 141 141 } 142 142 143 void JSBoundFunction::visitChildren (SlotVisitor& visitor)143 void JSBoundFunction::visitChildrenVirtual(SlotVisitor& visitor) 144 144 { 145 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 145 visitChildren(this, visitor); 146 } 147 148 void JSBoundFunction::visitChildren(JSCell* cell, SlotVisitor& visitor) 149 { 150 JSBoundFunction* thisObject = static_cast<JSBoundFunction*>(cell); 151 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 146 152 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 147 ASSERT( structure()->typeInfo().overridesVisitChildren());148 Base::visitChildren( visitor);153 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 154 Base::visitChildren(thisObject, visitor); 149 155 150 visitor.append(& m_targetFunction);151 visitor.append(& m_boundThis);152 visitor.append(& m_boundArgs);156 visitor.append(&thisObject->m_targetFunction); 157 visitor.append(&thisObject->m_boundThis); 158 visitor.append(&thisObject->m_boundArgs); 153 159 } 154 160 -
trunk/Source/JavaScriptCore/runtime/JSBoundFunction.h
r95751 r95849 58 58 const static unsigned StructureFlags = OverridesHasInstance | Base::StructureFlags; 59 59 60 virtual void visitChildren(SlotVisitor&); 60 virtual void visitChildrenVirtual(SlotVisitor&); 61 static void visitChildren(JSCell*, SlotVisitor&); 61 62 62 63 private: -
trunk/Source/JavaScriptCore/runtime/JSCell.h
r95516 r95849 85 85 virtual JSObject* toObject(ExecState*, JSGlobalObject*) const; 86 86 87 virtual void visitChildren(SlotVisitor&); 87 virtual void visitChildrenVirtual(SlotVisitor&); 88 static void visitChildren(JSCell*, SlotVisitor&); 88 89 89 90 // Object operations, with the toObject operation included. … … 177 178 } 178 179 179 inline void JSCell::visitChildren(SlotVisitor& visitor) 180 { 181 visitor.append(&m_structure); 180 inline void JSCell::visitChildrenVirtual(SlotVisitor& visitor) 181 { 182 visitChildren(this, visitor); 183 } 184 185 inline void JSCell::visitChildren(JSCell* cell, SlotVisitor& visitor) 186 { 187 JSCell* thisObject = static_cast<JSCell*>(cell); 188 visitor.append(&thisObject->m_structure); 182 189 } 183 190 -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r95751 r95849 152 152 } 153 153 154 void JSFunction::visitChildren(SlotVisitor& visitor) 155 { 156 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 154 void JSFunction::visitChildrenVirtual(SlotVisitor& visitor) 155 { 156 visitChildren(this, visitor); 157 } 158 159 void JSFunction::visitChildren(JSCell* cell, SlotVisitor& visitor) 160 { 161 JSFunction* thisObject = static_cast<JSFunction*>(cell); 162 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 157 163 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 158 ASSERT( structure()->typeInfo().overridesVisitChildren());159 Base::visitChildren( visitor);160 161 visitor.append(& m_scopeChain);162 if ( m_executable)163 visitor.append(& m_executable);164 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 165 Base::visitChildren(thisObject, visitor); 166 167 visitor.append(&thisObject->m_scopeChain); 168 if (thisObject->m_executable) 169 visitor.append(&thisObject->m_executable); 164 170 } 165 171 -
trunk/Source/JavaScriptCore/runtime/JSFunction.h
r95751 r95849 135 135 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode = ExcludeDontEnumProperties); 136 136 137 virtual void visitChildren(SlotVisitor&); 137 virtual void visitChildrenVirtual(SlotVisitor&); 138 static void visitChildren(JSCell*, SlotVisitor&); 138 139 139 140 private: -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r95751 r95849 309 309 } 310 310 311 void JSGlobalObject::visitChildren(SlotVisitor& visitor) 312 { 313 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 311 void JSGlobalObject::visitChildrenVirtual(SlotVisitor& visitor) 312 { 313 visitChildren(this, visitor); 314 } 315 316 void JSGlobalObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 317 { 318 JSGlobalObject* thisObject = static_cast<JSGlobalObject*>(cell); 319 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 314 320 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 315 ASSERT( structure()->typeInfo().overridesVisitChildren());316 JSVariableObject::visitChildren( visitor);317 318 visitIfNeeded(visitor, & m_globalScopeChain);319 visitIfNeeded(visitor, & m_methodCallDummy);320 321 visitIfNeeded(visitor, & m_regExpConstructor);322 visitIfNeeded(visitor, & m_errorConstructor);323 visitIfNeeded(visitor, & m_evalErrorConstructor);324 visitIfNeeded(visitor, & m_rangeErrorConstructor);325 visitIfNeeded(visitor, & m_referenceErrorConstructor);326 visitIfNeeded(visitor, & m_syntaxErrorConstructor);327 visitIfNeeded(visitor, & m_typeErrorConstructor);328 visitIfNeeded(visitor, & m_URIErrorConstructor);329 330 visitIfNeeded(visitor, & m_evalFunction);331 visitIfNeeded(visitor, & m_callFunction);332 visitIfNeeded(visitor, & m_applyFunction);333 334 visitIfNeeded(visitor, & m_objectPrototype);335 visitIfNeeded(visitor, & m_functionPrototype);336 visitIfNeeded(visitor, & m_arrayPrototype);337 visitIfNeeded(visitor, & m_booleanPrototype);338 visitIfNeeded(visitor, & m_stringPrototype);339 visitIfNeeded(visitor, & m_numberPrototype);340 visitIfNeeded(visitor, & m_datePrototype);341 visitIfNeeded(visitor, & m_regExpPrototype);342 343 visitIfNeeded(visitor, & m_argumentsStructure);344 visitIfNeeded(visitor, & m_arrayStructure);345 visitIfNeeded(visitor, & m_booleanObjectStructure);346 visitIfNeeded(visitor, & m_callbackConstructorStructure);347 visitIfNeeded(visitor, & m_callbackFunctionStructure);348 visitIfNeeded(visitor, & m_callbackObjectStructure);349 visitIfNeeded(visitor, & m_dateStructure);350 visitIfNeeded(visitor, & m_emptyObjectStructure);351 visitIfNeeded(visitor, & m_nullPrototypeObjectStructure);352 visitIfNeeded(visitor, & m_errorStructure);353 visitIfNeeded(visitor, & m_functionStructure);354 visitIfNeeded(visitor, & m_boundFunctionStructure);355 visitIfNeeded(visitor, & m_namedFunctionStructure);356 visitIfNeeded(visitor, & m_numberObjectStructure);357 visitIfNeeded(visitor, & m_regExpMatchesArrayStructure);358 visitIfNeeded(visitor, & m_regExpStructure);359 visitIfNeeded(visitor, & m_stringObjectStructure);360 visitIfNeeded(visitor, & m_internalFunctionStructure);361 362 if ( m_registerArray) {321 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 322 JSVariableObject::visitChildren(thisObject, visitor); 323 324 visitIfNeeded(visitor, &thisObject->m_globalScopeChain); 325 visitIfNeeded(visitor, &thisObject->m_methodCallDummy); 326 327 visitIfNeeded(visitor, &thisObject->m_regExpConstructor); 328 visitIfNeeded(visitor, &thisObject->m_errorConstructor); 329 visitIfNeeded(visitor, &thisObject->m_evalErrorConstructor); 330 visitIfNeeded(visitor, &thisObject->m_rangeErrorConstructor); 331 visitIfNeeded(visitor, &thisObject->m_referenceErrorConstructor); 332 visitIfNeeded(visitor, &thisObject->m_syntaxErrorConstructor); 333 visitIfNeeded(visitor, &thisObject->m_typeErrorConstructor); 334 visitIfNeeded(visitor, &thisObject->m_URIErrorConstructor); 335 336 visitIfNeeded(visitor, &thisObject->m_evalFunction); 337 visitIfNeeded(visitor, &thisObject->m_callFunction); 338 visitIfNeeded(visitor, &thisObject->m_applyFunction); 339 340 visitIfNeeded(visitor, &thisObject->m_objectPrototype); 341 visitIfNeeded(visitor, &thisObject->m_functionPrototype); 342 visitIfNeeded(visitor, &thisObject->m_arrayPrototype); 343 visitIfNeeded(visitor, &thisObject->m_booleanPrototype); 344 visitIfNeeded(visitor, &thisObject->m_stringPrototype); 345 visitIfNeeded(visitor, &thisObject->m_numberPrototype); 346 visitIfNeeded(visitor, &thisObject->m_datePrototype); 347 visitIfNeeded(visitor, &thisObject->m_regExpPrototype); 348 349 visitIfNeeded(visitor, &thisObject->m_argumentsStructure); 350 visitIfNeeded(visitor, &thisObject->m_arrayStructure); 351 visitIfNeeded(visitor, &thisObject->m_booleanObjectStructure); 352 visitIfNeeded(visitor, &thisObject->m_callbackConstructorStructure); 353 visitIfNeeded(visitor, &thisObject->m_callbackFunctionStructure); 354 visitIfNeeded(visitor, &thisObject->m_callbackObjectStructure); 355 visitIfNeeded(visitor, &thisObject->m_dateStructure); 356 visitIfNeeded(visitor, &thisObject->m_emptyObjectStructure); 357 visitIfNeeded(visitor, &thisObject->m_nullPrototypeObjectStructure); 358 visitIfNeeded(visitor, &thisObject->m_errorStructure); 359 visitIfNeeded(visitor, &thisObject->m_functionStructure); 360 visitIfNeeded(visitor, &thisObject->m_boundFunctionStructure); 361 visitIfNeeded(visitor, &thisObject->m_namedFunctionStructure); 362 visitIfNeeded(visitor, &thisObject->m_numberObjectStructure); 363 visitIfNeeded(visitor, &thisObject->m_regExpMatchesArrayStructure); 364 visitIfNeeded(visitor, &thisObject->m_regExpStructure); 365 visitIfNeeded(visitor, &thisObject->m_stringObjectStructure); 366 visitIfNeeded(visitor, &thisObject->m_internalFunctionStructure); 367 368 if (thisObject->m_registerArray) { 363 369 // Outside the execution of global code, when our variables are torn off, 364 370 // we can mark the torn-off array. 365 visitor.appendValues( m_registerArray.get(),m_registerArraySize);366 } else if ( m_registers) {371 visitor.appendValues(thisObject->m_registerArray.get(), thisObject->m_registerArraySize); 372 } else if (thisObject->m_registers) { 367 373 // During execution of global code, when our variables are in the register file, 368 374 // the symbol table tells us how many variables there are, and registers 369 375 // points to where they end, and the registers used for execution begin. 370 visitor.appendValues( m_registers - symbolTable().size(),symbolTable().size());376 visitor.appendValues(thisObject->m_registers - thisObject->symbolTable().size(), thisObject->symbolTable().size()); 371 377 } 372 378 } -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r95751 r95849 176 176 virtual ~JSGlobalObject(); 177 177 178 virtual void visitChildren(SlotVisitor&); 178 virtual void visitChildrenVirtual(SlotVisitor&); 179 static void visitChildren(JSCell*, SlotVisitor&); 179 180 180 181 virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r95666 r95849 69 69 } 70 70 71 void JSObject::visitChildren(SlotVisitor& visitor) 72 { 73 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 71 void JSObject::visitChildrenVirtual(SlotVisitor& visitor) 72 { 73 visitChildren(this, visitor); 74 } 75 76 void JSObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 77 { 78 JSObject* thisObject = static_cast<JSObject*>(cell); 79 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 74 80 #ifndef NDEBUG 75 81 bool wasCheckingForDefaultMarkViolation = visitor.m_isCheckingForDefaultMarkViolation; … … 77 83 #endif 78 84 79 visitChildrenDirect(visitor);85 thisObject->visitChildrenDirect(visitor); 80 86 81 87 #ifndef NDEBUG -
trunk/Source/JavaScriptCore/runtime/JSObject.h
r95666 r95849 80 80 typedef JSCell Base; 81 81 82 virtual void visitChildren (SlotVisitor&);82 virtual void visitChildrenVirtual(SlotVisitor&); 83 83 ALWAYS_INLINE void visitChildrenDirect(SlotVisitor&); 84 static void visitChildren(JSCell*, SlotVisitor&); 84 85 85 86 // The inline virtual destructor cannot be the first virtual function declared … … 817 818 ALWAYS_INLINE void JSObject::visitChildrenDirect(SlotVisitor& visitor) 818 819 { 819 JSCell::visitChildren( visitor);820 JSCell::visitChildren(this, visitor); 820 821 821 822 PropertyStorage storage = propertyStorage(); -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
r94929 r95849 93 93 } 94 94 95 void JSPropertyNameIterator::visitChildren (SlotVisitor& visitor)95 void JSPropertyNameIterator::visitChildrenVirtual(SlotVisitor& visitor) 96 96 { 97 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 98 ASSERT(structure()->typeInfo().overridesVisitChildren()); 99 visitor.appendValues(m_jsStrings.get(), m_jsStringsSize); 100 if (m_cachedPrototypeChain) 101 visitor.append(&m_cachedPrototypeChain); 97 visitChildren(this, visitor); 98 } 99 100 void JSPropertyNameIterator::visitChildren(JSCell* cell, SlotVisitor& visitor) 101 { 102 JSPropertyNameIterator* thisObject = static_cast<JSPropertyNameIterator*>(cell); 103 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 104 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 105 visitor.appendValues(thisObject->m_jsStrings.get(), thisObject->m_jsStringsSize); 106 if (thisObject->m_cachedPrototypeChain) 107 visitor.append(&thisObject->m_cachedPrototypeChain); 102 108 } 103 109 -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
r94932 r95849 59 59 } 60 60 61 virtual void visitChildren(SlotVisitor&); 61 virtual void visitChildrenVirtual(SlotVisitor&); 62 static void visitChildren(JSCell*, SlotVisitor&); 62 63 63 64 bool getOffset(size_t i, int& offset) -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.cpp
r86499 r95849 33 33 ASSERT_CLASS_FITS_IN_CELL(JSStaticScopeObject); 34 34 35 void JSStaticScopeObject::visitChildren (SlotVisitor& visitor)35 void JSStaticScopeObject::visitChildrenVirtual(SlotVisitor& visitor) 36 36 { 37 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 37 visitChildren(this, visitor); 38 } 39 40 void JSStaticScopeObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 41 { 42 JSStaticScopeObject* thisObject = static_cast<JSStaticScopeObject*>(cell); 43 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 38 44 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 39 ASSERT( structure()->typeInfo().overridesVisitChildren());40 JSVariableObject::visitChildren( visitor);41 visitor.append(& m_registerStore);45 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 46 JSVariableObject::visitChildren(thisObject, visitor); 47 visitor.append(&thisObject->m_registerStore); 42 48 } 43 49 -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.h
r94929 r95849 42 42 } 43 43 44 virtual void visitChildren(SlotVisitor&); 44 virtual void visitChildrenVirtual(SlotVisitor&); 45 static void visitChildren(JSCell*, SlotVisitor&); 45 46 bool isDynamicScope(bool& requiresDynamicChecks) const; 46 47 virtual JSObject* toThisObject(ExecState*) const; -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.cpp
r86499 r95849 27 27 ASSERT_CLASS_FITS_IN_CELL(JSWrapperObject); 28 28 29 void JSWrapperObject::visitChildren (SlotVisitor& visitor)29 void JSWrapperObject::visitChildrenVirtual(SlotVisitor& visitor) 30 30 { 31 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 31 visitChildren(this, visitor); 32 } 33 34 void JSWrapperObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 35 { 36 JSWrapperObject* thisObject = static_cast<JSWrapperObject*>(cell); 37 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 32 38 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 33 ASSERT( structure()->typeInfo().overridesVisitChildren());34 JSObject::visitChildren( visitor);35 if ( m_internalValue)36 visitor.append(& m_internalValue);39 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 40 JSObject::visitChildren(thisObject, visitor); 41 if (thisObject->m_internalValue) 42 visitor.append(&thisObject->m_internalValue); 37 43 } 38 44 -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.h
r94929 r95849 46 46 47 47 private: 48 virtual void visitChildren(SlotVisitor&); 48 virtual void visitChildrenVirtual(SlotVisitor&); 49 static void visitChildren(JSCell*, SlotVisitor&); 49 50 50 51 WriteBarrier<Unknown> m_internalValue; -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp
r95108 r95849 38 38 } 39 39 40 void NativeErrorConstructor::visitChildren (SlotVisitor& visitor)40 void NativeErrorConstructor::visitChildrenVirtual(SlotVisitor& visitor) 41 41 { 42 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 42 visitChildren(this, visitor); 43 } 44 45 void NativeErrorConstructor::visitChildren(JSCell* cell, SlotVisitor& visitor) 46 { 47 NativeErrorConstructor* thisObject = static_cast<NativeErrorConstructor*>(cell); 48 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 43 49 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 44 ASSERT( structure()->typeInfo().overridesVisitChildren());45 InternalFunction::visitChildren( visitor);46 if ( m_errorStructure)47 visitor.append(& m_errorStructure);50 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 51 InternalFunction::visitChildren(thisObject, visitor); 52 if (thisObject->m_errorStructure) 53 visitor.append(&thisObject->m_errorStructure); 48 54 } 49 55 -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
r95326 r95849 71 71 virtual ConstructType getConstructData(ConstructData&); 72 72 virtual CallType getCallData(CallData&); 73 virtual void visitChildren(SlotVisitor&); 73 virtual void visitChildrenVirtual(SlotVisitor&); 74 static void visitChildren(JSCell*, SlotVisitor&); 74 75 75 76 WriteBarrier<Structure> m_errorStructure; -
trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp
r94875 r95849 79 79 } 80 80 81 void RegExpObject::visitChildren(SlotVisitor& visitor) 82 { 83 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 81 void RegExpObject::visitChildrenVirtual(SlotVisitor& visitor) 82 { 83 visitChildren(this, visitor); 84 } 85 86 void RegExpObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 87 { 88 RegExpObject* thisObject = static_cast<RegExpObject*>(cell); 89 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 84 90 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 85 ASSERT( structure()->typeInfo().overridesVisitChildren());86 Base::visitChildren( visitor);87 if ( d->regExp)88 visitor.append(& d->regExp);89 if (UNLIKELY(! d->lastIndex.get().isInt32()))90 visitor.append(& d->lastIndex);91 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 92 Base::visitChildren(thisObject, visitor); 93 if (thisObject->d->regExp) 94 visitor.append(&thisObject->d->regExp); 95 if (UNLIKELY(!thisObject->d->lastIndex.get().isInt32())) 96 visitor.append(&thisObject->d->lastIndex); 91 97 } 92 98 -
trunk/Source/JavaScriptCore/runtime/RegExpObject.h
r94929 r95849 83 83 84 84 private: 85 virtual void visitChildren(SlotVisitor&); 85 virtual void visitChildrenVirtual(SlotVisitor&); 86 static void visitChildren(JSCell*, SlotVisitor&); 86 87 87 88 bool match(ExecState*); -
trunk/Source/JavaScriptCore/runtime/ScopeChain.cpp
r86499 r95849 68 68 } 69 69 70 void ScopeChainNode::visitChildren (SlotVisitor& visitor)70 void ScopeChainNode::visitChildrenVirtual(SlotVisitor& visitor) 71 71 { 72 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 72 visitChildren(this, visitor); 73 } 74 75 void ScopeChainNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 76 { 77 ScopeChainNode* thisObject = static_cast<ScopeChainNode*>(cell); 78 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 73 79 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 74 ASSERT( structure()->typeInfo().overridesVisitChildren());75 if ( next)76 visitor.append(& next);77 visitor.append(& object);78 visitor.append(& globalObject);79 visitor.append(& globalThis);80 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 81 if (thisObject->next) 82 visitor.append(&thisObject->next); 83 visitor.append(&thisObject->object); 84 visitor.append(&thisObject->globalObject); 85 visitor.append(&thisObject->globalThis); 80 86 } 81 87 -
trunk/Source/JavaScriptCore/runtime/ScopeChain.h
r94929 r95849 88 88 89 89 static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); } 90 virtual void visitChildren(SlotVisitor&); 90 virtual void visitChildrenVirtual(SlotVisitor&); 91 static void visitChildren(JSCell*, SlotVisitor&); 91 92 static JS_EXPORTDATA const ClassInfo s_info; 92 93 -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r95510 r95849 725 725 } 726 726 727 void Structure::visitChildren(SlotVisitor& visitor) 728 { 729 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 730 ASSERT(structure()->typeInfo().overridesVisitChildren()); 731 JSCell::visitChildren(visitor); 732 if (m_globalObject) 733 visitor.append(&m_globalObject); 734 if (m_prototype) 735 visitor.append(&m_prototype); 736 if (m_cachedPrototypeChain) 737 visitor.append(&m_cachedPrototypeChain); 738 if (m_previous) 739 visitor.append(&m_previous); 740 if (m_specificValueInPrevious) 741 visitor.append(&m_specificValueInPrevious); 742 if (m_enumerationCache) 743 visitor.append(&m_enumerationCache); 744 if (m_propertyTable) { 745 PropertyTable::iterator end = m_propertyTable->end(); 746 for (PropertyTable::iterator ptr = m_propertyTable->begin(); ptr != end; ++ptr) { 727 void Structure::visitChildrenVirtual(SlotVisitor& visitor) 728 { 729 visitChildren(this, visitor); 730 } 731 732 void Structure::visitChildren(JSCell* cell, SlotVisitor& visitor) 733 { 734 Structure* thisObject = static_cast<Structure*>(cell); 735 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 736 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 737 JSCell::visitChildren(thisObject, visitor); 738 if (thisObject->m_globalObject) 739 visitor.append(&thisObject->m_globalObject); 740 if (thisObject->m_prototype) 741 visitor.append(&thisObject->m_prototype); 742 if (thisObject->m_cachedPrototypeChain) 743 visitor.append(&thisObject->m_cachedPrototypeChain); 744 if (thisObject->m_previous) 745 visitor.append(&thisObject->m_previous); 746 if (thisObject->m_specificValueInPrevious) 747 visitor.append(&thisObject->m_specificValueInPrevious); 748 if (thisObject->m_enumerationCache) 749 visitor.append(&thisObject->m_enumerationCache); 750 if (thisObject->m_propertyTable) { 751 PropertyTable::iterator end = thisObject->m_propertyTable->end(); 752 for (PropertyTable::iterator ptr = thisObject->m_propertyTable->begin(); ptr != end; ++ptr) { 747 753 if (ptr->specificValue) 748 754 visitor.append(&ptr->specificValue); -
trunk/Source/JavaScriptCore/runtime/Structure.h
r95503 r95849 131 131 JSValue prototypeForLookup(ExecState*) const; 132 132 StructureChain* prototypeChain(ExecState*) const; 133 void visitChildren(SlotVisitor&); 133 void visitChildrenVirtual(SlotVisitor&); 134 static void visitChildren(JSCell*, SlotVisitor&); 134 135 135 136 Structure* previousID() const { ASSERT(structure()->classInfo() == &s_info); return m_previous.get(); } -
trunk/Source/JavaScriptCore/runtime/StructureChain.cpp
r93920 r95849 44 44 } 45 45 46 void StructureChain::visitChildren (SlotVisitor& visitor)46 void StructureChain::visitChildrenVirtual(SlotVisitor& visitor) 47 47 { 48 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 49 ASSERT(structure()->typeInfo().overridesVisitChildren()); 48 visitChildren(this, visitor); 49 } 50 51 void StructureChain::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 { 53 StructureChain* thisObject = static_cast<StructureChain*>(cell); 54 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 55 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 50 56 size_t i = 0; 51 while ( m_vector[i])52 visitor.append(& m_vector[i++]);57 while (thisObject->m_vector[i]) 58 visitor.append(&thisObject->m_vector[i++]); 53 59 } 54 60 -
trunk/Source/JavaScriptCore/runtime/StructureChain.h
r94929 r95849 53 53 } 54 54 WriteBarrier<Structure>* head() { return m_vector.get(); } 55 void visitChildren(SlotVisitor&); 55 void visitChildrenVirtual(SlotVisitor&); 56 static void visitChildren(JSCell*, SlotVisitor&); 56 57 57 58 static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype) { return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info); } -
trunk/Source/JavaScriptGlue/ChangeLog
r95108 r95849 1 2011-09-23 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 Add static version of JSCell::visitChildren 4 https://bugs.webkit.org/show_bug.cgi?id=68404 5 6 Reviewed by Darin Adler. 7 8 In this patch we just extract the bodies of the virtual visitChildren methods 9 throughout the JSCell inheritance hierarchy out into static methods, which are 10 now called from the virtual methods. This is an intermediate step in trying to 11 move the virtual-ness of visitChildren into our own custom vtable stored in 12 ClassInfo. We need to convert the methods to static methods in order to be 13 able to more easily store and refer to them in our custom vtable since normal 14 member methods store some implicit information in their types, making it 15 impossible to store them generically in ClassInfo. 16 17 * UserObjectImp.cpp: 18 (UserObjectImp::visitChildrenVirtual): 19 (UserObjectImp::visitChildren): 20 * UserObjectImp.h: 21 1 22 2011-09-14 Mark Hahnenberg <mhahnenberg@apple.com> 2 23 -
trunk/Source/JavaScriptGlue/UserObjectImp.cpp
r94364 r95849 405 405 } 406 406 407 void UserObjectImp::visitChildren(SlotVisitor& visitor) 408 { 409 JSObject::visitChildren(visitor); 410 if (fJSUserObject) 411 fJSUserObject->Mark(); 412 } 407 void UserObjectImp::visitChildrenVirtual(SlotVisitor& visitor) 408 { 409 visitChildren(this, visitor); 410 } 411 412 void UserObjectImp::visitChildren(JSCell* cell, SlotVisitor& visitor) 413 { 414 UserObjectImp* thisObject = static_cast<UserObjectImp*>(cell); 415 JSObject::visitChildren(thisObject, visitor); 416 if (thisObject->fJSUserObject) 417 thisObject->fJSUserObject->Mark(); 418 } -
trunk/Source/JavaScriptGlue/UserObjectImp.h
r94929 r95849 63 63 virtual UString toString(ExecState *exec) const; 64 64 65 virtual void visitChildren(SlotVisitor&); 65 virtual void visitChildrenVirtual(SlotVisitor&); 66 static void visitChildren(JSCell*, SlotVisitor&); 66 67 67 68 JSUserObject *GetJSUserObject() const; -
trunk/Source/WebCore/ChangeLog
r95839 r95849 1 2011-09-23 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 Add static version of JSCell::visitChildren 4 https://bugs.webkit.org/show_bug.cgi?id=68404 5 6 Reviewed by Darin Adler. 7 8 No new tests. 9 10 In this patch we just extract the bodies of the virtual visitChildren methods 11 throughout the JSCell inheritance hierarchy out into static methods, which are 12 now called from the virtual methods. This is an intermediate step in trying to 13 move the virtual-ness of visitChildren into our own custom vtable stored in 14 ClassInfo. We need to convert the methods to static methods in order to be 15 able to more easily store and refer to them in our custom vtable since normal 16 member methods store some implicit information in their types, making it 17 impossible to store them generically in ClassInfo. 18 19 * WebCore.exp.in: 20 * bindings/js/JSAttrCustom.cpp: 21 (WebCore::JSAttr::visitChildrenVirtual): 22 (WebCore::JSAttr::visitChildren): 23 * bindings/js/JSAudioContextCustom.cpp: 24 (WebCore::JSAudioContext::visitChildrenVirtual): 25 (WebCore::JSAudioContext::visitChildren): 26 * bindings/js/JSCSSRuleCustom.cpp: 27 (WebCore::JSCSSRule::visitChildrenVirtual): 28 (WebCore::JSCSSRule::visitChildren): 29 * bindings/js/JSCSSStyleDeclarationCustom.cpp: 30 (WebCore::JSCSSStyleDeclaration::visitChildrenVirtual): 31 (WebCore::JSCSSStyleDeclaration::visitChildren): 32 * bindings/js/JSCanvasRenderingContextCustom.cpp: 33 (WebCore::JSCanvasRenderingContext::visitChildrenVirtual): 34 (WebCore::JSCanvasRenderingContext::visitChildren): 35 * bindings/js/JSDOMGlobalObject.cpp: 36 (WebCore::JSDOMGlobalObject::visitChildrenVirtual): 37 (WebCore::JSDOMGlobalObject::visitChildren): 38 * bindings/js/JSDOMGlobalObject.h: 39 * bindings/js/JSDOMWindowCustom.cpp: 40 (WebCore::JSDOMWindow::visitChildrenVirtual): 41 (WebCore::JSDOMWindow::visitChildren): 42 * bindings/js/JSDOMWindowShell.cpp: 43 (WebCore::JSDOMWindowShell::visitChildrenVirtual): 44 (WebCore::JSDOMWindowShell::visitChildren): 45 * bindings/js/JSDOMWindowShell.h: 46 * bindings/js/JSJavaScriptAudioNodeCustom.cpp: 47 (WebCore::JSJavaScriptAudioNode::visitChildrenVirtual): 48 (WebCore::JSJavaScriptAudioNode::visitChildren): 49 * bindings/js/JSMessageChannelCustom.cpp: 50 (WebCore::JSMessageChannel::visitChildrenVirtual): 51 (WebCore::JSMessageChannel::visitChildren): 52 * bindings/js/JSMessagePortCustom.cpp: 53 (WebCore::JSMessagePort::visitChildrenVirtual): 54 (WebCore::JSMessagePort::visitChildren): 55 * bindings/js/JSNamedNodeMapCustom.cpp: 56 (WebCore::JSNamedNodeMap::visitChildrenVirtual): 57 (WebCore::JSNamedNodeMap::visitChildren): 58 * bindings/js/JSNodeCustom.cpp: 59 (WebCore::JSNode::visitChildrenVirtual): 60 (WebCore::JSNode::visitChildren): 61 * bindings/js/JSNodeFilterCustom.cpp: 62 (WebCore::JSNodeFilter::visitChildrenVirtual): 63 (WebCore::JSNodeFilter::visitChildren): 64 * bindings/js/JSNodeIteratorCustom.cpp: 65 (WebCore::JSNodeIterator::visitChildrenVirtual): 66 (WebCore::JSNodeIterator::visitChildren): 67 * bindings/js/JSSVGElementInstanceCustom.cpp: 68 (WebCore::JSSVGElementInstance::visitChildrenVirtual): 69 (WebCore::JSSVGElementInstance::visitChildren): 70 * bindings/js/JSSharedWorkerCustom.cpp: 71 (WebCore::JSSharedWorker::visitChildrenVirtual): 72 (WebCore::JSSharedWorker::visitChildren): 73 * bindings/js/JSStyleSheetCustom.cpp: 74 (WebCore::JSStyleSheet::visitChildrenVirtual): 75 (WebCore::JSStyleSheet::visitChildren): 76 * bindings/js/JSTreeWalkerCustom.cpp: 77 (WebCore::JSTreeWalker::visitChildrenVirtual): 78 (WebCore::JSTreeWalker::visitChildren): 79 * bindings/js/JSWebGLRenderingContextCustom.cpp: 80 (WebCore::JSWebGLRenderingContext::visitChildrenVirtual): 81 (WebCore::JSWebGLRenderingContext::visitChildren): 82 * bindings/js/JSWorkerContextCustom.cpp: 83 (WebCore::JSWorkerContext::visitChildrenVirtual): 84 (WebCore::JSWorkerContext::visitChildren): 85 * bindings/js/JSXMLHttpRequestCustom.cpp: 86 (WebCore::JSXMLHttpRequest::visitChildrenVirtual): 87 (WebCore::JSXMLHttpRequest::visitChildren): 88 * bindings/js/JSXPathResultCustom.cpp: 89 (WebCore::JSXPathResult::visitChildrenVirtual): 90 (WebCore::JSXPathResult::visitChildren): 91 * bindings/scripts/CodeGeneratorJS.pm: 92 (GenerateHeader): 93 (GenerateImplementation): 94 * bindings/scripts/test/JS/JSTestObj.cpp: 95 (WebCore::JSTestObj::visitChildrenVirtual): 96 (WebCore::JSTestObj::visitChildren): 97 * bindings/scripts/test/JS/JSTestObj.h: 98 * bridge/qt/qt_instance.cpp: 99 (JSC::Bindings::QtRuntimeObject::visitChildrenVirtual): 100 (JSC::Bindings::QtRuntimeObject::visitChildren): 101 * bridge/qt/qt_runtime.cpp: 102 (JSC::Bindings::QtRuntimeMetaMethod::visitChildrenVirtual): 103 (JSC::Bindings::QtRuntimeMetaMethod::visitChildren): 104 * bridge/qt/qt_runtime.h: 105 * workers/WorkerContext.h: 106 1 107 2011-09-23 Mario Sanchez Prada <msanchez@igalia.com> 2 108 -
trunk/Source/WebCore/WebCore.exp.in
r95725 r95849 816 816 __ZN7WebCore6Editor7commandERKN3WTF6StringE 817 817 __ZN7WebCore6Editor7outdentEv 818 __ZN7WebCore6JSNode 13visitChildrenERN3JSC11SlotVisitorE818 __ZN7WebCore6JSNode20visitChildrenVirtualERN3JSC11SlotVisitorE 819 819 __ZN7WebCore6JSNode3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE 820 820 __ZN7WebCore6JSNode6s_infoE -
trunk/Source/WebCore/bindings/js/JSAttrCustom.cpp
r86499 r95849 40 40 using namespace HTMLNames; 41 41 42 void JSAttr::visitChildren (SlotVisitor& visitor)42 void JSAttr::visitChildrenVirtual(SlotVisitor& visitor) 43 43 { 44 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 44 visitChildren(this, visitor); 45 } 46 47 void JSAttr::visitChildren(JSCell* cell, SlotVisitor& visitor) 48 { 49 JSAttr* thisObject = static_cast<JSAttr*>(cell); 50 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 45 51 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 46 ASSERT( structure()->typeInfo().overridesVisitChildren());47 Base::visitChildren( visitor);52 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 53 Base::visitChildren(thisObject, visitor); 48 54 49 Element* element = impl()->ownerElement();55 Element* element = thisObject->impl()->ownerElement(); 50 56 if (!element) 51 57 return; -
trunk/Source/WebCore/bindings/js/JSAudioContextCustom.cpp
r91319 r95849 40 40 namespace WebCore { 41 41 42 void JSAudioContext::visitChildren (SlotVisitor& visitor)42 void JSAudioContext::visitChildrenVirtual(SlotVisitor& visitor) 43 43 { 44 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 44 visitChildren(this, visitor); 45 } 46 47 void JSAudioContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 48 { 49 JSAudioContext* thisObject = static_cast<JSAudioContext*>(cell); 50 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 45 51 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 46 ASSERT( structure()->typeInfo().overridesVisitChildren());47 Base::visitChildren( visitor);48 m_impl->visitJSEventListeners(visitor);52 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 53 Base::visitChildren(thisObject, visitor); 54 thisObject->m_impl->visitJSEventListeners(visitor); 49 55 } 50 56 -
trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp
r86499 r95849 49 49 namespace WebCore { 50 50 51 void JSCSSRule::visitChildren (SlotVisitor& visitor)51 void JSCSSRule::visitChildrenVirtual(SlotVisitor& visitor) 52 52 { 53 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 53 visitChildren(this, visitor); 54 } 55 56 void JSCSSRule::visitChildren(JSCell* cell, SlotVisitor& visitor) 57 { 58 JSCSSRule* thisObject = static_cast<JSCSSRule*>(cell); 59 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 54 60 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 55 ASSERT( structure()->typeInfo().overridesVisitChildren());56 Base::visitChildren( visitor);57 visitor.addOpaqueRoot(root( impl()));61 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 62 Base::visitChildren(thisObject, visitor); 63 visitor.addOpaqueRoot(root(thisObject->impl())); 58 64 } 59 65 -
trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
r95331 r95849 44 44 namespace WebCore { 45 45 46 void JSCSSStyleDeclaration::visitChildren(SlotVisitor& visitor) 47 { 48 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 46 void JSCSSStyleDeclaration::visitChildrenVirtual(SlotVisitor& visitor) 47 { 48 visitChildren(this, visitor); 49 } 50 51 void JSCSSStyleDeclaration::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 { 53 JSCSSStyleDeclaration* thisObject = static_cast<JSCSSStyleDeclaration*>(cell); 54 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 49 55 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 50 ASSERT( structure()->typeInfo().overridesVisitChildren());51 Base::visitChildren( visitor);52 visitor.addOpaqueRoot(root( impl()));56 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 57 Base::visitChildren(thisObject, visitor); 58 visitor.addOpaqueRoot(root(thisObject->impl())); 53 59 } 54 60 -
trunk/Source/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp
r86499 r95849 40 40 namespace WebCore { 41 41 42 void JSCanvasRenderingContext::visitChildren (SlotVisitor& visitor)42 void JSCanvasRenderingContext::visitChildrenVirtual(SlotVisitor& visitor) 43 43 { 44 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 44 visitChildren(this, visitor); 45 } 46 47 void JSCanvasRenderingContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 48 { 49 JSCanvasRenderingContext* thisObject = static_cast<JSCanvasRenderingContext*>(cell); 50 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 45 51 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 46 ASSERT( structure()->typeInfo().overridesVisitChildren());47 Base::visitChildren( visitor);52 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 53 Base::visitChildren(thisObject, visitor); 48 54 49 visitor.addOpaqueRoot(root( impl()->canvas()));55 visitor.addOpaqueRoot(root(thisObject->impl()->canvas())); 50 56 } 51 57 -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp
r95108 r95849 56 56 } 57 57 58 void JSDOMGlobalObject::visitChildren (SlotVisitor& visitor)58 void JSDOMGlobalObject::visitChildrenVirtual(JSC::SlotVisitor& visitor) 59 59 { 60 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 60 visitChildren(this, visitor); 61 } 62 63 void JSDOMGlobalObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 64 { 65 JSDOMGlobalObject* thisObject = static_cast<JSDOMGlobalObject*>(cell); 66 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 61 67 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 62 ASSERT( structure()->typeInfo().overridesVisitChildren());63 Base::visitChildren( visitor);68 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 69 Base::visitChildren(thisObject, visitor); 64 70 65 JSDOMStructureMap::iterator end = structures().end();66 for (JSDOMStructureMap::iterator it = structures().begin(); it != end; ++it)71 JSDOMStructureMap::iterator end = thisObject->structures().end(); 72 for (JSDOMStructureMap::iterator it = thisObject->structures().begin(); it != end; ++it) 67 73 visitor.append(&it->second); 68 74 69 JSDOMConstructorMap::iterator end2 = constructors().end();70 for (JSDOMConstructorMap::iterator it2 = constructors().begin(); it2 != end2; ++it2)75 JSDOMConstructorMap::iterator end2 = thisObject->constructors().end(); 76 for (JSDOMConstructorMap::iterator it2 = thisObject->constructors().begin(); it2 != end2; ++it2) 71 77 visitor.append(&it2->second); 72 78 73 if ( m_injectedScript)74 visitor.append(& m_injectedScript);79 if (thisObject->m_injectedScript) 80 visitor.append(&thisObject->m_injectedScript); 75 81 } 76 82 -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h
r95108 r95849 65 65 JSObject* injectedScript() const; 66 66 67 virtual void visitChildren(JSC::SlotVisitor&); 67 virtual void visitChildrenVirtual(JSC::SlotVisitor&); 68 static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&); 68 69 69 70 DOMWrapperWorld* world() { return m_world.get(); } -
trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
r95751 r95849 78 78 namespace WebCore { 79 79 80 void JSDOMWindow::visitChildren(SlotVisitor& visitor) 81 { 82 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 80 void JSDOMWindow::visitChildrenVirtual(SlotVisitor& visitor) 81 { 82 visitChildren(this, visitor); 83 } 84 85 void JSDOMWindow::visitChildren(JSCell* cell, SlotVisitor& visitor) 86 { 87 JSDOMWindow* thisObject = static_cast<JSDOMWindow*>(cell); 88 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 83 89 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 84 ASSERT( structure()->typeInfo().overridesVisitChildren());85 Base::visitChildren( visitor);86 87 impl()->visitJSEventListeners(visitor);88 if (Frame* frame = impl()->frame())90 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 91 Base::visitChildren(thisObject, visitor); 92 93 thisObject->impl()->visitJSEventListeners(visitor); 94 if (Frame* frame = thisObject->impl()->frame()) 89 95 visitor.addOpaqueRoot(frame); 90 96 } -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp
r94875 r95849 84 84 // ---- 85 85 86 void JSDOMWindowShell::visitChildren(SlotVisitor& visitor) 87 { 88 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 86 void JSDOMWindowShell::visitChildrenVirtual(JSC::SlotVisitor& visitor) 87 { 88 visitChildren(this, visitor); 89 } 90 91 void JSDOMWindowShell::visitChildren(JSCell* cell, SlotVisitor& visitor) 92 { 93 JSDOMWindowShell* thisObject = static_cast<JSDOMWindowShell*>(cell); 94 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 89 95 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 90 ASSERT( structure()->typeInfo().overridesVisitChildren());91 Base::visitChildren( visitor);92 if ( m_window)93 visitor.append(& m_window);96 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 97 Base::visitChildren(thisObject, visitor); 98 if (thisObject->m_window) 99 visitor.append(&thisObject->m_window); 94 100 } 95 101 -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h
r94929 r95849 78 78 static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesVisitChildren | JSC::OverridesGetPropertyNames | Base::StructureFlags; 79 79 80 virtual void visitChildren(JSC::SlotVisitor&); 80 virtual void visitChildrenVirtual(JSC::SlotVisitor&); 81 static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&); 81 82 virtual JSC::UString className() const; 82 83 virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); -
trunk/Source/WebCore/bindings/js/JSJavaScriptAudioNodeCustom.cpp
r86499 r95849 35 35 namespace WebCore { 36 36 37 void JSJavaScriptAudioNode::visitChildren (SlotVisitor& visitor)37 void JSJavaScriptAudioNode::visitChildrenVirtual(SlotVisitor& visitor) 38 38 { 39 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 39 visitChildren(this, visitor); 40 } 41 42 void JSJavaScriptAudioNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 43 { 44 JSJavaScriptAudioNode* thisObject = static_cast<JSJavaScriptAudioNode*>(cell); 45 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 40 46 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 41 ASSERT( structure()->typeInfo().overridesVisitChildren());42 Base::visitChildren( visitor);43 static_cast<JavaScriptAudioNode*>( impl())->visitJSEventListeners(visitor);47 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 48 Base::visitChildren(thisObject, visitor); 49 static_cast<JavaScriptAudioNode*>(thisObject->impl())->visitJSEventListeners(visitor); 44 50 } 45 51 -
trunk/Source/WebCore/bindings/js/JSMessageChannelCustom.cpp
r86499 r95849 33 33 34 34 namespace WebCore { 35 36 void JSMessageChannel::visitChildren (SlotVisitor& visitor)35 36 void JSMessageChannel::visitChildrenVirtual(SlotVisitor& visitor) 37 37 { 38 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 38 visitChildren(this, visitor); 39 } 40 41 void JSMessageChannel::visitChildren(JSCell* cell, SlotVisitor& visitor) 42 { 43 JSMessageChannel* thisObject = static_cast<JSMessageChannel*>(cell); 44 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 39 45 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 40 ASSERT( structure()->typeInfo().overridesVisitChildren());41 Base::visitChildren( visitor);46 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 47 Base::visitChildren(thisObject, visitor); 42 48 43 if (MessagePort* port = m_impl->port1())49 if (MessagePort* port = thisObject->m_impl->port1()) 44 50 visitor.addOpaqueRoot(port); 45 51 46 if (MessagePort* port = m_impl->port2())52 if (MessagePort* port = thisObject->m_impl->port2()) 47 53 visitor.addOpaqueRoot(port); 48 54 } -
trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
r95362 r95849 43 43 namespace WebCore { 44 44 45 void JSMessagePort::visitChildren (SlotVisitor& visitor)45 void JSMessagePort::visitChildrenVirtual(SlotVisitor& visitor) 46 46 { 47 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 47 visitChildren(this, visitor); 48 } 49 50 void JSMessagePort::visitChildren(JSCell* cell, SlotVisitor& visitor) 51 { 52 JSMessagePort* thisObject = static_cast<JSMessagePort*>(cell); 53 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 48 54 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 49 ASSERT( structure()->typeInfo().overridesVisitChildren());50 Base::visitChildren( visitor);55 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 56 Base::visitChildren(thisObject, visitor); 51 57 52 58 // 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(). 53 if (MessagePort* port = m_impl->locallyEntangledPort())59 if (MessagePort* port = thisObject->m_impl->locallyEntangledPort()) 54 60 visitor.addOpaqueRoot(port); 55 61 56 m_impl->visitJSEventListeners(visitor);62 thisObject->m_impl->visitJSEventListeners(visitor); 57 63 } 58 64 -
trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp
r86499 r95849 36 36 namespace WebCore { 37 37 38 void JSNamedNodeMap::visitChildrenVirtual(SlotVisitor& visitor) 39 { 40 visitChildren(this, visitor); 41 } 42 38 43 bool JSNamedNodeMap::canGetItemsForName(ExecState*, NamedNodeMap* impl, const Identifier& propertyName) 39 44 { … … 47 52 } 48 53 49 void JSNamedNodeMap::visitChildren( SlotVisitor& visitor)54 void JSNamedNodeMap::visitChildren(JSCell* cell, SlotVisitor& visitor) 50 55 { 51 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 56 JSNamedNodeMap* thisObject = static_cast<JSNamedNodeMap*>(cell); 57 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 52 58 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 53 ASSERT( structure()->typeInfo().overridesVisitChildren());54 Base::visitChildren( visitor);59 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 60 Base::visitChildren(thisObject, visitor); 55 61 56 62 // We need to keep the wrapper for our underlying NamedNodeMap's element … … 58 64 // don't know how to keep it alive correctly. 59 65 // FIXME: Fix this lifetime issue in the DOM, and remove this. 60 Element* element = impl()->element();66 Element* element = thisObject->impl()->element(); 61 67 if (!element) 62 68 return; -
trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp
r86499 r95849 193 193 } 194 194 195 void JSNode::visitChildren(SlotVisitor& visitor) 196 { 197 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 195 void JSNode::visitChildrenVirtual(SlotVisitor& visitor) 196 { 197 visitChildren(this, visitor); 198 } 199 200 void JSNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 201 { 202 JSNode* thisObject = static_cast<JSNode*>(cell); 203 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 198 204 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 199 ASSERT( structure()->typeInfo().overridesVisitChildren());200 Base::visitChildren( visitor);201 202 Node* node = m_impl.get();205 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 206 Base::visitChildren(thisObject, visitor); 207 208 Node* node = thisObject->m_impl.get(); 203 209 node->visitJSEventListeners(visitor); 204 210 -
trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
r86499 r95849 37 37 namespace WebCore { 38 38 39 void JSNodeFilter::visitChildren (SlotVisitor& visitor)39 void JSNodeFilter::visitChildrenVirtual(SlotVisitor& visitor) 40 40 { 41 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 41 visitChildren(this, visitor); 42 } 43 44 void JSNodeFilter::visitChildren(JSCell* cell, SlotVisitor& visitor) 45 { 46 JSNodeFilter* thisObject = static_cast<JSNodeFilter*>(cell); 47 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 42 48 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT( structure()->typeInfo().overridesVisitChildren());44 Base::visitChildren( visitor);45 visitor.addOpaqueRoot( impl());49 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 50 Base::visitChildren(thisObject, visitor); 51 visitor.addOpaqueRoot(thisObject->impl()); 46 52 } 47 53 -
trunk/Source/WebCore/bindings/js/JSNodeIteratorCustom.cpp
r86499 r95849 30 30 namespace WebCore { 31 31 32 void JSNodeIterator::visitChildren (SlotVisitor& visitor)32 void JSNodeIterator::visitChildrenVirtual(SlotVisitor& visitor) 33 33 { 34 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 34 visitChildren(this, visitor); 35 } 36 37 void JSNodeIterator::visitChildren(JSCell* cell, SlotVisitor& visitor) 38 { 39 JSNodeIterator* thisObject = static_cast<JSNodeIterator*>(cell); 40 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 35 41 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 36 ASSERT( structure()->typeInfo().overridesVisitChildren());37 Base::visitChildren( visitor);42 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 43 Base::visitChildren(thisObject, visitor); 38 44 39 if (NodeFilter* filter = m_impl->filter())45 if (NodeFilter* filter = thisObject->m_impl->filter()) 40 46 visitor.addOpaqueRoot(filter); 41 47 } -
trunk/Source/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp
r90124 r95849 36 36 namespace WebCore { 37 37 38 void JSSVGElementInstance::visitChildren (JSC::SlotVisitor& visitor)38 void JSSVGElementInstance::visitChildrenVirtual(JSC::SlotVisitor& visitor) 39 39 { 40 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 40 visitChildren(this, visitor); 41 } 42 43 void JSSVGElementInstance::visitChildren(JSC::JSCell* cell, JSC::SlotVisitor& visitor) 44 { 45 JSSVGElementInstance* thisObject = static_cast<JSSVGElementInstance*>(cell); 46 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 41 47 COMPILE_ASSERT(StructureFlags & JSC::OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 42 ASSERT( structure()->typeInfo().overridesVisitChildren());43 Base::visitChildren( visitor);44 visitor.addOpaqueRoot(root( impl()->correspondingElement()));48 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 49 Base::visitChildren(thisObject, visitor); 50 visitor.addOpaqueRoot(root(thisObject->impl()->correspondingElement())); 45 51 } 46 52 -
trunk/Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp
r93339 r95849 44 44 namespace WebCore { 45 45 46 void JSSharedWorker::visitChildren (SlotVisitor& visitor)46 void JSSharedWorker::visitChildrenVirtual(SlotVisitor& visitor) 47 47 { 48 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 48 visitChildren(this, visitor); 49 } 50 51 void JSSharedWorker::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 { 53 JSSharedWorker* thisObject = static_cast<JSSharedWorker*>(cell); 54 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 49 55 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 50 ASSERT( structure()->typeInfo().overridesVisitChildren());51 Base::visitChildren( visitor);56 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 57 Base::visitChildren(thisObject, visitor); 52 58 53 if (MessagePort* port = impl()->port())59 if (MessagePort* port = thisObject->impl()->port()) 54 60 visitor.addOpaqueRoot(port); 55 61 } -
trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp
r86499 r95849 36 36 namespace WebCore { 37 37 38 void JSStyleSheet::visitChildren (SlotVisitor& visitor)38 void JSStyleSheet::visitChildrenVirtual(SlotVisitor& visitor) 39 39 { 40 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 40 visitChildren(this, visitor); 41 } 42 43 void JSStyleSheet::visitChildren(JSCell* cell, SlotVisitor& visitor) 44 { 45 JSStyleSheet* thisObject = static_cast<JSStyleSheet*>(cell); 46 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 41 47 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 42 ASSERT( structure()->typeInfo().overridesVisitChildren());43 Base::visitChildren( visitor);44 visitor.addOpaqueRoot(root( impl()));48 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 49 Base::visitChildren(thisObject, visitor); 50 visitor.addOpaqueRoot(root(thisObject->impl())); 45 51 } 46 52 -
trunk/Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp
r86499 r95849 29 29 30 30 namespace WebCore { 31 32 void JSTreeWalker::visitChildren (SlotVisitor& visitor)31 32 void JSTreeWalker::visitChildrenVirtual(SlotVisitor& visitor) 33 33 { 34 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 34 visitChildren(this, visitor); 35 } 36 37 void JSTreeWalker::visitChildren(JSCell* cell, SlotVisitor& visitor) 38 { 39 JSTreeWalker* thisObject = static_cast<JSTreeWalker*>(cell); 40 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 35 41 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 36 ASSERT( structure()->typeInfo().overridesVisitChildren());37 Base::visitChildren( visitor);42 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 43 Base::visitChildren(thisObject, visitor); 38 44 39 if (NodeFilter* filter = m_impl->filter())45 if (NodeFilter* filter = thisObject->m_impl->filter()) 40 46 visitor.addOpaqueRoot(filter); 41 47 } -
trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
r95728 r95849 193 193 } 194 194 195 void JSWebGLRenderingContext::visitChildren(SlotVisitor& visitor) 196 { 197 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 195 void JSWebGLRenderingContext::visitChildrenVirtual(SlotVisitor& visitor) 196 { 197 visitChildren(this, visitor); 198 } 199 200 void JSWebGLRenderingContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 201 { 202 JSWebGLRenderingContext* thisObject = static_cast<JSWebGLRenderingContext*>(cell); 203 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 198 204 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 199 ASSERT( structure()->typeInfo().overridesVisitChildren());200 Base::visitChildren( visitor);201 visitor.addOpaqueRoot( impl());205 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 206 Base::visitChildren(thisObject, visitor); 207 visitor.addOpaqueRoot(thisObject->impl()); 202 208 } 203 209 -
trunk/Source/WebCore/bindings/js/JSWorkerContextCustom.cpp
r95501 r95849 54 54 namespace WebCore { 55 55 56 void JSWorkerContext::visitChildren (SlotVisitor& visitor)56 void JSWorkerContext::visitChildrenVirtual(SlotVisitor& visitor) 57 57 { 58 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 58 visitChildren(this, visitor); 59 } 60 61 void JSWorkerContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 62 { 63 JSWorkerContext* thisObject = static_cast<JSWorkerContext*>(cell); 64 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 59 65 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 60 ASSERT( structure()->typeInfo().overridesVisitChildren());61 Base::visitChildren( visitor);66 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 67 Base::visitChildren(thisObject, visitor); 62 68 63 if (WorkerLocation* location = impl()->optionalLocation())69 if (WorkerLocation* location = thisObject->impl()->optionalLocation()) 64 70 visitor.addOpaqueRoot(location); 65 if (WorkerNavigator* navigator = impl()->optionalNavigator())71 if (WorkerNavigator* navigator = thisObject->impl()->optionalNavigator()) 66 72 visitor.addOpaqueRoot(navigator); 67 73 68 impl()->visitJSEventListeners(visitor);74 thisObject->impl()->visitJSEventListeners(visitor); 69 75 } 70 76 -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
r86499 r95849 55 55 namespace WebCore { 56 56 57 void JSXMLHttpRequest::visitChildren(SlotVisitor& visitor) 58 { 59 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 57 void JSXMLHttpRequest::visitChildrenVirtual(SlotVisitor& visitor) 58 { 59 visitChildren(this, visitor); 60 } 61 62 void JSXMLHttpRequest::visitChildren(JSCell* cell, SlotVisitor& visitor) 63 { 64 JSXMLHttpRequest* thisObject = static_cast<JSXMLHttpRequest*>(cell); 65 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 60 66 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 61 ASSERT( structure()->typeInfo().overridesVisitChildren());62 Base::visitChildren( visitor);63 64 if (XMLHttpRequestUpload* upload = m_impl->optionalUpload())67 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 68 Base::visitChildren(thisObject, visitor); 69 70 if (XMLHttpRequestUpload* upload = thisObject->m_impl->optionalUpload()) 65 71 visitor.addOpaqueRoot(upload); 66 72 67 if (Document* responseDocument = m_impl->optionalResponseXML())73 if (Document* responseDocument = thisObject->m_impl->optionalResponseXML()) 68 74 visitor.addOpaqueRoot(responseDocument); 69 75 70 if (ArrayBuffer* responseArrayBuffer = m_impl->optionalResponseArrayBuffer())76 if (ArrayBuffer* responseArrayBuffer = thisObject->m_impl->optionalResponseArrayBuffer()) 71 77 visitor.addOpaqueRoot(responseArrayBuffer); 72 78 73 79 #if ENABLE(XHR_RESPONSE_BLOB) 74 if (Blob* responseBlob = m_impl->optionalResponseBlob())80 if (Blob* responseBlob = thisObject->m_impl->optionalResponseBlob()) 75 81 visitor.addOpaqueRoot(responseBlob); 76 82 #endif 77 83 78 m_impl->visitJSEventListeners(visitor);84 thisObject->m_impl->visitJSEventListeners(visitor); 79 85 } 80 86 -
trunk/Source/WebCore/bindings/js/JSXPathResultCustom.cpp
r90124 r95849 38 38 namespace WebCore { 39 39 40 void JSXPathResult::visitChildren (SlotVisitor& visitor)40 void JSXPathResult::visitChildrenVirtual(SlotVisitor& visitor) 41 41 { 42 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 42 visitChildren(this, visitor); 43 } 44 45 void JSXPathResult::visitChildren(JSCell* cell, SlotVisitor& visitor) 46 { 47 JSXPathResult* thisObject = static_cast<JSXPathResult*>(cell); 48 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 43 49 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 44 ASSERT( structure()->typeInfo().overridesVisitChildren());45 Base::visitChildren( visitor);50 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 51 Base::visitChildren(thisObject, visitor); 46 52 47 const XPath::Value& xpathValue = impl()->value();53 const XPath::Value& xpathValue = thisObject->impl()->value(); 48 54 if (xpathValue.isNodeSet()) { 49 55 const XPath::NodeSet& nodesToMark = xpathValue.toNodeSet(); -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r95310 r95849 878 878 # visit function 879 879 if ($needsMarkChildren) { 880 push(@headerContent, " virtual void visitChildren(JSC::SlotVisitor&);\n\n"); 880 push(@headerContent, " virtual void visitChildrenVirtual(JSC::SlotVisitor&);\n"); 881 push(@headerContent, " static void visitChildren(JSCell*, JSC::SlotVisitor&);\n\n"); 881 882 $structureFlags{"JSC::OverridesVisitChildren"} = 1; 882 883 } … … 2201 2202 2202 2203 if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) { 2203 push(@implContent, "void ${className}::visitChildren (SlotVisitor& visitor)\n");2204 push(@implContent, "void ${className}::visitChildrenVirtual(SlotVisitor& visitor)\n"); 2204 2205 push(@implContent, "{\n"); 2205 push(@implContent, " ASSERT_GC_OBJECT_INHERITS(this, &s_info);\n"); 2206 push(@implContent, " visitChildren(this, visitor);\n"); 2207 push(@implContent, "}\n\n"); 2208 2209 push(@implContent, "void ${className}::visitChildren(JSCell* cell, SlotVisitor& visitor)\n"); 2210 push(@implContent, "{\n"); 2211 push(@implContent, " ${className}* thisObject = static_cast<${className}*>(cell);\n"); 2212 push(@implContent, " ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);\n"); 2206 2213 push(@implContent, " COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);\n"); 2207 push(@implContent, " ASSERT( structure()->typeInfo().overridesVisitChildren());\n");2208 push(@implContent, " Base::visitChildren( visitor);\n");2214 push(@implContent, " ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());\n"); 2215 push(@implContent, " Base::visitChildren(thisObject, visitor);\n"); 2209 2216 if ($dataNode->extendedAttributes->{"EventTarget"}) { 2210 push(@implContent, " impl()->visitJSEventListeners(visitor);\n");2217 push(@implContent, " thisObject->impl()->visitJSEventListeners(visitor);\n"); 2211 2218 } 2212 2219 if ($numCachedAttributes > 0) { … … 2214 2221 my $attribute = $_; 2215 2222 if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) { 2216 push(@implContent, " if ( m_" . $attribute->signature->name . ")\n");2217 push(@implContent, " visitor.append(& m_" . $attribute->signature->name . ");\n");2223 push(@implContent, " if (thisObject->m_" . $attribute->signature->name . ")\n"); 2224 push(@implContent, " visitor.append(&thisObject->m_" . $attribute->signature->name . ");\n"); 2218 2225 } 2219 2226 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
r95327 r95849 1871 1871 } 1872 1872 1873 void JSTestObj::visitChildren(SlotVisitor& visitor) 1874 { 1875 ASSERT_GC_OBJECT_INHERITS(this, &s_info); 1873 void JSTestObj::visitChildrenVirtual(SlotVisitor& visitor) 1874 { 1875 visitChildren(this, visitor); 1876 } 1877 1878 void JSTestObj::visitChildren(JSCell* cell, SlotVisitor& visitor) 1879 { 1880 JSTestObj* thisObject = static_cast<JSTestObj*>(cell); 1881 ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); 1876 1882 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 1877 ASSERT( structure()->typeInfo().overridesVisitChildren());1878 Base::visitChildren( visitor);1879 if ( m_cachedAttribute1)1880 visitor.append(& m_cachedAttribute1);1881 if ( m_cachedAttribute2)1882 visitor.append(& m_cachedAttribute2);1883 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 1884 Base::visitChildren(thisObject, visitor); 1885 if (thisObject->m_cachedAttribute1) 1886 visitor.append(&thisObject->m_cachedAttribute1); 1887 if (thisObject->m_cachedAttribute2) 1888 visitor.append(&thisObject->m_cachedAttribute2); 1883 1889 } 1884 1890 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
r95108 r95849 54 54 JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute1; 55 55 JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute2; 56 virtual void visitChildren(JSC::SlotVisitor&); 56 virtual void visitChildrenVirtual(JSC::SlotVisitor&); 57 static void visitChildren(JSCell*, JSC::SlotVisitor&); 57 58 58 59 -
trunk/Source/WebCore/bridge/qt/qt_instance.cpp
r95108 r95849 63 63 static const ClassInfo s_info; 64 64 65 virtual void visitChildren (SlotVisitor& visitor)65 virtual void visitChildrenVirtual(SlotVisitor& visitor) 66 66 { 67 RuntimeObject::visitChildren(visitor); 68 QtInstance* instance = static_cast<QtInstance*>(getInternalInstance()); 67 visitChildren(this, visitor); 68 } 69 70 static void visitChildren(JSCell* cell, SlotVisitor& visitor) 71 { 72 QtRuntimeObject* thisObject = static_cast<QtRuntimeObject*>(cell); 73 RuntimeObject::visitChildren(thisObject, visitor); 74 QtInstance* instance = static_cast<QtInstance*>(thisObject->getInternalInstance()); 69 75 if (instance) 70 76 instance->visitAggregate(visitor); -
trunk/Source/WebCore/bridge/qt/qt_runtime.cpp
r95250 r95849 1440 1440 } 1441 1441 1442 void QtRuntimeMetaMethod::visitChildren(SlotVisitor& visitor) 1443 { 1444 QtRuntimeMethod::visitChildren(visitor); 1445 QW_D(QtRuntimeMetaMethod); 1442 void QtRuntimeMetaMethod::visitChildrenVirtual(SlotVisitor& visitor) 1443 { 1444 visitChildren(this, visitor); 1445 } 1446 1447 void QtRuntimeMetaMethod::visitChildren(JSCell* cell, SlotVisitor& visitor) 1448 { 1449 QtRuntimeMetaMethod* thisObject = static_cast<QtRuntimeMetaMethod*>(cell); 1450 QtRuntimeMethod::visitChildren(thisObject, visitor); 1451 QtRuntimeMetaMethodData* d = thisObject->d_func(); 1446 1452 if (d->m_connect) 1447 1453 visitor.append(&d->m_connect); -
trunk/Source/WebCore/bridge/qt/qt_runtime.h
r95250 r95849 169 169 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 170 170 171 virtual void visitChildren(SlotVisitor&); 171 virtual void visitChildrenVirtual(SlotVisitor&); 172 static void visitChildren(JSCell*, SlotVisitor&); 172 173 173 174 protected: -
trunk/Source/WebCore/workers/WorkerContext.h
r95271 r95849 145 145 WorkerInspectorController* workerInspectorController() { return m_workerInspectorController.get(); } 146 146 #endif 147 // These methods are used for GC marking. See JSWorkerContext::visitChildren (SlotVisitor&) in147 // These methods are used for GC marking. See JSWorkerContext::visitChildrenVirtual(SlotVisitor&) in 148 148 // JSWorkerContextCustom.cpp. 149 149 WorkerNavigator* optionalNavigator() const { return m_navigator.get(); } -
trunk/Source/autotools/symbols.filter
r95685 r95849 57 57 _ZN7WebCore22externalRepresentationEPNS_7ElementEj; 58 58 _ZN7WebCore24DocumentMarkerController10markersForEPNS_4NodeE; 59 _ZN7WebCore6JSNode 13visitChildrenERN3JSC11SlotVisitorE;59 _ZN7WebCore6JSNode20visitChildrenVirtualERN3JSC11SlotVisitorE; 60 60 _ZN7WebCore6JSNode3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE; 61 61 _ZN7WebCore6JSNode6s_infoE;
Note: See TracChangeset
for help on using the changeset viewer.