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 -~----------~----~----~----~------~----~------~--~---
