-
commit-queue@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=90838 Patch by Arnaud Renevier <a.renevier@sisa.samsung.com> on 2012-07-26 Reviewed by Kenneth Russell. PerformanceTests: * Bindings/typed-array-construct-from-same-type.html: Added. * Bindings/typed-array-construct-from-typed.html: Added. Source/WebCore: When constructing a typed array from an array like element, try to determine if the argument is a typed array. If so, cast the argument to a typed array, and read each element with .item() method. That avoid reading the value as a JSValue, and speedups construction by approximatively 3x (even 30x if TypedArrays are both the same type). In order to achieve that, we use virtual getType method. We can use this information to cast the TypedArray to the actual type, and then read the values from the source. Introduce constructArrayBufferViewWithTypedArrayArgument template function which returns a new typed array if first argument is a typed array, or 0 otherwise. This patch also replaces previous is<Type>Array() calls with new getType method. * bindings/js/JSArrayBufferViewHelper.h: (WebCore::constructArrayBufferViewWithTypedArrayArgument): (WebCore): (WebCore::constructArrayBufferView): * bindings/v8/SerializedScriptValue.cpp: * html/canvas/DataView.h: (DataView): (WebCore::DataView::getType): * html/canvas/WebGLRenderingContext.cpp: (WebCore): (WebCore::WebGLRenderingContext::readPixels): (WebCore::WebGLRenderingContext::validateTexFuncData): * page/Crypto.cpp: Source/WTF: Introduce virtual method getType on ArrayBufferView. It returns the actual type of the view. This method replaces previous is<Type>Array() methods. * wtf/ArrayBufferView.h: * wtf/Float32Array.h: (WTF::Float32Array::getType): (Float32Array): * wtf/Float64Array.h: (WTF::Float64Array::getType): (Float64Array): * wtf/Int16Array.h: (WTF::Int16Array::getType): (Int16Array): * wtf/Int32Array.h: (WTF::Int32Array::getType): (Int32Array): * wtf/Int8Array.h: (WTF::Int8Array::getType): (Int8Array): * wtf/IntegralTypedArrayBase.h: * wtf/TypedArrayBase.h: (TypedArrayBase): (WTF::TypedArrayBase::item): * wtf/Uint16Array.h: (WTF::Uint16Array::getType): (Uint16Array): * wtf/Uint32Array.h: (WTF::Uint32Array::getType): (Uint32Array): * wtf/Uint8Array.h: (WTF::Uint8Array::getType): (Uint8Array): * wtf/Uint8ClampedArray.h: (WTF::Uint8ClampedArray::getType): (Uint8ClampedArray): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123819 268f45cc-cd09-0410-ab3c-d52691b4dbfc
d8d6c696