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

Reply via email to