Reviewed by Eric.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 20 Oct 2007 22:42:45 +0000 (22:42 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 20 Oct 2007 22:42:45 +0000 (22:42 +0000)
        * TODO: Updated to note areas that are now well-covered.

        - Change the tests and the driver to avoid leaving large object
        graphs hanging around, since that throws off the subsequent tests.

        * resources/sunspider-standalone-driver.js:
        * tests/3d-cube.js:
        * tests/3d-morph.js:
        * tests/3d-raytrace.js:
        * tests/bitops-bitwise-and.js:
        * tests/string-base64.js:
        * tests/string-tagcloud.js:

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

SunSpider/ChangeLog
SunSpider/TODO
SunSpider/resources/sunspider-standalone-driver.js
SunSpider/tests/3d-cube.js
SunSpider/tests/3d-morph.js
SunSpider/tests/3d-raytrace.js
SunSpider/tests/bitops-bitwise-and.js
SunSpider/tests/string-base64.js
SunSpider/tests/string-tagcloud.js

index 46252f6..6225279 100644 (file)
@@ -1,5 +1,22 @@
 2007-10-20  Maciej Stachowiak  <mjs@apple.com>
 
+        Reviewed by Eric.
+
+        * TODO: Updated to note areas that are now well-covered.
+        
+        - Change the tests and the driver to avoid leaving large object
+        graphs hanging around, since that throws off the subsequent tests.
+        
+        * resources/sunspider-standalone-driver.js:
+        * tests/3d-cube.js:
+        * tests/3d-morph.js:
+        * tests/3d-raytrace.js:
+        * tests/bitops-bitwise-and.js:
+        * tests/string-base64.js:
+        * tests/string-tagcloud.js:
+
+2007-10-20  Maciej Stachowiak  <mjs@apple.com>
+
         Reviewed by Nikolas.
         
         - Rebalance test complexity.
index ec016dd..a55c1cc 100644 (file)
@@ -2,11 +2,13 @@
 * Add more test cases. Categories we'd like to cover (with reasonably
   real-world tests, preferably not microbenchmarks) include:
 
+  (X marks the ones that are fairly well covered now).
+
     - math (general)
-    - bitops
-    - 3-d (the math bits)
+    X bitops
+    X 3-d (the math bits)
     - crypto / encoding
-    - string processing
+    X string processing
     - regexps
     - date processing
     - array processing
index 7703d34..22aeb61 100644 (file)
@@ -34,6 +34,7 @@ for (var j = 0; j < tests.length; j++) {
     var startTime = new Date;
     load(testName);
     times[j] = new Date() - startTime;
+    gc();
 }
 
 function recordResults(tests, times)
