Revision: 5128 Author: [email protected] Date: Fri Jul 23 05:07:12 2010 Log: Merge revision 5127 to trunk to fix aliasing problem in inlined stores. This bug made wave load fail.
Review URL: http://codereview.chromium.org/2842066 http://code.google.com/p/v8/source/detail?r=5128 Modified: /trunk/src/ia32/codegen-ia32.cc /trunk/src/version.cc ======================================= --- /trunk/src/ia32/codegen-ia32.cc Wed Jul 21 04:05:19 2010 +++ /trunk/src/ia32/codegen-ia32.cc Fri Jul 23 05:07:12 2010 @@ -8917,15 +8917,20 @@ // Allocate scratch register for write barrier. Result scratch = allocator()->Allocate(); - ASSERT(scratch.is_valid() && - result.is_valid() && - receiver.is_valid() && - value.is_valid()); + ASSERT(scratch.is_valid()); // The write barrier clobbers all input registers, so spill the // receiver and the value. frame_->Spill(receiver.reg()); frame_->Spill(value.reg()); + + // If the receiver and the value share a register allocate a new + // register for the receiver. + if (receiver.reg().is(value.reg())) { + receiver = allocator()->Allocate(); + ASSERT(receiver.is_valid()); + __ mov(receiver.reg(), Operand(value.reg())); + } // Update the write barrier. To save instructions in the inlined // version we do not filter smis. ======================================= --- /trunk/src/version.cc Wed Jul 21 04:05:19 2010 +++ /trunk/src/version.cc Fri Jul 23 05:07:12 2010 @@ -35,7 +35,7 @@ #define MAJOR_VERSION 2 #define MINOR_VERSION 3 #define BUILD_NUMBER 2 -#define PATCH_LEVEL 0 +#define PATCH_LEVEL 1 #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
