Revision: 3329
Author: [email protected]
Date: Wed Nov 18 03:44:39 2009
Log: Push pixel array fix in bleeding_edge revision 3328 to 1.3 branch.

Review URL: http://codereview.chromium.org/405016
http://code.google.com/p/v8/source/detail?r=3329

Modified:
  /branches/1.3/src/version.cc
  /branches/1.3/src/x64/ic-x64.cc
  /branches/1.3/test/cctest/test-api.cc

=======================================
--- /branches/1.3/src/version.cc        Tue Nov 17 16:22:24 2009
+++ /branches/1.3/src/version.cc        Wed Nov 18 03:44:39 2009
@@ -35,7 +35,7 @@
  #define MAJOR_VERSION     1
  #define MINOR_VERSION     3
  #define BUILD_NUMBER      18
-#define PATCH_LEVEL       11
+#define PATCH_LEVEL       12
  #define CANDIDATE_VERSION false

  // Define SONAME to have the SCons build the put a specific SONAME into the
=======================================
--- /branches/1.3/src/x64/ic-x64.cc     Wed Oct 28 07:53:37 2009
+++ /branches/1.3/src/x64/ic-x64.cc     Wed Nov 18 03:44:39 2009
@@ -313,7 +313,7 @@
    __ cmpl(rax, FieldOperand(rcx, PixelArray::kLengthOffset));
    __ j(above_equal, &slow);
    __ movq(rcx, FieldOperand(rcx, PixelArray::kExternalPointerOffset));
-  __ movb(rax, Operand(rcx, rax, times_1, 0));
+  __ movzxbq(rax, Operand(rcx, rax, times_1, 0));
    __ Integer32ToSmi(rax, rax);
    __ ret(0);

=======================================
--- /branches/1.3/test/cctest/test-api.cc       Tue Nov 17 13:43:00 2009
+++ /branches/1.3/test/cctest/test-api.cc       Wed Nov 18 03:44:39 2009
@@ -7884,18 +7884,18 @@
  THREADED_TEST(PixelArray) {
    v8::HandleScope scope;
    LocalContext context;
-  const int kElementCount = 40;
+  const int kElementCount = 260;
    uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount));
    i::Handle<i::PixelArray> pixels =  
i::Factory::NewPixelArray(kElementCount,
                                                                pixel_data);
    i::Heap::CollectAllGarbage(false);  // Force GC to trigger verification.
    for (int i = 0; i < kElementCount; i++) {
-    pixels->set(i, i);
+    pixels->set(i, i % 256);
    }
    i::Heap::CollectAllGarbage(false);  // Force GC to trigger verification.
    for (int i = 0; i < kElementCount; i++) {
-    CHECK_EQ(i, pixels->get(i));
-    CHECK_EQ(i, pixel_data[i]);
+    CHECK_EQ(i % 256, pixels->get(i));
+    CHECK_EQ(i % 256, pixel_data[i]);
    }

    v8::Handle<v8::Object> obj = v8::Object::New();
@@ -8059,6 +8059,15 @@
    result = CompileRun("pixels[1] = 23;");
    CHECK_EQ(23, result->Int32Value());

+  // Test for index greater than 255.  Regression test for:
+  // http://code.google.com/p/chromium/issues/detail?id=26337.
+  result = CompileRun("pixels[256] = 255;");
+  CHECK_EQ(255, result->Int32Value());
+  result = CompileRun("var i = 0;"
+                      "for (var j = 0; j < 8; j++) { i = pixels[256]; }"
+                      "i");
+  CHECK_EQ(255, result->Int32Value());
+
    free(pixel_data);
  }


--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to