Skip to content
  • mhahnenberg@apple.com's avatar
    De-virtualize supportsProfiling, supportsRichSourceInfo, shouldInterruptScript in JSGlobalObject · bc3cc922
    mhahnenberg@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=72035
    
    Reviewed by Geoffrey Garen.
    
    Source/JavaScriptCore: 
    
    De-virtualized the methods through the use of a new method table just for JSGlobalObject and subclasses.
    
    * JavaScriptCore.exp:
    * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
    * bytecompiler/BytecodeGenerator.cpp: Changed call sites to use the new GlobalObjectMethodTable.
    (JSC::BytecodeGenerator::BytecodeGenerator):
    * interpreter/Interpreter.cpp: Ditto.
    (JSC::Interpreter::execute):
    * runtime/JSGlobalObject.cpp: Added a static const GlobalObjectMethodTable with the correct function pointers.
    * runtime/JSGlobalObject.h: Added a field in JSGlobalObject to keep track of the current method table.
    (JSC::JSGlobalObject::JSGlobalObject):
    (JSC::JSGlobalObject::globalObjectMethodTable): The new struct to contain the function pointers.
    (JSC::JSGlobalObject::supportsProfiling): Made static to put in the method table.
    (JSC::JSGlobalObject::supportsRichSourceInfo): Ditto.
    (JSC::JSGlobalObject::shouldInterruptScript): Ditto.
    * runtime/TimeoutChecker.cpp: Changed call sites to use the new GlobalObjectMethodTable for lookup.
    (JSC::TimeoutChecker::didTimeOut):
    
    Source/WebCore: 
    
    No new tests.
    
    * bindings/js/JSDOMGlobalObject.cpp: Changed constructor to support passing new GlobalObjectMethodTable pointer to parent class.
    (WebCore::JSDOMGlobalObject::JSDOMGlobalObject):
    * bindings/js/JSDOMGlobalObject.h:
    * bindings/js/JSDOMWindowBase.cpp: Added static const GlobalObjectMethodTable and filled it in with the proper function pointers.
    (WebCore::JSDOMWindowBase::JSDOMWindowBase):
    (WebCore::JSDOMWindowBase::supportsProfiling): Changed to static to put in the method table.
    (WebCore::JSDOMWindowBase::supportsRichSourceInfo): Ditto.
    (WebCore::JSDOMWindowBase::shouldInterruptScript): Ditto.
    * bindings/js/JSDOMWindowBase.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@99997 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    bc3cc922