index 25923a8..e2cd6f9 100644 (file)
@@ -326,3 +326,12 @@ function Init(CubeSize) {
 for ( var i = 20; i <= 160; i *= 2 ) {
   Init(i);
 }
+
+Q = null;
+MTrans = null;
+MQube = null;
+I = null;
+Origin = null;
+Testing = null;
+LoopTime = null;
+DisplArea = null;
index 9838656..d4238c0 100644 (file)
@@ -47,3 +47,8 @@ for (var i=0; i < nx*nz*3; ++i)
 for (var i = 0; i < loops; ++i) {
     morph(a, i/loops)
 }
+
+testOutput = 0;
+for (var i = 0; i < nx; i++)
+    testOutput += a[3*(i*nx+i)+1];
+a = null;
index ec190f8..e7b959e 100644 (file)
@@ -310,90 +310,132 @@ Camera.prototype.render = function(scene, pixels, width, height) {
 
 
 
-var startDate = new Date().getTime();
-var numTriangles = 2 * 6;
-var triangles = new Array();//numTriangles);
-var tfl = createVector(-10,  10, -10);
-var tfr = createVector( 10,  10, -10);
-var tbl = createVector(-10,  10,  10);
-var tbr = createVector( 10,  10,  10);
-var bfl = createVector(-10, -10, -10);
-var bfr = createVector( 10, -10, -10);
-var bbl = createVector(-10, -10,  10);
-var bbr = createVector( 10, -10,  10);
-            
-// cube!!!
-// front
-var i = 0;
-
-triangles[i++] = new Triangle(tfl, tfr, bfr);
-triangles[i++] = new Triangle(tfl, bfr, bfl);
-// back
-triangles[i++] = new Triangle(tbl, tbr, bbr);
-triangles[i++] = new Triangle(tbl, bbr, bbl);
-//        triangles[i-1].material = [0.7,0.2,0.2];
-//            triangles[i-1].material.reflection = 0.8;
-// left
-triangles[i++] = new Triangle(tbl, tfl, bbl);
-//            triangles[i-1].reflection = 0.6;
-triangles[i++] = new Triangle(tfl, bfl, bbl);
-//            triangles[i-1].reflection = 0.6;
-// right
-triangles[i++] = new Triangle(tbr, tfr, bbr);
-triangles[i++] = new Triangle(tfr, bfr, bbr);
-// top
-triangles[i++] = new Triangle(tbl, tbr, tfr);
-triangles[i++] = new Triangle(tbl, tfr, tfl);
-// bottom
-triangles[i++] = new Triangle(bbl, bbr, bfr);
-triangles[i++] = new Triangle(bbl, bfr, bfl);
-
-//Floor!!!!
-var green = createVector(0.0, 0.4, 0.0);
-var grey = createVector(0.4, 0.4, 0.4);
-grey.reflection = 1.0;
-var floorShader = function(tri, pos, view) {
-    var x = ((pos[0]/32) % 2 + 2) % 2;
-    var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;
-    if (x < 1 != z < 1) {
-        //in the real world we use the fresnel term...
-        //    var angle = 1-dot(view, tri.normal);
-        //   angle *= angle;
-        //  angle *= angle;
-        // angle *= angle;
-        //grey.reflection = angle;
-        return grey;
-    } else 
-        return green;
-}
-var ffl = createVector(-1000, -30, -1000);
-var ffr = createVector( 1000, -30, -1000);
-var fbl = createVector(-1000, -30,  1000);
-var fbr = createVector( 1000, -30,  1000);
-triangles[i++] = new Triangle(fbl, fbr, ffr);
-triangles[i-1].shader = floorShader;
-triangles[i++] = new Triangle(fbl, ffr, ffl);
-triangles[i-1].shader = floorShader;
-
-var _scene = new Scene(triangles);
-_scene.lights[0] = createVector(20, 38, -22);
-_scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
-_scene.lights[1] = createVector(-23, 40, 17);
-_scene.lights[1].colour = createVector(0.7, 0.3, 0.3);
-_scene.lights[2] = createVector(23, 20, 17);
-_scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
-_scene.ambient = createVector(0.1, 0.1, 0.1);
-//  _scene.background = createVector(0.7, 0.7, 1.0);
-
-var size = 30;
-var pixels = new Array();
-for (var y = 0; y < size; y++) {
-  pixels[y] = new Array();
-  for (var x = 0; x < size; x++) {
-      pixels[y][x] = 0;
-  }
+function raytraceScene()
+{
+    var startDate = new Date().getTime();
+    var numTriangles = 2 * 6;
+    var triangles = new Array();//numTriangles);
+    var tfl = createVector(-10,  10, -10);
+    var tfr = createVector( 10,  10, -10);
+    var tbl = createVector(-10,  10,  10);
+    var tbr = createVector( 10,  10,  10);
+    var bfl = createVector(-10, -10, -10);
+    var bfr = createVector( 10, -10, -10);
+    var bbl = createVector(-10, -10,  10);
+    var bbr = createVector( 10, -10,  10);
+    
+    // cube!!!
+    // front
+    var i = 0;
+    
+    triangles[i++] = new Triangle(tfl, tfr, bfr);
+    triangles[i++] = new Triangle(tfl, bfr, bfl);
+    // back
+    triangles[i++] = new Triangle(tbl, tbr, bbr);
+    triangles[i++] = new Triangle(tbl, bbr, bbl);
+    //        triangles[i-1].material = [0.7,0.2,0.2];
+    //            triangles[i-1].material.reflection = 0.8;
+    // left
+    triangles[i++] = new Triangle(tbl, tfl, bbl);
+    //            triangles[i-1].reflection = 0.6;
+    triangles[i++] = new Triangle(tfl, bfl, bbl);
+    //            triangles[i-1].reflection = 0.6;
+    // right
+    triangles[i++] = new Triangle(tbr, tfr, bbr);
+    triangles[i++] = new Triangle(tfr, bfr, bbr);
+    // top
+    triangles[i++] = new Triangle(tbl, tbr, tfr);
+    triangles[i++] = new Triangle(tbl, tfr, tfl);
+    // bottom
+    triangles[i++] = new Triangle(bbl, bbr, bfr);
+    triangles[i++] = new Triangle(bbl, bfr, bfl);
+    
+    //Floor!!!!
+    var green = createVector(0.0, 0.4, 0.0);
+    var grey = createVector(0.4, 0.4, 0.4);
+    grey.reflection = 1.0;
+    var floorShader = function(tri, pos, view) {
+        var x = ((pos[0]/32) % 2 + 2) % 2;
+        var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;
+        if (x < 1 != z < 1) {
+            //in the real world we use the fresnel term...
+            //    var angle = 1-dot(view, tri.normal);
+            //   angle *= angle;
+            //  angle *= angle;
+            // angle *= angle;
+            //grey.reflection = angle;
+            return grey;
+        } else 
+            return green;
+    }
+    var ffl = createVector(-1000, -30, -1000);
+    var ffr = createVector( 1000, -30, -1000);
+    var fbl = createVector(-1000, -30,  1000);
+    var fbr = createVector( 1000, -30,  1000);
+    triangles[i++] = new Triangle(fbl, fbr, ffr);
+    triangles[i-1].shader = floorShader;
+    triangles[i++] = new Triangle(fbl, ffr, ffl);
+    triangles[i-1].shader = floorShader;
+    
+    var _scene = new Scene(triangles);
+    _scene.lights[0] = createVector(20, 38, -22);
+    _scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
+    _scene.lights[1] = createVector(-23, 40, 17);
+    _scene.lights[1].colour = createVector(0.7, 0.3, 0.3);
+    _scene.lights[2] = createVector(23, 20, 17);
+    _scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
+    _scene.ambient = createVector(0.1, 0.1, 0.1);
+    //  _scene.background = createVector(0.7, 0.7, 1.0);
+    
+    var size = 30;
+    var pixels = new Array();
+    for (var y = 0; y < size; y++) {
+        pixels[y] = new Array();
+        for (var x = 0; x < size; x++) {
+            pixels[y][x] = 0;
+        }
+    }
+
+    var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));
+    _camera.render(_scene, pixels, size, size);
+
+    return pixels;
 }
 
+function arrayToCanvasCommands(pixels)
+{
+    var s = '<canvas id="renderCanvas" width="30px" height="30px"></canvas><scr' + 'ipt>\nvar pixels = [';
+    var size = 30;
+    for (var y = 0; y < size; y++) {
+        s += "[";
+        for (var x = 0; x < size; x++) {
+            s += "[" + pixels[y][x] + "],";
+        }
+        s+= "],";
+    }
+    s += '];\n    var canvas = document.getElementById("renderCanvas").getContext("2d");\n\
+\n\
+\n\
+    var size = 30;\n\
+    canvas.fillStyle = "red";\n\
+    canvas.fillRect(0, 0, size, size);\n\
+    canvas.scale(1, -1);\n\
+    canvas.translate(0, -size);\n\
+\n\
+    if (!canvas.setFillColor)\n\
+        canvas.setFillColor = function(r, g, b, a) {\n\
+            this.fillStyle = "rgb("+[Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)]+")";\n\
+    }\n\
+\n\
+for (var y = 0; y < size; y++) {\n\
+  for (var x = 0; x < size; x++) {\n\
+    var l = pixels[y][x];\n\
+    canvas.setFillColor(l[0], l[1], l[2], 1);\n\
+    canvas.fillRect(x, y, 1, 1);\n\
+  }\n\
+}</scr' + 'ipt>';
+
+    return s;
+}
 
-var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));
-_camera.render(_scene, pixels, size, size);
+testOutput = arrayToCanvasCommands(raytraceScene());
index 25aca29..7c80e69 100644 (file)
@@ -23,6 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-var x = 4294967296;
+bitwiseAndValue = 4294967296;
 for (var i = 0; i < 600000; i++)
-    x = x & i;
+    bitwiseAndValue = bitwiseAndValue & i;
index 7a162f5..c9f3a7b 100644 (file)
@@ -131,3 +131,5 @@ for ( var i = 8192; i <= 16384; i *= 2 ) {
     // Double the string
     str += str;
 }
+
+toBinaryTable = null;
index e4157c6..d3e5a1f 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (C) 2007 Apple Inc.  All rights reserved.
  *
@@ -261,3 +262,4 @@ function makeTagCloud(tagInfo)
 }
 
 var tagcloud = makeTagCloud(tagInfo);
+tagInfo = null;