Reviewers: Rico, Description: Merge revision 5127 to trunk to fix aliasing problem in inlined stores. This bug made wave load fail.
Please review this at http://codereview.chromium.org/2842066/show SVN Base: http://v8.googlecode.com/svn/trunk/ Affected files: M src/ia32/codegen-ia32.cc M src/version.cc Index: src/ia32/codegen-ia32.cc =================================================================== --- src/ia32/codegen-ia32.cc (revision 5127) +++ src/ia32/codegen-ia32.cc (working copy) @@ -8917,16 +8917,21 @@ // 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. Label skip_write_barrier; Index: src/version.cc =================================================================== --- src/version.cc (revision 5127) +++ src/version.cc (working copy) @@ -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
