RESOLVED FIXED 93342
[V8] Remove a bunch of Persistent::New()s on setJSWrapperForXXXObject()
https://bugs.webkit.org/show_bug.cgi?id=93342
Summary [V8] Remove a bunch of Persistent::New()s on setJSWrapperForXXXObject()
Kentaro Hara
Reported 2012-08-07 00:03:59 PDT
There are a lot of custom bindings like this: V8DOMWrapper::setJSWrapperForDOMObject(impl.release(), v8::Persistent<v8::Object>::New(args.Holder())); Manually written Persistent::New() is error-prone. We can remove the Persistent::New() by allocating the Persistent handle inside setJSWrapperForDOMObject().
Attachments
Patch (41.99 KB, patch)
2012-08-07 00:07 PDT, Kentaro Hara
no flags
Kentaro Hara
Comment 1 2012-08-07 00:07:58 PDT
Adam Barth
Comment 2 2012-08-07 00:12:05 PDT
Comment on attachment 156883 [details] Patch Ok. Are you sure you got them all? If we missed one, we'll create a leak.
Kentaro Hara
Comment 3 2012-08-07 00:17:29 PDT
(In reply to comment #2) > (From update of attachment 156883 [details]) > Ok. Are you sure you got them all? If we missed one, we'll create a leak. Looks OK. Let me land the patch tomorrow. $ grep -r setJSWrapper WebCore/bindings/v8/* | grep Persistent V8DOMWrapper.cpp:v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForDOMNode(PassRefPtr<Node> node, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate) V8DOMWrapper.cpp:v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForActiveDOMNode(PassRefPtr<Node> node, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate) V8DOMWrapper.h: static v8::Persistent<v8::Object> setJSWrapperForDOMObject(PassRefPtr<T>, v8::Handle<v8::Object>, v8::Isolate* = 0); V8DOMWrapper.h: static v8::Persistent<v8::Object> setJSWrapperForActiveDOMObject(PassRefPtr<T>, v8::Handle<v8::Object>, v8::Isolate* = 0); V8DOMWrapper.h: static v8::Persistent<v8::Object> setJSWrapperForDOMNode(PassRefPtr<Node>, v8::Handle<v8::Object>, v8::Isolate* = 0); V8DOMWrapper.h: static v8::Persistent<v8::Object> setJSWrapperForActiveDOMNode(PassRefPtr<Node>, v8::Handle<v8::Object>, v8::Isolate* = 0); V8DOMWrapper.h: v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForDOMObject(PassRefPtr<T> object, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate) V8DOMWrapper.h: v8::Persistent<v8::Object> V8DOMWrapper::setJSWrapperForActiveDOMObject(PassRefPtr<T> object, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate) custom/V8ArrayBufferViewCustom.h: v8::Persistent<v8::Object> wrapperHandle = V8DOMWrapper::setJSWrapperForDOMObject(array.release(), wrapper); custom/V8ArrayBufferViewCustom.h: v8::Persistent<v8::Object> wrapperHandle = V8DOMWrapper::setJSWrapperForDOMObject(array.release(), wrapper);
WebKit Review Bot
Comment 4 2012-08-07 19:09:20 PDT
Comment on attachment 156883 [details] Patch Clearing flags on attachment: 156883 Committed r124968: <http://trac.webkit.org/changeset/124968>
WebKit Review Bot
Comment 5 2012-08-07 19:09:24 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.