Ignore:
Timestamp:
Sep 22, 2015, 5:21:31 AM (10 years ago)
Author:
[email protected]
Message:

Unreviewed, rolling out r189616.
https://bugs.webkit.org/show_bug.cgi?id=149456

suspected cause of multiple regressions (Requested by kling on
#webkit).

Reverted changeset:

"[JSC] Weak should only accept cell pointees."
https://bugs.webkit.org/show_bug.cgi?id=148955
http://trac.webkit.org/changeset/189616

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSAPIWrapperObject.mm

    r189616 r190113  
    3434#if JSC_OBJC_API_ENABLED
    3535
    36 class JSAPIWrapperObjectHandleOwner final : public JSC::WeakHandleOwner {
     36class JSAPIWrapperObjectHandleOwner : public JSC::WeakHandleOwner {
    3737public:
    38     void finalize(JSC::JSCell*&, void*) override;
    39     bool isReachableFromOpaqueRoots(JSC::JSCell&, void* context, JSC::SlotVisitor&) override;
     38    virtual void finalize(JSC::Handle<JSC::Unknown>, void*) override;
     39    virtual bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&) override;
    4040};
    4141
     
    4646}
    4747
    48 void JSAPIWrapperObjectHandleOwner::finalize(JSC::JSCell*& cell, void*)
     48void JSAPIWrapperObjectHandleOwner::finalize(JSC::Handle<JSC::Unknown> handle, void*)
    4949{
    50     auto& wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject&>(*cell);
    51     if (!wrapperObject.wrappedObject())
     50    JSC::JSAPIWrapperObject* wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject*>(handle.get().asCell());
     51    if (!wrapperObject->wrappedObject())
    5252        return;
    5353
    54     JSC::Heap::heap(&wrapperObject)->releaseSoon(adoptNS(static_cast<id>(wrapperObject.wrappedObject())));
    55     JSC::WeakSet::deallocate(JSC::WeakImpl::asWeakImpl(&cell));
     54    JSC::Heap::heap(wrapperObject)->releaseSoon(adoptNS(static_cast<id>(wrapperObject->wrappedObject())));
     55    JSC::WeakSet::deallocate(JSC::WeakImpl::asWeakImpl(handle.slot()));
    5656}
    5757
    58 bool JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots(JSC::JSCell& cell, void*, JSC::SlotVisitor& visitor)
     58bool JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, JSC::SlotVisitor& visitor)
    5959{
    60     JSC::JSAPIWrapperObject& wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject&>(cell);
     60    JSC::JSAPIWrapperObject* wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject*>(handle.get().asCell());
    6161    // We use the JSGlobalObject when processing weak handles to prevent the situation where using
    6262    // the same Objective-C object in multiple global objects keeps all of the global objects alive.
    63     if (!wrapperObject.wrappedObject())
     63    if (!wrapperObject->wrappedObject())
    6464        return false;
    65     return JSC::Heap::isMarked(wrapperObject.globalObject()) && visitor.containsOpaqueRoot(wrapperObject.wrappedObject());
     65    return JSC::Heap::isMarked(wrapperObject->structure()->globalObject()) && visitor.containsOpaqueRoot(wrapperObject->wrappedObject());
    6666}
    6767
     
    8787{
    8888    Base::finishCreation(vm);
    89     WeakSet::allocate(*this, jsAPIWrapperObjectHandleOwner(), 0); // Balanced in JSAPIWrapperObjectHandleOwner::finalize.
     89    WeakSet::allocate(this, jsAPIWrapperObjectHandleOwner(), 0); // Balanced in JSAPIWrapperObjectHandleOwner::finalize.
    9090}
    9191   
Note: See TracChangeset for help on using the changeset viewer.