Changeset 190113 in webkit for trunk/Source/JavaScriptCore/API/JSAPIWrapperObject.mm
- Timestamp:
- Sep 22, 2015, 5:21:31 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSAPIWrapperObject.mm
r189616 r190113 34 34 #if JSC_OBJC_API_ENABLED 35 35 36 class JSAPIWrapperObjectHandleOwner final: public JSC::WeakHandleOwner {36 class JSAPIWrapperObjectHandleOwner : public JSC::WeakHandleOwner { 37 37 public: 38 v oid 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; 40 40 }; 41 41 … … 46 46 } 47 47 48 void JSAPIWrapperObjectHandleOwner::finalize(JSC:: JSCell*& cell, void*)48 void JSAPIWrapperObjectHandleOwner::finalize(JSC::Handle<JSC::Unknown> handle, void*) 49 49 { 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()) 52 52 return; 53 53 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())); 56 56 } 57 57 58 bool JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots(JSC:: JSCell& cell, void*, JSC::SlotVisitor& visitor)58 bool JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, JSC::SlotVisitor& visitor) 59 59 { 60 JSC::JSAPIWrapperObject & wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject&>(cell);60 JSC::JSAPIWrapperObject* wrapperObject = JSC::jsCast<JSC::JSAPIWrapperObject*>(handle.get().asCell()); 61 61 // We use the JSGlobalObject when processing weak handles to prevent the situation where using 62 62 // the same Objective-C object in multiple global objects keeps all of the global objects alive. 63 if (!wrapperObject .wrappedObject())63 if (!wrapperObject->wrappedObject()) 64 64 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()); 66 66 } 67 67 … … 87 87 { 88 88 Base::finishCreation(vm); 89 WeakSet::allocate( *this, jsAPIWrapperObjectHandleOwner(), 0); // Balanced in JSAPIWrapperObjectHandleOwner::finalize.89 WeakSet::allocate(this, jsAPIWrapperObjectHandleOwner(), 0); // Balanced in JSAPIWrapperObjectHandleOwner::finalize. 90 90 } 91 91
Note:
See TracChangeset
for help on using the changeset viewer.