Changeset 89236 in webkit
- Timestamp:
- Jun 20, 2011 2:36:13 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r89235 r89236 1 2011-06-19 Mads Ager <ager@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 [V8] Fix WebGL bindings for subarrays 6 https://bugs.webkit.org/show_bug.cgi?id=62864 7 8 Mark WebGL subarrays as independent of other DOM objects in the 9 V8 bindings. This allows us to clean them up independently which 10 greatly improves performance. 11 12 * bindings/v8/V8Proxy.h: 13 (WebCore::toV8Independent): 14 * bindings/v8/custom/V8ArrayBufferViewCustom.h: 15 (WebCore::constructWebGLArrayWithArrayBufferArgument): 16 (WebCore::constructWebGLArray): 17 1 18 2011-06-20 Yuta Kitamura <yutak@chromium.org> 2 19 -
trunk/Source/WebCore/bindings/v8/V8Proxy.h
r88100 r89236 413 413 } 414 414 415 template <class T> inline v8::Handle<v8::Object> toV8(PassRefPtr<T> object, v8::Local<v8::Object> holder) 415 enum IndependentMode { 416 MarkIndependent, 417 DoNotMarkIndependent 418 }; 419 420 template <class T> inline v8::Handle<v8::Object> toV8(PassRefPtr<T> object, v8::Local<v8::Object> holder, IndependentMode independent = DoNotMarkIndependent) 416 421 { 417 422 object->ref(); 418 V8DOMWrapper::setJSWrapperForDOMObject(object.get(), v8::Persistent<v8::Object>::New(holder)); 423 v8::Persistent<v8::Object> handle = v8::Persistent<v8::Object>::New(holder); 424 if (independent == MarkIndependent) 425 handle.MarkIndependent(); 426 V8DOMWrapper::setJSWrapperForDOMObject(object.get(), handle); 419 427 return holder; 420 428 } -
trunk/Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.h
r87837 r89236 73 73 if (hasIndexer) 74 74 args.Holder()->SetIndexedPropertiesToExternalArrayData(array.get()->baseAddress(), arrayType, array.get()->length()); 75 return toV8(array.release(), args.Holder() );75 return toV8(array.release(), args.Holder(), MarkIndependent); 76 76 } 77 77 … … 99 99 // object. Not only is there no point from a performance 100 100 // perspective, but doing so causes errors in the subset() case. 101 return toV8(array.release(), args.Holder() );101 return toV8(array.release(), args.Holder(), MarkIndependent); 102 102 } 103 103 … … 158 158 V8DOMWrapper::setDOMWrapper(args.Holder(), type, array.get()); 159 159 args.Holder()->SetIndexedPropertiesToExternalArrayData(array.get()->baseAddress(), arrayType, array.get()->length()); 160 return toV8(array.release(), args.Holder() );160 return toV8(array.release(), args.Holder(), MarkIndependent); 161 161 } 162 162
Note: See TracChangeset
for help on using the changeset viewer.