[JSC] Implement ArrayBuffer transfer
https://bugs.webkit.org/show_bug.cgi?id=73493.
Implement ArrayBuffer transfer, per Khronos spec:  http://www.khronos.org/registry/typedarray/specs/latest/#9.
This brings parity with V8 implementation of transferable typed arrays.

Reviewed by Oliver Hunt.

Source/JavaScriptCore:

* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Extra export.
* wtf/ArrayBuffer.h:
(ArrayBuffer): Added extra export.

Source/WebCore:

Covered by existing tests.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::handlePostMessage):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::handleInitMessageEvent):
* bindings/js/JSMessagePortCustom.cpp:
(WebCore::fillMessagePortArray):
* bindings/js/JSMessagePortCustom.h:
(WebCore):
(WebCore::handlePostMessage):
* bindings/js/ScriptValue.cpp:
(WebCore::ScriptValue::serialize):
* bindings/js/SerializedScriptValue.cpp:
(WebCore):
(WebCore::CloneSerializer::serialize):
(CloneSerializer):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::fillTransferMap):
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::deserialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readTerminal):
(CloneDeserializer):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::deserialize):
* bindings/js/SerializedScriptValue.h:
(WebCore):
(SerializedScriptValue):

LayoutTests:

* fast/canvas/webgl/arraybuffer-transfer-of-control-expected.txt:
* fast/canvas/webgl/script-tests/arraybuffer-transfer-of-control.js: Added tests for Uint8ClampedArray
* fast/dom/Window/window-postmessage-args-expected.txt:
* platform/gtk/Skipped:
* platform/mac/Skipped:
* platform/qt/Skipped:
* platform/win/Skipped:
* platform/wincairo/Skipped:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@109196 268f45cc-cd09-0410-ab3c-d52691b4dbfc
22 files changed