Minor ArrayBufferView cleanup
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Nov 2017 22:23:15 +0000 (22:23 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Nov 2017 22:23:15 +0000 (22:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179966

Reviewed by Darin Adler.

Use void* for data pointers when we don't need to do offset math. Use const for
source pointers.

Prefer uint8_t* to char*.

Add comments noting that the assertions should not be made release assertions
as recommended by the style checker, since the point is to avoid the virtual byteLength()
call in release.

* runtime/ArrayBufferView.h:
(JSC::ArrayBufferView::setImpl):
(JSC::ArrayBufferView::setRangeImpl):
(JSC::ArrayBufferView::getRangeImpl):
(JSC::ArrayBufferView::zeroRangeImpl):

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/ArrayBufferView.h

index ceeb7f8..9e4f970 100644 (file)
@@ -1,3 +1,25 @@
+2017-11-23  Simon Fraser  <simon.fraser@apple.com>
+
+        Minor ArrayBufferView cleanup
+        https://bugs.webkit.org/show_bug.cgi?id=179966
+
+        Reviewed by Darin Adler.
+        
+        Use void* for data pointers when we don't need to do offset math. Use const for
+        source pointers.
+        
+        Prefer uint8_t* to char*.
+        
+        Add comments noting that the assertions should not be made release assertions
+        as recommended by the style checker, since the point is to avoid the virtual byteLength()
+        call in release.
+
+        * runtime/ArrayBufferView.h:
+        (JSC::ArrayBufferView::setImpl):
+        (JSC::ArrayBufferView::setRangeImpl):
+        (JSC::ArrayBufferView::getRangeImpl):
+        (JSC::ArrayBufferView::zeroRangeImpl):
+
 2017-11-23  Darin Adler  <darin@apple.com>
 
         Reduce WTF::String operations that do unnecessary Unicode operations instead of ASCII
index daf9d86..703bc62 100644 (file)
@@ -118,8 +118,8 @@ protected:
     inline bool setImpl(ArrayBufferView*, unsigned byteOffset);
 
     // Caller passes in bufferByteLength to avoid a virtual function call.
-    inline bool setRangeImpl(const char* data, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength);
-    inline bool getRangeImpl(char* destination, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength);
+    inline bool setRangeImpl(const void* data, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength);
+    inline bool getRangeImpl(void* destination, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength);
 
     inline bool zeroRangeImpl(unsigned byteOffset, size_t rangeByteLength);
 
@@ -168,13 +168,14 @@ bool ArrayBufferView::setImpl(ArrayBufferView* array, unsigned byteOffset)
         return false;
     }
     
-    char* base = static_cast<char*>(baseAddress());
+    uint8_t* base = static_cast<uint8_t*>(baseAddress());
     memmove(base + byteOffset, array->baseAddress(), array->byteLength());
     return true;
 }
 
-bool ArrayBufferView::setRangeImpl(const char* data, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength)
+bool ArrayBufferView::setRangeImpl(const void* data, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength)
 {
+    // Do not replace with RELEASE_ASSERT; we want to avoid the virtual byteLength() function call in release.
     ASSERT_WITH_SECURITY_IMPLICATION(bufferByteLength == byteLength());
     if (byteOffset > bufferByteLength
         || byteOffset + dataByteLength > bufferByteLength
@@ -183,13 +184,14 @@ bool ArrayBufferView::setRangeImpl(const char* data, size_t dataByteLength, unsi
         return false;
     }
 
-    char* base = static_cast<char*>(baseAddress());
+    uint8_t* base = static_cast<uint8_t*>(baseAddress());
     memmove(base + byteOffset, data, dataByteLength);
     return true;
 }
 
-bool ArrayBufferView::getRangeImpl(char* destination, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength)
+bool ArrayBufferView::getRangeImpl(void* destination, size_t dataByteLength, unsigned byteOffset, unsigned bufferByteLength)
 {
+    // Do not replace with RELEASE_ASSERT; we want to avoid the virtual byteLength() function call in release.
     ASSERT_WITH_SECURITY_IMPLICATION(bufferByteLength == byteLength());
     if (byteOffset > bufferByteLength
         || byteOffset + dataByteLength > bufferByteLength
@@ -198,7 +200,7 @@ bool ArrayBufferView::getRangeImpl(char* destination, size_t dataByteLength, uns
         return false;
     }
 
-    char* base = static_cast<char*>(baseAddress());
+    const uint8_t* base = static_cast<const uint8_t*>(baseAddress());
     memmove(destination, base + byteOffset, dataByteLength);
     return true;
 }
@@ -212,7 +214,7 @@ bool ArrayBufferView::zeroRangeImpl(unsigned byteOffset, size_t rangeByteLength)
         return false;
     }
     
-    char* base = static_cast<char*>(baseAddress());
+    uint8_t* base = static_cast<uint8_t*>(baseAddress());
     memset(base + byteOffset, 0, rangeByteLength);
     return true;
 }