Changeset 96346 in webkit
- Timestamp:
- Sep 29, 2011 12:37:09 PM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 78 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSCallbackObject.h
r96164 r96346 198 198 static CallType getCallData(JSCell*, CallData&); 199 199 200 virtual void visitChildrenVirtual(SlotVisitor& visitor)201 {202 visitChildren(this, visitor);203 }204 205 200 static void visitChildren(JSCell* cell, SlotVisitor& visitor) 206 201 { -
trunk/Source/JavaScriptCore/ChangeLog
r96344 r96346 1 2011-09-29 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 De-virtualize JSCell::visitChildrenVirtual and remove all other visitChildrenVirtual methods 4 https://bugs.webkit.org/show_bug.cgi?id=68839 5 6 Reviewed by Geoffrey Garen. 7 8 Removed the remaining visitChildrenVirtual methods. This patch completes the process of 9 de-virtualizing visitChildren. 10 11 * API/JSCallbackObject.h: 12 * JavaScriptCore.exp: 13 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: 14 * debugger/DebuggerActivation.cpp: 15 * debugger/DebuggerActivation.h: 16 * runtime/Arguments.cpp: 17 * runtime/Arguments.h: 18 * runtime/Executable.cpp: 19 * runtime/Executable.h: 20 * runtime/GetterSetter.cpp: 21 * runtime/GetterSetter.h: 22 * runtime/JSActivation.cpp: 23 * runtime/JSActivation.h: 24 * runtime/JSArray.cpp: 25 * runtime/JSArray.h: 26 * runtime/JSFunction.cpp: 27 * runtime/JSFunction.h: 28 * runtime/JSGlobalObject.cpp: 29 * runtime/JSGlobalObject.h: 30 * runtime/JSObject.cpp: 31 * runtime/JSPropertyNameIterator.cpp: 32 * runtime/JSPropertyNameIterator.h: 33 * runtime/JSStaticScopeObject.cpp: 34 * runtime/JSStaticScopeObject.h: 35 * runtime/JSValue.h: 36 * runtime/NativeErrorConstructor.cpp: 37 * runtime/NativeErrorConstructor.h: 38 * runtime/RegExpObject.cpp: 39 * runtime/RegExpObject.h: 40 * runtime/Structure.cpp: 41 * runtime/Structure.h: 42 * runtime/StructureChain.cpp: 43 * runtime/StructureChain.h: 44 45 Inlined the method table access and call to the visitChildren function (the only call sites 46 to visitChildren are here). 47 * heap/MarkStack.cpp: 48 (JSC::SlotVisitor::visitChildren): 49 50 Changed the field name for the visitChildren function pointer to visitChildren (from 51 visitChildrenFunctionPtr) to make call sites less verbose. 52 * runtime/ClassInfo.h: 53 54 Discovered JSBoundFunction doesn't have its own ClassInfo (it used JSFunction's ClassInfo) but 55 overrides visitChildren, so it needs to have its own ClassInfo. 56 * runtime/JSBoundFunction.cpp: 57 * runtime/JSBoundFunction.h: 58 59 Had to move className up to make sure that the virtual destructor in JSObject wasn't 60 the first non-inline virtual method in JSObject (as per the comment in the file). 61 Also moved JSCell::visitChildrenVirtual into JSObject.h in order for it be inline-able 62 to mitigate the cost of an extra method call. 63 64 Also added a convenience accessor function methodTable() to JSCell to return the MethodTable to make 65 call sites more concise. Implementation is inline in JSObject.h. 66 * runtime/JSObject.h: 67 (JSC::JSCell::methodTable): 68 * runtime/JSCell.h: 69 70 Added an out of line virtual destructor to JSWrapperObject and ScopeChainNode to 71 appease the vtable gods. It refused to compile if there were no virtual methods in 72 both of these classes due to the presence of a weak vtable pointer. 73 * runtime/JSWrapperObject.cpp: 74 (JSC::JSWrapperObject::~JSWrapperObject): 75 * runtime/JSWrapperObject.h: 76 * runtime/ScopeChain.cpp: 77 (JSC::ScopeChainNode::~ScopeChainNode): 78 * runtime/ScopeChain.h: 79 1 80 2011-09-29 Yuqiang Xian <yuqiang.xian@intel.com> 2 81 -
trunk/Source/JavaScriptCore/JavaScriptCore.exp
r96164 r96346 167 167 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueEj 168 168 __ZN3JSC14JSGlobalObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE 169 __ZN3JSC14JSGlobalObject20visitChildrenVirtualERNS_11SlotVisitorE170 169 __ZN3JSC14JSGlobalObject24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE 171 170 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE … … 278 277 __ZN3JSC7JSArray15setSubclassDataEPv 279 278 __ZN3JSC7JSArray18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 280 __ZN3JSC7JSArray20visitChildrenVirtualERNS_11SlotVisitorE281 279 __ZN3JSC7JSArray6s_infoE 282 280 __ZN3JSC7JSArray9setLengthEj … … 322 320 __ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 323 321 __ZN3JSC8JSObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE 324 __ZN3JSC8JSObject20visitChildrenVirtualERNS_11SlotVisitorE325 322 __ZN3JSC8JSObject21getPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE 326 323 __ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPNS_16WriteBarrierBaseINS_7UnknownEEE -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
r96164 r96346 34 34 ??1Mutex@WTF@@QAE@XZ 35 35 ??1RefCountedLeakCounter@WTF@@QAE@XZ 36 ??1ScopeChainNode@JSC@@EAE@XZ 36 37 ??1SourceProviderCache@JSC@@QAE@XZ 37 38 ??1ThreadCondition@WTF@@QAE@XZ … … 373 374 ?visitChildren@JSGlobalObject@JSC@@SAXPAVJSCell@2@AAVSlotVisitor@2@@Z 374 375 ?visitChildren@JSObject@JSC@@SAXPAVJSCell@2@AAVSlotVisitor@2@@Z 375 ?visitChildrenVirtual@JSGlobalObject@JSC@@UAEXAAVSlotVisitor@2@@Z376 ?visitChildrenVirtual@JSObject@JSC@@UAEXAAVSlotVisitor@2@@Z377 ?visitChildrenVirtual@ScopeChainNode@JSC@@UAEXAAVSlotVisitor@2@@Z378 376 ?wait@ThreadCondition@WTF@@QAEXAAVMutex@2@@Z 379 377 ?waitForThreadCompletion@WTF@@YAHIPAPAX@Z -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.cpp
r95901 r96346 42 42 ASSERT(activation->isActivationObject()); 43 43 m_activation.set(globalData, this, static_cast<JSActivation*>(activation)); 44 }45 46 void DebuggerActivation::visitChildrenVirtual(SlotVisitor& visitor)47 {48 visitChildren(this, visitor);49 44 } 50 45 -
trunk/Source/JavaScriptCore/debugger/DebuggerActivation.h
r95901 r96346 42 42 } 43 43 44 virtual void visitChildrenVirtual(SlotVisitor&);45 44 static void visitChildren(JSCell*, SlotVisitor&); 46 45 virtual UString className() const; -
trunk/Source/JavaScriptCore/heap/MarkStack.cpp
r95849 r96346 71 71 ASSERT(!m_isCheckingForDefaultMarkViolation); 72 72 m_isCheckingForDefaultMarkViolation = true; 73 cell-> visitChildrenVirtual(*this);73 cell->methodTable()->visitChildren(cell, *this); 74 74 ASSERT(m_isCheckingForDefaultMarkViolation); 75 75 m_isCheckingForDefaultMarkViolation = false; … … 81 81 return; 82 82 } 83 cell-> visitChildrenVirtual(*this);83 cell->methodTable()->visitChildren(cell, *this); 84 84 } 85 85 -
trunk/Source/JavaScriptCore/runtime/Arguments.cpp
r95936 r96346 44 44 } 45 45 46 void Arguments::visitChildrenVirtual(SlotVisitor& visitor)47 {48 visitChildren(this, visitor);49 }50 51 46 void Arguments::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 47 { -
trunk/Source/JavaScriptCore/runtime/Arguments.h
r95849 r96346 91 91 static const ClassInfo s_info; 92 92 93 virtual void visitChildrenVirtual(SlotVisitor&);94 93 static void visitChildren(JSCell*, SlotVisitor&); 95 94 -
trunk/Source/JavaScriptCore/runtime/ClassInfo.h
r95936 r96346 33 33 struct MethodTable { 34 34 typedef void (*VisitChildrenFunctionPtr)(JSCell*, SlotVisitor&); 35 VisitChildrenFunctionPtr visitChildren FunctionPtr;35 VisitChildrenFunctionPtr visitChildren; 36 36 }; 37 37 -
trunk/Source/JavaScriptCore/runtime/Executable.cpp
r95936 r96346 235 235 #endif 236 236 237 void EvalExecutable::visitChildrenVirtual(SlotVisitor& visitor)238 {239 visitChildren(this, visitor);240 }241 242 237 void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor) 243 238 { … … 377 372 m_programCodeBlock->unlinkCalls(); 378 373 #endif 379 }380 381 void ProgramExecutable::visitChildrenVirtual(SlotVisitor& visitor)382 {383 visitChildren(this, visitor);384 374 } 385 375 … … 597 587 #endif 598 588 599 void FunctionExecutable::visitChildrenVirtual(SlotVisitor& visitor)600 {601 visitChildren(this, visitor);602 }603 604 589 void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor) 605 590 { -
trunk/Source/JavaScriptCore/runtime/Executable.h
r95901 r96346 357 357 358 358 JSObject* compileInternal(ExecState*, ScopeChainNode*, JITCode::JITType); 359 virtual void visitChildrenVirtual(SlotVisitor&);360 359 static void visitChildren(JSCell*, SlotVisitor&); 361 360 void unlinkCalls(); … … 423 422 424 423 JSObject* compileInternal(ExecState*, ScopeChainNode*, JITCode::JITType); 425 virtual void visitChildrenVirtual(SlotVisitor&);426 424 static void visitChildren(JSCell*, SlotVisitor&); 427 425 void unlinkCalls(); … … 583 581 584 582 void discardCode(); 585 void visitChildrenVirtual(SlotVisitor&);586 583 static void visitChildren(JSCell*, SlotVisitor&); 587 584 static FunctionExecutable* fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, JSObject** exception); -
trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp
r95936 r96346 31 31 const ClassInfo GetterSetter::s_info = { "GetterSetter", 0, 0, 0, CREATE_METHOD_TABLE(GetterSetter) }; 32 32 33 void GetterSetter::visitChildrenVirtual(SlotVisitor& visitor)34 {35 visitChildren(this, visitor);36 }37 38 33 void GetterSetter::visitChildren(JSCell* cell, SlotVisitor& visitor) 39 34 { -
trunk/Source/JavaScriptCore/runtime/GetterSetter.h
r95849 r96346 54 54 } 55 55 56 virtual void visitChildrenVirtual(SlotVisitor&);57 56 static void visitChildren(JSCell*, SlotVisitor&); 58 57 -
trunk/Source/JavaScriptCore/runtime/JSActivation.cpp
r95936 r96346 64 64 } 65 65 66 void JSActivation::visitChildrenVirtual(SlotVisitor& visitor)67 {68 visitChildren(this, visitor);69 }70 71 66 void JSActivation::visitChildren(JSCell* cell, SlotVisitor& visitor) 72 67 { -
trunk/Source/JavaScriptCore/runtime/JSActivation.h
r95901 r96346 56 56 virtual ~JSActivation(); 57 57 58 virtual void visitChildrenVirtual(SlotVisitor&);59 58 static void visitChildren(JSCell*, SlotVisitor&); 60 59 -
trunk/Source/JavaScriptCore/runtime/JSArray.cpp
r95936 r96346 872 872 } 873 873 874 void JSArray::visitChildrenVirtual(SlotVisitor& visitor)875 {876 visitChildren(this, visitor);877 }878 879 874 void JSArray::visitChildren(JSCell* cell, SlotVisitor& visitor) 880 875 { -
trunk/Source/JavaScriptCore/runtime/JSArray.h
r95849 r96346 173 173 virtual bool deleteProperty(ExecState*, unsigned propertyName); 174 174 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 175 virtual void visitChildrenVirtual(SlotVisitor&);176 175 static void visitChildren(JSCell*, SlotVisitor&); 177 176 -
trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp
r95901 r96346 32 32 33 33 ASSERT_CLASS_FITS_IN_CELL(JSBoundFunction); 34 35 const ClassInfo JSBoundFunction::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSBoundFunction) }; 34 36 35 37 EncodedJSValue JSC_HOST_CALL boundFunctionCall(ExecState* exec) … … 141 143 } 142 144 143 void JSBoundFunction::visitChildrenVirtual(SlotVisitor& visitor)144 {145 visitChildren(this, visitor);146 }147 148 145 void JSBoundFunction::visitChildren(JSCell* cell, SlotVisitor& visitor) 149 146 { -
trunk/Source/JavaScriptCore/runtime/JSBoundFunction.h
r95901 r96346 55 55 } 56 56 57 static JS_EXPORTDATA const ClassInfo s_info; 58 57 59 protected: 58 const static unsigned StructureFlags = OverridesHasInstance | Base::StructureFlags;60 const static unsigned StructureFlags = OverridesHasInstance | OverridesVisitChildren | Base::StructureFlags; 59 61 60 virtual void visitChildrenVirtual(SlotVisitor&);61 62 static void visitChildren(JSCell*, SlotVisitor&); 62 63 -
trunk/Source/JavaScriptCore/runtime/JSCell.h
r96164 r96346 86 86 virtual JSObject* toObject(ExecState*, JSGlobalObject*) const; 87 87 88 virtual void visitChildrenVirtual(SlotVisitor&);89 88 static void visitChildren(JSCell*, SlotVisitor&); 90 89 91 90 // Object operations, with the toObject operation included. 92 91 const ClassInfo* classInfo() const; 92 const MethodTable* methodTable() const; 93 93 virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&); 94 94 virtual void put(ExecState*, unsigned propertyName, JSValue); … … 182 182 } 183 183 184 inline void JSCell::visitChildrenVirtual(SlotVisitor& visitor)185 {186 visitChildren(this, visitor);187 }188 189 184 inline void JSCell::visitChildren(JSCell* cell, SlotVisitor& visitor) 190 185 { -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r96164 r96346 152 152 } 153 153 154 void JSFunction::visitChildrenVirtual(SlotVisitor& visitor)155 {156 visitChildren(this, visitor);157 }158 159 154 void JSFunction::visitChildren(JSCell* cell, SlotVisitor& visitor) 160 155 { -
trunk/Source/JavaScriptCore/runtime/JSFunction.h
r96164 r96346 136 136 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode = ExcludeDontEnumProperties); 137 137 138 virtual void visitChildrenVirtual(SlotVisitor&);139 138 static void visitChildren(JSCell*, SlotVisitor&); 140 139 -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r95936 r96346 309 309 } 310 310 311 void JSGlobalObject::visitChildrenVirtual(SlotVisitor& visitor)312 {313 visitChildren(this, visitor);314 }315 316 311 void JSGlobalObject::visitChildren(JSCell* cell, SlotVisitor& visitor) 317 312 { -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r95849 r96346 176 176 virtual ~JSGlobalObject(); 177 177 178 virtual void visitChildrenVirtual(SlotVisitor&);179 178 static void visitChildren(JSCell*, SlotVisitor&); 180 179 -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r96164 r96346 67 67 } 68 68 } 69 }70 71 void JSObject::visitChildrenVirtual(SlotVisitor& visitor)72 {73 visitChildren(this, visitor);74 69 } 75 70 -
trunk/Source/JavaScriptCore/runtime/JSObject.h
r96143 r96346 80 80 typedef JSCell Base; 81 81 82 virtual void visitChildrenVirtual(SlotVisitor&);83 82 ALWAYS_INLINE void visitChildrenDirect(SlotVisitor&); 84 83 static void visitChildren(JSCell*, SlotVisitor&); 84 85 virtual UString className() const; 85 86 86 87 // The inline virtual destructor cannot be the first virtual function declared … … 93 94 94 95 Structure* inheritorID(JSGlobalData&); 95 96 virtual UString className() const;97 96 98 97 JSValue get(ExecState*, const Identifier& propertyName) const; … … 484 483 { 485 484 return classInfo()->isSubClassOf(info); 485 } 486 487 inline const MethodTable* JSCell::methodTable() const 488 { 489 return &classInfo()->methodTable; 486 490 } 487 491 -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp
r95936 r96346 93 93 } 94 94 95 void JSPropertyNameIterator::visitChildrenVirtual(SlotVisitor& visitor)96 {97 visitChildren(this, visitor);98 }99 100 95 void JSPropertyNameIterator::visitChildren(JSCell* cell, SlotVisitor& visitor) 101 96 { -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h
r95901 r96346 59 59 } 60 60 61 virtual void visitChildrenVirtual(SlotVisitor&);62 61 static void visitChildren(JSCell*, SlotVisitor&); 63 62 -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.cpp
r95901 r96346 32 32 namespace JSC { 33 33 ASSERT_CLASS_FITS_IN_CELL(JSStaticScopeObject); 34 35 void JSStaticScopeObject::visitChildrenVirtual(SlotVisitor& visitor)36 {37 visitChildren(this, visitor);38 }39 34 40 35 void JSStaticScopeObject::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.h
r95901 r96346 42 42 } 43 43 44 virtual void visitChildrenVirtual(SlotVisitor&);45 44 static void visitChildren(JSCell*, SlotVisitor&); 46 45 bool isDynamicScope(bool& requiresDynamicChecks) const; -
trunk/Source/JavaScriptCore/runtime/JSValue.h
r95902 r96346 55 55 struct ClassInfo; 56 56 struct Instruction; 57 struct MethodTable; 57 58 58 59 template <class T> class WriteBarrierBase; -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.cpp
r95849 r96346 27 27 ASSERT_CLASS_FITS_IN_CELL(JSWrapperObject); 28 28 29 void JSWrapperObject::visitChildrenVirtual(SlotVisitor& visitor) 29 JSWrapperObject::~JSWrapperObject() 30 30 { 31 visitChildren(this, visitor);32 31 } 33 32 -
trunk/Source/JavaScriptCore/runtime/JSWrapperObject.h
r95936 r96346 45 45 static const unsigned StructureFlags = OverridesVisitChildren | JSNonFinalObject::StructureFlags; 46 46 47 virtual void visitChildrenVirtual(SlotVisitor&);48 47 static void visitChildren(JSCell*, SlotVisitor&); 48 49 virtual ~JSWrapperObject(); 49 50 50 51 private: -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp
r96164 r96346 36 36 : InternalFunction(globalObject, structure) 37 37 { 38 }39 40 void NativeErrorConstructor::visitChildrenVirtual(SlotVisitor& visitor)41 {42 visitChildren(this, visitor);43 38 } 44 39 -
trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h
r96164 r96346 72 72 virtual CallType getCallDataVirtual(CallData&); 73 73 static CallType getCallData(JSCell*, CallData&); 74 virtual void visitChildrenVirtual(SlotVisitor&);75 74 static void visitChildren(JSCell*, SlotVisitor&); 76 75 -
trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp
r95936 r96346 77 77 RegExpObject::~RegExpObject() 78 78 { 79 }80 81 void RegExpObject::visitChildrenVirtual(SlotVisitor& visitor)82 {83 visitChildren(this, visitor);84 79 } 85 80 -
trunk/Source/JavaScriptCore/runtime/RegExpObject.h
r95936 r96346 82 82 static const unsigned StructureFlags = OverridesVisitChildren | OverridesGetOwnPropertySlot | Base::StructureFlags; 83 83 84 virtual void visitChildrenVirtual(SlotVisitor&);85 84 static void visitChildren(JSCell*, SlotVisitor&); 86 85 -
trunk/Source/JavaScriptCore/runtime/ScopeChain.cpp
r95936 r96346 29 29 30 30 namespace JSC { 31 32 ScopeChainNode::~ScopeChainNode() 33 { 34 } 31 35 32 36 #ifndef NDEBUG … … 68 72 } 69 73 70 void ScopeChainNode::visitChildrenVirtual(SlotVisitor& visitor)71 {72 visitChildren(this, visitor);73 }74 75 74 void ScopeChainNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 76 75 { -
trunk/Source/JavaScriptCore/runtime/ScopeChain.h
r95849 r96346 46 46 } 47 47 48 virtual ~ScopeChainNode(); 49 48 50 protected: 49 51 void finishCreation(JSGlobalData* globalData, JSGlobalObject* globalObject) … … 88 90 89 91 static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); } 90 virtual void visitChildrenVirtual(SlotVisitor&);91 92 static void visitChildren(JSCell*, SlotVisitor&); 92 93 static JS_EXPORTDATA const ClassInfo s_info; -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r95936 r96346 725 725 } 726 726 727 void Structure::visitChildrenVirtual(SlotVisitor& visitor)728 {729 visitChildren(this, visitor);730 }731 732 727 void Structure::visitChildren(JSCell* cell, SlotVisitor& visitor) 733 728 { -
trunk/Source/JavaScriptCore/runtime/Structure.h
r95901 r96346 131 131 JSValue prototypeForLookup(ExecState*) const; 132 132 StructureChain* prototypeChain(ExecState*) const; 133 void visitChildrenVirtual(SlotVisitor&);134 133 static void visitChildren(JSCell*, SlotVisitor&); 135 134 -
trunk/Source/JavaScriptCore/runtime/StructureChain.cpp
r95936 r96346 44 44 } 45 45 46 void StructureChain::visitChildrenVirtual(SlotVisitor& visitor)47 {48 visitChildren(this, visitor);49 }50 51 46 void StructureChain::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 47 { -
trunk/Source/JavaScriptCore/runtime/StructureChain.h
r95901 r96346 53 53 } 54 54 WriteBarrier<Structure>* head() { return m_vector.get(); } 55 void visitChildrenVirtual(SlotVisitor&);56 55 static void visitChildren(JSCell*, SlotVisitor&); 57 56 -
trunk/Source/JavaScriptGlue/ChangeLog
r96164 r96346 1 2011-09-29 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 De-virtualize JSCell::visitChildrenVirtual and remove all other visitChildrenVirtual methods 4 https://bugs.webkit.org/show_bug.cgi?id=68839 5 6 Reviewed by Geoffrey Garen. 7 8 Removed the remaining visitChildrenVirtual methods. This patch completes the process of 9 de-virtualizing visitChildren. 10 11 * UserObjectImp.cpp: 12 * UserObjectImp.h: 13 1 14 2011-09-27 Mark Hahnenberg <mhahnenberg@apple.com> 2 15 -
trunk/Source/JavaScriptGlue/UserObjectImp.cpp
r96164 r96346 411 411 } 412 412 413 void UserObjectImp::visitChildrenVirtual(SlotVisitor& visitor)414 {415 visitChildren(this, visitor);416 }417 418 413 void UserObjectImp::visitChildren(JSCell* cell, SlotVisitor& visitor) 419 414 { -
trunk/Source/JavaScriptGlue/UserObjectImp.h
r96164 r96346 64 64 virtual UString toString(ExecState *exec) const; 65 65 66 virtual void visitChildrenVirtual(SlotVisitor&);67 66 static void visitChildren(JSCell*, SlotVisitor&); 68 67 -
trunk/Source/WebCore/ChangeLog
r96345 r96346 1 2011-09-29 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 De-virtualize JSCell::visitChildrenVirtual and remove all other visitChildrenVirtual methods 4 https://bugs.webkit.org/show_bug.cgi?id=68839 5 6 Reviewed by Geoffrey Garen. 7 8 No new tests. 9 10 Removed the remaining visitChildrenVirtual methods. This patch completes the process of 11 de-virtualizing visitChildren. 12 13 * WebCore.exp.in: 14 * bindings/js/JSAttrCustom.cpp: 15 * bindings/js/JSAudioContextCustom.cpp: 16 * bindings/js/JSCSSRuleCustom.cpp: 17 * bindings/js/JSCSSStyleDeclarationCustom.cpp: 18 * bindings/js/JSCanvasRenderingContextCustom.cpp: 19 * bindings/js/JSDOMGlobalObject.cpp: 20 (WebCore::JSDOMGlobalObject::~JSDOMGlobalObject): 21 (WebCore::JSDOMGlobalObject::finishCreation): 22 * bindings/js/JSDOMGlobalObject.h: 23 * bindings/js/JSDOMWindowCustom.cpp: 24 * bindings/js/JSDOMWindowShell.cpp: 25 * bindings/js/JSDOMWindowShell.h: 26 * bindings/js/JSJavaScriptAudioNodeCustom.cpp: 27 * bindings/js/JSMessageChannelCustom.cpp: 28 * bindings/js/JSMessagePortCustom.cpp: 29 * bindings/js/JSNamedNodeMapCustom.cpp: 30 * bindings/js/JSNodeCustom.cpp: 31 * bindings/js/JSNodeFilterCustom.cpp: 32 * bindings/js/JSNodeIteratorCustom.cpp: 33 * bindings/js/JSSVGElementInstanceCustom.cpp: 34 * bindings/js/JSSharedWorkerCustom.cpp: 35 * bindings/js/JSStyleSheetCustom.cpp: 36 * bindings/js/JSTreeWalkerCustom.cpp: 37 * bindings/js/JSWebGLRenderingContextCustom.cpp: 38 * bindings/js/JSWorkerContextCustom.cpp: 39 * bindings/js/JSXMLHttpRequestCustom.cpp: 40 * bindings/js/JSXPathResultCustom.cpp: 41 * bindings/scripts/CodeGeneratorJS.pm: 42 (GenerateHeader): 43 (GenerateImplementation): 44 * bridge/qt/qt_instance.cpp: 45 * bridge/qt/qt_runtime.cpp: 46 * bridge/qt/qt_runtime.h: 47 1 48 2011-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 2 49 -
trunk/Source/WebCore/WebCore.exp.in
r96205 r96346 815 815 __ZN7WebCore6Editor7commandERKN3WTF6StringE 816 816 __ZN7WebCore6Editor7outdentEv 817 __ZN7WebCore6JSNode20visitChildrenVirtualERN3JSC11SlotVisitorE818 817 __ZN7WebCore6JSNode3putEPN3JSC9ExecStateERKNS1_10IdentifierENS1_7JSValueERNS1_15PutPropertySlotE 819 818 __ZN7WebCore6JSNode6s_infoE -
trunk/Source/WebCore/bindings/js/JSAttrCustom.cpp
r95849 r96346 40 40 using namespace HTMLNames; 41 41 42 void JSAttr::visitChildrenVirtual(SlotVisitor& visitor)43 {44 visitChildren(this, visitor);45 }46 47 42 void JSAttr::visitChildren(JSCell* cell, SlotVisitor& visitor) 48 43 { -
trunk/Source/WebCore/bindings/js/JSAudioContextCustom.cpp
r95901 r96346 39 39 40 40 namespace WebCore { 41 42 void JSAudioContext::visitChildrenVirtual(SlotVisitor& visitor)43 {44 visitChildren(this, visitor);45 }46 41 47 42 void JSAudioContext::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp
r95849 r96346 48 48 49 49 namespace WebCore { 50 51 void JSCSSRule::visitChildrenVirtual(SlotVisitor& visitor)52 {53 visitChildren(this, visitor);54 }55 50 56 51 void JSCSSRule::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
r95849 r96346 43 43 44 44 namespace WebCore { 45 46 void JSCSSStyleDeclaration::visitChildrenVirtual(SlotVisitor& visitor)47 {48 visitChildren(this, visitor);49 }50 45 51 46 void JSCSSStyleDeclaration::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp
r95901 r96346 40 40 namespace WebCore { 41 41 42 void JSCanvasRenderingContext::visitChildrenVirtual(SlotVisitor& visitor)43 {44 visitChildren(this, visitor);45 }46 47 42 void JSCanvasRenderingContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 48 43 { -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp
r95936 r96346 50 50 } 51 51 52 JSDOMGlobalObject::~JSDOMGlobalObject() 53 { 54 } 55 52 56 void JSDOMGlobalObject::finishCreation(JSGlobalData& globalData, JSObject* thisValue) 53 57 { 54 58 Base::finishCreation(globalData, thisValue); 55 59 ASSERT(inherits(&s_info)); 56 }57 58 void JSDOMGlobalObject::visitChildrenVirtual(JSC::SlotVisitor& visitor)59 {60 visitChildren(this, visitor);61 60 } 62 61 -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h
r95849 r96346 48 48 49 49 JSDOMGlobalObject(JSC::JSGlobalData&, JSC::Structure*, PassRefPtr<DOMWrapperWorld>); 50 virtual ~JSDOMGlobalObject(); 50 51 void finishCreation(JSC::JSGlobalData&, JSC::JSObject* thisValue); 51 52 … … 65 66 JSObject* injectedScript() const; 66 67 67 virtual void visitChildrenVirtual(JSC::SlotVisitor&);68 68 static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&); 69 69 -
trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
r95849 r96346 78 78 namespace WebCore { 79 79 80 void JSDOMWindow::visitChildrenVirtual(SlotVisitor& visitor)81 {82 visitChildren(this, visitor);83 }84 85 80 void JSDOMWindow::visitChildren(JSCell* cell, SlotVisitor& visitor) 86 81 { -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp
r95936 r96346 84 84 // ---- 85 85 86 void JSDOMWindowShell::visitChildrenVirtual(JSC::SlotVisitor& visitor)87 {88 visitChildren(this, visitor);89 }90 91 86 void JSDOMWindowShell::visitChildren(JSCell* cell, SlotVisitor& visitor) 92 87 { -
trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h
r95901 r96346 78 78 static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesVisitChildren | JSC::OverridesGetPropertyNames | Base::StructureFlags; 79 79 80 virtual void visitChildrenVirtual(JSC::SlotVisitor&);81 80 static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&); 82 81 virtual JSC::UString className() const; -
trunk/Source/WebCore/bindings/js/JSJavaScriptAudioNodeCustom.cpp
r95901 r96346 35 35 namespace WebCore { 36 36 37 void JSJavaScriptAudioNode::visitChildrenVirtual(SlotVisitor& visitor)38 {39 visitChildren(this, visitor);40 }41 42 37 void JSJavaScriptAudioNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 43 38 { -
trunk/Source/WebCore/bindings/js/JSMessageChannelCustom.cpp
r95849 r96346 34 34 namespace WebCore { 35 35 36 void JSMessageChannel::visitChildrenVirtual(SlotVisitor& visitor)37 {38 visitChildren(this, visitor);39 }40 41 36 void JSMessageChannel::visitChildren(JSCell* cell, SlotVisitor& visitor) 42 37 { -
trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
r95849 r96346 42 42 43 43 namespace WebCore { 44 45 void JSMessagePort::visitChildrenVirtual(SlotVisitor& visitor)46 {47 visitChildren(this, visitor);48 }49 44 50 45 void JSMessagePort::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp
r95849 r96346 36 36 namespace WebCore { 37 37 38 void JSNamedNodeMap::visitChildrenVirtual(SlotVisitor& visitor)39 {40 visitChildren(this, visitor);41 }42 43 38 bool JSNamedNodeMap::canGetItemsForName(ExecState*, NamedNodeMap* impl, const Identifier& propertyName) 44 39 { -
trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp
r95849 r96346 193 193 } 194 194 195 void JSNode::visitChildrenVirtual(SlotVisitor& visitor)196 {197 visitChildren(this, visitor);198 }199 200 195 void JSNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 201 196 { -
trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
r95849 r96346 37 37 namespace WebCore { 38 38 39 void JSNodeFilter::visitChildrenVirtual(SlotVisitor& visitor)40 {41 visitChildren(this, visitor);42 }43 44 39 void JSNodeFilter::visitChildren(JSCell* cell, SlotVisitor& visitor) 45 40 { -
trunk/Source/WebCore/bindings/js/JSNodeIteratorCustom.cpp
r95849 r96346 30 30 namespace WebCore { 31 31 32 void JSNodeIterator::visitChildrenVirtual(SlotVisitor& visitor)33 {34 visitChildren(this, visitor);35 }36 37 32 void JSNodeIterator::visitChildren(JSCell* cell, SlotVisitor& visitor) 38 33 { -
trunk/Source/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp
r95901 r96346 36 36 namespace WebCore { 37 37 38 void JSSVGElementInstance::visitChildrenVirtual(JSC::SlotVisitor& visitor)39 {40 visitChildren(this, visitor);41 }42 43 38 void JSSVGElementInstance::visitChildren(JSC::JSCell* cell, JSC::SlotVisitor& visitor) 44 39 { -
trunk/Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp
r95901 r96346 44 44 namespace WebCore { 45 45 46 void JSSharedWorker::visitChildrenVirtual(SlotVisitor& visitor)47 {48 visitChildren(this, visitor);49 }50 51 46 void JSSharedWorker::visitChildren(JSCell* cell, SlotVisitor& visitor) 52 47 { -
trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp
r95849 r96346 36 36 namespace WebCore { 37 37 38 void JSStyleSheet::visitChildrenVirtual(SlotVisitor& visitor)39 {40 visitChildren(this, visitor);41 }42 43 38 void JSStyleSheet::visitChildren(JSCell* cell, SlotVisitor& visitor) 44 39 { -
trunk/Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp
r95849 r96346 30 30 namespace WebCore { 31 31 32 void JSTreeWalker::visitChildrenVirtual(SlotVisitor& visitor)33 {34 visitChildren(this, visitor);35 }36 37 32 void JSTreeWalker::visitChildren(JSCell* cell, SlotVisitor& visitor) 38 33 { -
trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
r95901 r96346 193 193 } 194 194 195 void JSWebGLRenderingContext::visitChildrenVirtual(SlotVisitor& visitor)196 {197 visitChildren(this, visitor);198 }199 200 195 void JSWebGLRenderingContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 201 196 { -
trunk/Source/WebCore/bindings/js/JSWorkerContextCustom.cpp
r95849 r96346 53 53 54 54 namespace WebCore { 55 56 void JSWorkerContext::visitChildrenVirtual(SlotVisitor& visitor)57 {58 visitChildren(this, visitor);59 }60 55 61 56 void JSWorkerContext::visitChildren(JSCell* cell, SlotVisitor& visitor) -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
r95901 r96346 55 55 namespace WebCore { 56 56 57 void JSXMLHttpRequest::visitChildrenVirtual(SlotVisitor& visitor)58 {59 visitChildren(this, visitor);60 }61 62 57 void JSXMLHttpRequest::visitChildren(JSCell* cell, SlotVisitor& visitor) 63 58 { -
trunk/Source/WebCore/bindings/js/JSXPathResultCustom.cpp
r95901 r96346 38 38 namespace WebCore { 39 39 40 void JSXPathResult::visitChildrenVirtual(SlotVisitor& visitor)41 {42 visitChildren(this, visitor);43 }44 45 40 void JSXPathResult::visitChildren(JSCell* cell, SlotVisitor& visitor) 46 41 { -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r96164 r96346 879 879 # visit function 880 880 if ($needsMarkChildren) { 881 push(@headerContent, " virtual void visitChildrenVirtual(JSC::SlotVisitor&);\n");882 881 push(@headerContent, " static void visitChildren(JSCell*, JSC::SlotVisitor&);\n\n"); 883 882 $structureFlags{"JSC::OverridesVisitChildren"} = 1; … … 2203 2202 2204 2203 if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) { 2205 push(@implContent, "void ${className}::visitChildrenVirtual(SlotVisitor& visitor)\n");2206 push(@implContent, "{\n");2207 push(@implContent, " visitChildren(this, visitor);\n");2208 push(@implContent, "}\n\n");2209 2210 2204 push(@implContent, "void ${className}::visitChildren(JSCell* cell, SlotVisitor& visitor)\n"); 2211 2205 push(@implContent, "{\n"); -
trunk/Source/WebCore/bridge/qt/qt_instance.cpp
r95936 r96346 63 63 static const ClassInfo s_info; 64 64 65 virtual void visitChildrenVirtual(SlotVisitor& visitor)66 {67 visitChildren(this, visitor);68 }69 70 65 static void visitChildren(JSCell* cell, SlotVisitor& visitor) 71 66 { -
trunk/Source/WebCore/bridge/qt/qt_runtime.cpp
r96164 r96346 1440 1440 } 1441 1441 1442 void QtRuntimeMetaMethod::visitChildrenVirtual(SlotVisitor& visitor)1443 {1444 visitChildren(this, visitor);1445 }1446 1447 1442 void QtRuntimeMetaMethod::visitChildren(JSCell* cell, SlotVisitor& visitor) 1448 1443 { -
trunk/Source/WebCore/bridge/qt/qt_runtime.h
r96164 r96346 169 169 virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 170 170 171 virtual void visitChildrenVirtual(SlotVisitor&);172 171 static void visitChildren(JSCell*, SlotVisitor&); 173 172
Note: See TracChangeset
for help on using the changeset viewer.