Reviewers: Mads Ager, Description: Merge bleeding_edge revision 2961 to branches/1.2
Please review this at http://codereview.chromium.org/255021 SVN Base: http://v8.googlecode.com/svn/branches/1.2/ Affected files: M src/ia32/ic-ia32.cc M src/version.cc M test/cctest/test-api.cc Index: test/cctest/test-api.cc =================================================================== --- test/cctest/test-api.cc (revision 2985) +++ test/cctest/test-api.cc (working copy) @@ -7214,8 +7214,44 @@ CHECK_EQ(1503, result->Int32Value()); result = CompileRun("pixels[1]"); CHECK_EQ(1, result->Int32Value()); + result = CompileRun("var sum = 0;" "for (var i = 0; i < 8; i++) {" + " sum += pixels[i] = pixels[i] = -i;" + "}" + "sum;"); + CHECK_EQ(-28, result->Int32Value()); + + result = CompileRun("var sum = 0;" + "for (var i = 0; i < 8; i++) {" + " sum += pixels[i] = pixels[i] = 0;" + "}" + "sum;"); + CHECK_EQ(0, result->Int32Value()); + + result = CompileRun("var sum = 0;" + "for (var i = 0; i < 8; i++) {" + " sum += pixels[i] = pixels[i] = 255;" + "}" + "sum;"); + CHECK_EQ(8 * 255, result->Int32Value()); + + result = CompileRun("var sum = 0;" + "for (var i = 0; i < 8; i++) {" + " sum += pixels[i] = pixels[i] = 256 + i;" + "}" + "sum;"); + CHECK_EQ(2076, result->Int32Value()); + + result = CompileRun("var sum = 0;" + "for (var i = 0; i < 8; i++) {" + " sum += pixels[i] = pixels[i] = i;" + "}" + "sum;"); + CHECK_EQ(28, result->Int32Value()); + + result = CompileRun("var sum = 0;" + "for (var i = 0; i < 8; i++) {" " sum += pixels[i];" "}" "sum;"); @@ -7324,5 +7360,8 @@ CHECK_EQ(77, v8::Object::Cast(*result)->Get(v8_str("0"))->Int32Value()); CHECK_EQ(23, v8::Object::Cast(*result)->Get(v8_str("1"))->Int32Value()); + result = CompileRun("pixels[1] = 23;"); + CHECK_EQ(23, result->Int32Value()); + free(pixel_data); } Index: src/ia32/ic-ia32.cc =================================================================== --- src/ia32/ic-ia32.cc (revision 2985) +++ src/ia32/ic-ia32.cc (working copy) @@ -416,6 +416,7 @@ __ sar(ebx, kSmiTagSize); // Untag the index. __ cmp(ebx, FieldOperand(ecx, PixelArray::kLengthOffset)); __ j(above_equal, &slow); + __ mov(edx, eax); // Save the value. __ sar(eax, kSmiTagSize); // Untag the value. { // Clamp the value to [0..255]. Label done, check_255; @@ -431,6 +432,7 @@ } __ mov(ecx, FieldOperand(ecx, PixelArray::kExternalPointerOffset)); __ mov_b(Operand(ecx, ebx, times_1, 0), eax); + __ mov(eax, edx); // Return the original value. __ ret(0); // Extra capacity case: Check if there is extra capacity to Index: src/version.cc =================================================================== --- src/version.cc (revision 2985) +++ src/version.cc (working copy) @@ -35,7 +35,7 @@ #define MAJOR_VERSION 1 #define MINOR_VERSION 2 #define BUILD_NUMBER 14 -#define PATCH_LEVEL 19 +#define PATCH_LEVEL 20 #define CANDIDATE_VERSION false // Define SONAME to have the SCons build the put a specific SONAME into the --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
