Title: [197465] trunk/LayoutTests
Revision
197465
Author
fpi...@apple.com
Date
2016-03-02 14:30:49 -0800 (Wed, 02 Mar 2016)

Log Message

Add a benchmark for string transcoding.

Rubber stamped by Saam Barati.

I wrote some code like this while working on
https://github.com/WebAssembly/design/pull/573. I thought I'd add it as a benchmark since
it stresses things that we may not have good bench coverage for.

* js/regress/script-tests/string-transcoding.js: Added.
(decodeUTF8):
(encodeUTF8):
(arraysEqual):
(arrayToString):
(setHeader):
(print):
(tryArray):
(doSteps):
* js/regress/string-transcoding-expected.txt: Added.
* js/regress/string-transcoding.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (197464 => 197465)


--- trunk/LayoutTests/ChangeLog	2016-03-02 22:29:26 UTC (rev 197464)
+++ trunk/LayoutTests/ChangeLog	2016-03-02 22:30:49 UTC (rev 197465)
@@ -1,3 +1,25 @@
+2016-03-02  Filip Pizlo  <fpi...@apple.com>
+
+        Add a benchmark for string transcoding.
+
+        Rubber stamped by Saam Barati.
+
+        I wrote some code like this while working on
+        https://github.com/WebAssembly/design/pull/573. I thought I'd add it as a benchmark since
+        it stresses things that we may not have good bench coverage for.
+
+        * js/regress/script-tests/string-transcoding.js: Added.
+        (decodeUTF8):
+        (encodeUTF8):
+        (arraysEqual):
+        (arrayToString):
+        (setHeader):
+        (print):
+        (tryArray):
+        (doSteps):
+        * js/regress/string-transcoding-expected.txt: Added.
+        * js/regress/string-transcoding.html: Added.
+
 2016-03-02  Dave Hyatt  <hy...@apple.com>
 
         Add support for the "first" value of the hanging-punctuation property.

Added: trunk/LayoutTests/js/regress/script-tests/string-transcoding.js (0 => 197465)


--- trunk/LayoutTests/js/regress/script-tests/string-transcoding.js	                        (rev 0)
+++ trunk/LayoutTests/js/regress/script-tests/string-transcoding.js	2016-03-02 22:30:49 UTC (rev 197465)
@@ -0,0 +1,81 @@
+function decodeUTF8(array) {
+    var string = "";
+    for (var i = 0; i < array.length; ++i)
+        string += String.fromCharCode(array[i]);
+    return decodeURIComponent(escape(string));
+}
+
+function encodeUTF8(string) {
+    string = unescape(encodeURIComponent(string));
+
+    var array = new Uint8Array(string.length);
+    for (var i = 0; i < array.length; ++i)
+        array[i] = string.charCodeAt(i);
+    return array;
+}
+
+function arraysEqual(a, b) {
+    if (a.length != b.length)
+        return false;
+    for (var i = 0; i < a.length; ++i) {
+        if (a[i] != b[i])
+            return false;
+    }
+    return true;
+}
+
+function arrayToString(array) {
+    return "[" + Array.prototype.join.call(array, ", ") + "]";
+}
+
+function setHeader(s) {
+}
+
+function print(s) {
+    document.getElementById("console").innerHTML += "<br/>" + s;
+}
+
+function tryArray(array) {
+    try {
+        var string = decodeUTF8(array);
+        try {
+            var array2 = encodeUTF8(string);
+            if (!arraysEqual(array, array2)) {
+                print("Round trip failed: " + arrayToString(array) + " turned into " + arrayToString(array2));
+                return;
+            }
+        } catch (e) {
+            print("Threw exception in encode for: " + arrayToString(array));
+            return;
+        }
+    } catch (e) {
+        return;
+    }
+}
+
+var array = new Uint8Array(5);
+
+function doSteps(numSteps) {
+    while (numSteps--) {
+        tryArray(array);
+
+        var done = false;
+        array[0]++;
+        for (var i = 0; i < array.length; ++i) {
+            if (array[i])
+                break;
+            if (i + 1 == array.length) {
+                done = true;
+                break;
+            }
+            array[i + 1]++;
+        }
+
+        if (done)
+            return false;
+    }
+
+    return true;
+}
+
+doSteps(5000);

Added: trunk/LayoutTests/js/regress/string-transcoding-expected.txt (0 => 197465)


--- trunk/LayoutTests/js/regress/string-transcoding-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/js/regress/string-transcoding-expected.txt	2016-03-02 22:30:49 UTC (rev 197465)
@@ -0,0 +1,10 @@
+JSRegress/string-transcoding
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/js/regress/string-transcoding.html (0 => 197465)


--- trunk/LayoutTests/js/regress/string-transcoding.html	                        (rev 0)
+++ trunk/LayoutTests/js/regress/string-transcoding.html	2016-03-02 22:30:49 UTC (rev 197465)
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+</body>
+</html>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to