Ignore:
Timestamp:
Apr 27, 2012, 10:57:46 PM (13 years ago)
Author:
[email protected]
Message:

Made WeakSet::allocate() static and removed its JSGlobalData argument
https://bugs.webkit.org/show_bug.cgi?id=85128

Reviewed by Anders Carlsson.

../JavaScriptCore:

This is a step toward faster finalization.

WeakSet::allocate() now deduces which WeakSet to allocate from based on
its JSCell* argument. (Currently, there's only one WeakSet, but soon
there will be many.)

This was a global replace of "globalData.heap.weakSet()->allocate" with
"WeakSet::allocate", plus by-hand removal of the JSGlobalData argument.

  • heap/WeakSetInlines.h: Copied from Source/JavaScriptCore/heap/WeakSet.h.

I had to split out WeakSet::allocate() in to a separate header to avoid
a cycle.

(JSC::WeakSet::allocate): We can mask the pointer we're passed to
figure out where to allocate our WeakImpl. (Soon, we'll use this to
associate the WeakImpl with the GC block it references.)

../WebCore:

Mechanically removed JSGlobalData arguments from PassWeak<T> and Weak<T> allocation.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::jsStringSlowCase):

  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::setWrapper):

  • bindings/js/JSNodeFilterCondition.cpp:

(WebCore::JSNodeFilterCondition::JSNodeFilterCondition):

  • bindings/js/ScriptWrappable.h:

(WebCore::ScriptWrappable::setWrapper):

  • bridge/jsc/BridgeJSC.cpp:

(JSC::Bindings::Instance::createRuntimeObject):

  • bridge/qt/qt_runtime.cpp:

(JSC::Bindings::QtRuntimeMethod::finishCreation):

  • bridge/runtime_root.cpp:

(JSC::Bindings::RootObject::addRuntimeObject):

../WebKit2:

Mechanically removed JSGlobalData arguments from PassWeak<T> and Weak<T> allocation.

  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:

(WebKit::NPRuntimeObjectMap::getOrCreateJSObject):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/heap/Weak.h

    r115534 r115545  
    2828
    2929#include <wtf/Assertions.h>
    30 #include "JSGlobalData.h"
    3130#include "PassWeak.h"
     31#include "WeakSetInlines.h"
    3232
    3333namespace JSC {
     
    4141    Weak();
    4242    Weak(std::nullptr_t);
    43     Weak(JSGlobalData&, GetType, WeakHandleOwner* = 0, void* context = 0);
     43    Weak(GetType, WeakHandleOwner* = 0, void* context = 0);
    4444
    4545    enum HashTableDeletedValueTag { HashTableDeletedValue };
     
    7979}
    8080
    81 template<typename T> inline Weak<T>::Weak(JSGlobalData& globalData, typename Weak<T>::GetType getType, WeakHandleOwner* weakOwner, void* context)
    82     : m_impl(getType ? globalData.heap.weakSet()->allocate(getType, weakOwner, context) : 0)
     81template<typename T> inline Weak<T>::Weak(typename Weak<T>::GetType getType, WeakHandleOwner* weakOwner, void* context)
     82    : m_impl(getType ? WeakSet::allocate(getType, weakOwner, context) : 0)
    8383{
    8484}
Note: See TracChangeset for help on using the changeset viewer.