2011-01-04 Xianzhu Wang <wangxianzhu@google.com>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Jan 2011 20:43:52 +0000 (20:43 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Jan 2011 20:43:52 +0000 (20:43 +0000)
        Reviewed by Darin Adler.

        Let DataView.getInt8() and DataView.setInt8() use int8_t instead of
        ambiguous 'char' to fix fast/canvas/webgl/data-view-test.html failure
        on ARM.
        https://bugs.webkit.org/show_bug.cgi?id=51861

        By the way, changed other getIntXX() and setIntXX() methods to use
        more precise integer types.

        * bindings/js/JSDataViewCustom.cpp:
        (WebCore::setDataViewMember):
        * bindings/v8/custom/V8DataViewCustom.cpp:
        (WebCore::V8DataView::getInt8Callback):
        (WebCore::V8DataView::setInt8Callback):
        * html/canvas/DataView.cpp:
        (WebCore::DataView::getInt8):
        (WebCore::DataView::setInt8):
        * html/canvas/DataView.h:
        * html/canvas/DataView.idl:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@74994 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bindings/js/JSDataViewCustom.cpp
WebCore/bindings/v8/custom/V8DataViewCustom.cpp
WebCore/html/canvas/DataView.cpp
WebCore/html/canvas/DataView.h
WebCore/html/canvas/DataView.idl

index f508774..1d7c0da 100644 (file)
@@ -1,3 +1,26 @@
+2011-01-04  Xianzhu Wang  <wangxianzhu@google.com>
+
+        Reviewed by Darin Adler.
+
+        Let DataView.getInt8() and DataView.setInt8() use int8_t instead of
+        ambiguous 'char' to fix fast/canvas/webgl/data-view-test.html failure
+        on ARM.
+        https://bugs.webkit.org/show_bug.cgi?id=51861
+
+        By the way, changed other getIntXX() and setIntXX() methods to use
+        more precise integer types.
+
+        * bindings/js/JSDataViewCustom.cpp:
+        (WebCore::setDataViewMember):
+        * bindings/v8/custom/V8DataViewCustom.cpp:
+        (WebCore::V8DataView::getInt8Callback):
+        (WebCore::V8DataView::setInt8Callback):
+        * html/canvas/DataView.cpp:
+        (WebCore::DataView::getInt8):
+        (WebCore::DataView::setInt8):
+        * html/canvas/DataView.h:
+        * html/canvas/DataView.idl:
+
 2011-01-04  Yong Li  <yoli@rim.com>
 
         Reviewed by Adam Barth.
index b7d4b8f..ba48374 100644 (file)
@@ -136,10 +136,10 @@ static JSValue setDataViewMember(ExecState* exec, DataView* imp, DataViewAccessT
         
     switch (type) {
     case AccessDataViewMemberAsInt8:
-        imp->setInt8(byteOffset, static_cast<char>(value), ec);
+        imp->setInt8(byteOffset, static_cast<int8_t>(value), ec);
         break;
     case AccessDataViewMemberAsUint8:
-        imp->setUint8(byteOffset, static_cast<unsigned char>(value), ec);
+        imp->setUint8(byteOffset, static_cast<uint8_t>(value), ec);
         break;
     default:
         ASSERT_NOT_REACHED();
index 16bd4a5..60ce7ce 100755 (executable)
@@ -62,7 +62,7 @@ v8::Handle<v8::Value> V8DataView::getInt8Callback(const v8::Arguments& args)
     DataView* imp = V8DataView::toNative(args.Holder());
     ExceptionCode ec = 0;
     EXCEPTION_BLOCK(unsigned, byteOffset, toUInt32(args[0]));
-    char result = imp->getInt8(byteOffset, ec);
+    int8_t result = imp->getInt8(byteOffset, ec);
     if (UNLIKELY(ec)) {
         V8Proxy::setDOMException(ec);
         return v8::Handle<v8::Value>();
@@ -79,7 +79,7 @@ v8::Handle<v8::Value> V8DataView::getUint8Callback(const v8::Arguments& args)
     DataView* imp = V8DataView::toNative(args.Holder());
     ExceptionCode ec = 0;
     EXCEPTION_BLOCK(unsigned, byteOffset, toUInt32(args[0]));
-    unsigned char result = imp->getUint8(byteOffset, ec);
+    uint8_t result = imp->getUint8(byteOffset, ec);
     if (UNLIKELY(ec)) {
         V8Proxy::setDOMException(ec);
         return v8::Handle<v8::Value>();
@@ -97,7 +97,7 @@ v8::Handle<v8::Value> V8DataView::setInt8Callback(const v8::Arguments& args)
     ExceptionCode ec = 0;
     EXCEPTION_BLOCK(unsigned, byteOffset, toUInt32(args[0]));
     EXCEPTION_BLOCK(int, value, toInt32(args[1]));
-    imp->setInt8(byteOffset, static_cast<char>(value), ec);
+    imp->setInt8(byteOffset, static_cast<int8_t>(value), ec);
     if (UNLIKELY(ec))
         V8Proxy::setDOMException(ec);
     return v8::Handle<v8::Value>();
@@ -113,7 +113,7 @@ v8::Handle<v8::Value> V8DataView::setUint8Callback(const v8::Arguments& args)
     ExceptionCode ec = 0;
     EXCEPTION_BLOCK(unsigned, byteOffset, toUInt32(args[0]));
     EXCEPTION_BLOCK(int, value, toInt32(args[1]));
-    imp->setUint8(byteOffset, static_cast<unsigned char>(value), ec);
+    imp->setUint8(byteOffset, static_cast<uint8_t>(value), ec);
     if (UNLIKELY(ec))
         V8Proxy::setDOMException(ec);
     return v8::Handle<v8::Value>();
index dbf56ff..82b10b3 100755 (executable)
@@ -150,34 +150,34 @@ void DataView::setData(unsigned byteOffset, T value, bool littleEndian, Exceptio
     memcpy(static_cast<char*>(m_baseAddress) + byteOffset, tempValue.bytes, sizeof(T));
 }
 
-char DataView::getInt8(unsigned byteOffset, ExceptionCode& ec)
+int8_t DataView::getInt8(unsigned byteOffset, ExceptionCode& ec)
 {
-    return getData<char>(byteOffset, false, ec);
+    return getData<int8_t>(byteOffset, false, ec);
 }
 
-unsigned char DataView::getUint8(unsigned byteOffset, ExceptionCode& ec)
+uint8_t DataView::getUint8(unsigned byteOffset, ExceptionCode& ec)
 {
-    return getData<unsigned char>(byteOffset, false, ec);
+    return getData<uint8_t>(byteOffset, false, ec);
 }
 
-short DataView::getInt16(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
+int16_t DataView::getInt16(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
 {
-    return getData<short>(byteOffset, littleEndian, ec);
+    return getData<int16_t>(byteOffset, littleEndian, ec);
 }
 
-unsigned short DataView::getUint16(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
+uint16_t DataView::getUint16(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
 {
-    return getData<unsigned short>(byteOffset, littleEndian, ec);
+    return getData<uint16_t>(byteOffset, littleEndian, ec);
 }
 
-int DataView::getInt32(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
+int32_t DataView::getInt32(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
 {
-    return getData<int>(byteOffset, littleEndian, ec);
+    return getData<int32_t>(byteOffset, littleEndian, ec);
 }
 
-unsigned DataView::getUint32(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
+uint32_t DataView::getUint32(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
 {
-    return getData<unsigned>(byteOffset, littleEndian, ec);
+    return getData<uint32_t>(byteOffset, littleEndian, ec);
 }
 
 float DataView::getFloat32(unsigned byteOffset, bool littleEndian, ExceptionCode& ec)
@@ -190,34 +190,34 @@ double DataView::getFloat64(unsigned byteOffset, bool littleEndian, ExceptionCod
     return getData<double>(byteOffset, littleEndian, ec);
 }
 
-void DataView::setInt8(unsigned byteOffset, char value, ExceptionCode& ec)
+void DataView::setInt8(unsigned byteOffset, int8_t value, ExceptionCode& ec)
 {
-    setData<char>(byteOffset, value, false, ec);
+    setData<int8_t>(byteOffset, value, false, ec);
 }
 
-void DataView::setUint8(unsigned byteOffset, unsigned char value, ExceptionCode& ec)
+void DataView::setUint8(unsigned byteOffset, uint8_t value, ExceptionCode& ec)
 {
-    setData<unsigned char>(byteOffset, value, false, ec);
+    setData<uint8_t>(byteOffset, value, false, ec);
 }
 
 void DataView::setInt16(unsigned byteOffset, short value, bool littleEndian, ExceptionCode& ec)
 {
-    setData<short>(byteOffset, value, littleEndian, ec);
+    setData<int16_t>(byteOffset, value, littleEndian, ec);
 }
 
-void DataView::setUint16(unsigned byteOffset, unsigned short value, bool littleEndian, ExceptionCode& ec)
+void DataView::setUint16(unsigned byteOffset, uint16_t value, bool littleEndian, ExceptionCode& ec)
 {
-    setData<unsigned short>(byteOffset, value, littleEndian, ec);
+    setData<uint16_t>(byteOffset, value, littleEndian, ec);
 }
 
-void DataView::setInt32(unsigned byteOffset, int value, bool littleEndian, ExceptionCode& ec)
+void DataView::setInt32(unsigned byteOffset, int32_t value, bool littleEndian, ExceptionCode& ec)
 {
-    setData<int>(byteOffset, value, littleEndian, ec);
+    setData<int32_t>(byteOffset, value, littleEndian, ec);
 }
 
-void DataView::setUint32(unsigned byteOffset, unsigned value, bool littleEndian, ExceptionCode& ec)
+void DataView::setUint32(unsigned byteOffset, uint32_t value, bool littleEndian, ExceptionCode& ec)
 {
-    setData<unsigned>(byteOffset, value, littleEndian, ec);
+    setData<uint32_t>(byteOffset, value, littleEndian, ec);
 }
 
 void DataView::setFloat32(unsigned byteOffset, float value, bool littleEndian, ExceptionCode& ec)
index 0681341..5707aa3 100755 (executable)
@@ -41,31 +41,31 @@ public:
     virtual unsigned byteLength() const { return m_byteLength; }
     virtual PassRefPtr<ArrayBufferView> slice(int, int) const { return 0; }
 
-    char getInt8(unsigned byteOffset, ExceptionCode&);
-    unsigned char getUint8(unsigned byteOffset, ExceptionCode&);
-    short getInt16(unsigned byteOffset, ExceptionCode& ec) { return getInt16(byteOffset, false, ec); }
-    short getInt16(unsigned byteOffset, bool littleEndian, ExceptionCode&);
-    unsigned short getUint16(unsigned byteOffset, ExceptionCode& ec) { return getUint16(byteOffset, false, ec); }
-    unsigned short getUint16(unsigned byteOffset, bool littleEndian, ExceptionCode&);
-    int getInt32(unsigned byteOffset, ExceptionCode& ec) { return getInt32(byteOffset, false, ec); }
-    int getInt32(unsigned byteOffset, bool littleEndian, ExceptionCode&);
-    unsigned getUint32(unsigned byteOffset, ExceptionCode& ec) { return getUint32(byteOffset, false, ec); }
-    unsigned getUint32(unsigned byteOffset, bool littleEndian, ExceptionCode&);
+    int8_t getInt8(unsigned byteOffset, ExceptionCode&);
+    uint8_t getUint8(unsigned byteOffset, ExceptionCode&);
+    int16_t getInt16(unsigned byteOffset, ExceptionCode& ec) { return getInt16(byteOffset, false, ec); }
+    int16_t getInt16(unsigned byteOffset, bool littleEndian, ExceptionCode&);
+    uint16_t getUint16(unsigned byteOffset, ExceptionCode& ec) { return getUint16(byteOffset, false, ec); }
+    uint16_t getUint16(unsigned byteOffset, bool littleEndian, ExceptionCode&);
+    int32_t getInt32(unsigned byteOffset, ExceptionCode& ec) { return getInt32(byteOffset, false, ec); }
+    int32_t getInt32(unsigned byteOffset, bool littleEndian, ExceptionCode&);
+    uint32_t getUint32(unsigned byteOffset, ExceptionCode& ec) { return getUint32(byteOffset, false, ec); }
+    uint32_t getUint32(unsigned byteOffset, bool littleEndian, ExceptionCode&);
     float getFloat32(unsigned byteOffset, ExceptionCode& ec) { return getFloat32(byteOffset, false, ec); }
     float getFloat32(unsigned byteOffset, bool littleEndian, ExceptionCode&);
     double getFloat64(unsigned byteOffset, ExceptionCode& ec) { return getFloat64(byteOffset, false, ec); }
     double getFloat64(unsigned byteOffset, bool littleEndian, ExceptionCode&);
 
-    void setInt8(unsigned byteOffset, char value, ExceptionCode&);
-    void setUint8(unsigned byteOffset, unsigned char value, ExceptionCode&);
-    void setInt16(unsigned byteOffset, short value, ExceptionCode& ec) { setInt16(byteOffset, value, false, ec); }
-    void setInt16(unsigned byteOffset, short value, bool littleEndian, ExceptionCode&);
-    void setUint16(unsigned byteOffset, unsigned short value, ExceptionCode& ec) { setUint16(byteOffset, value, false, ec); }
-    void setUint16(unsigned byteOffset, unsigned short value, bool littleEndian, ExceptionCode&);
-    void setInt32(unsigned byteOffset, int value, ExceptionCode& ec) { setInt32(byteOffset, value, false, ec); } 
-    void setInt32(unsigned byteOffset, int value, bool littleEndian, ExceptionCode&);
-    void setUint32(unsigned byteOffset, unsigned value, ExceptionCode& ec) { setUint32(byteOffset, value, false, ec); }
-    void setUint32(unsigned byteOffset, unsigned value, bool littleEndian, ExceptionCode&);
+    void setInt8(unsigned byteOffset, int8_t value, ExceptionCode&);
+    void setUint8(unsigned byteOffset, uint8_t value, ExceptionCode&);
+    void setInt16(unsigned byteOffset, int16_t value, ExceptionCode& ec) { setInt16(byteOffset, value, false, ec); }
+    void setInt16(unsigned byteOffset, int16_t value, bool littleEndian, ExceptionCode&);
+    void setUint16(unsigned byteOffset, uint16_t value, ExceptionCode& ec) { setUint16(byteOffset, value, false, ec); }
+    void setUint16(unsigned byteOffset, uint16_t value, bool littleEndian, ExceptionCode&);
+    void setInt32(unsigned byteOffset, int32_t value, ExceptionCode& ec) { setInt32(byteOffset, value, false, ec); } 
+    void setInt32(unsigned byteOffset, int32_t value, bool littleEndian, ExceptionCode&);
+    void setUint32(unsigned byteOffset, uint32_t value, ExceptionCode& ec) { setUint32(byteOffset, value, false, ec); }
+    void setUint32(unsigned byteOffset, uint32_t value, bool littleEndian, ExceptionCode&);
     void setFloat32(unsigned byteOffset, float value, ExceptionCode& ec) { setFloat32(byteOffset, value, false, ec); }
     void setFloat32(unsigned byteOffset, float value, bool littleEndian, ExceptionCode&);
     void setFloat64(unsigned byteOffset, double value, ExceptionCode& ec) { setFloat64(byteOffset, value, false, ec); }
index bef8805..f99a814 100755 (executable)
@@ -35,9 +35,9 @@ module html {
     ] DataView : ArrayBufferView {
         // All these methods raise an exception if they would read or write beyond the end of the view.
 
-        // We have to use custom code because our code generator does not support char type.
-        // char getInt8(in unsigned long byteOffset);
-        // unsigned char getUint8(in unsigned long byteOffset);
+        // We have to use custom code because our code generator does not support int8_t type.
+        // int8_t getInt8(in unsigned long byteOffset);
+        // uint8_t getUint8(in unsigned long byteOffset);
         [Custom] DOMObject getInt8()
             raises (DOMException);
         [Custom] DOMObject getUint8()
@@ -58,9 +58,9 @@ module html {
         [JSCCustom, StrictTypeChecking, RequiresAllArguments=Raise] double getFloat64(in unsigned long byteOffset, in [Optional] boolean littleEndian)
             raises (DOMException);
 
-        // We have to use custom code because our code generator does not support char type.
-        // void setInt8(in unsigned long byteOffset, in byte value);
-        // void setUint8(in unsigned long byteOffset, in unsigned byte value);
+        // We have to use custom code because our code generator does not support uint8_t type.
+        // void setInt8(in unsigned long byteOffset, in int8_t value);
+        // void setUint8(in unsigned long byteOffset, in uint8_t value);
         [Custom] void setInt8()
             raises (DOMException);
         [Custom] void setUint8()