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/runtime/WeakGCMap.h

    r113508 r115545  
    118118    }
    119119
    120     AddResult add(JSGlobalData& globalData, const KeyType& key, ExternalType value)
     120    AddResult add(JSGlobalData&, const KeyType& key, ExternalType value)
    121121    {
    122122        typename MapType::AddResult result = m_map.add(key, 0);
    123123        if (result.isNewEntry)
    124             result.iterator->second = globalData.heap.weakSet()->allocate(value, this, FinalizerCallback::finalizerContextFor(key));
     124            result.iterator->second = WeakSet::allocate(value, this, FinalizerCallback::finalizerContextFor(key));
    125125
    126126        // WeakGCMap exposes a different iterator, so we need to wrap it and create our own AddResult.
     
    128128    }
    129129
    130     void set(JSGlobalData& globalData, const KeyType& key, ExternalType value)
     130    void set(JSGlobalData&, const KeyType& key, ExternalType value)
    131131    {
    132132        typename MapType::AddResult result = m_map.add(key, 0);
    133133        if (!result.isNewEntry)
    134134            WeakSet::deallocate(result.iterator->second);
    135         result.iterator->second = globalData.heap.weakSet()->allocate(value, this, FinalizerCallback::finalizerContextFor(key));
     135        result.iterator->second = WeakSet::allocate(value, this, FinalizerCallback::finalizerContextFor(key));
    136136    }
    137137
Note: See TracChangeset for help on using the changeset viewer.