Revision: 9825
Author:   [email protected]
Date:     Fri Oct 28 00:45:20 2011
Log:      Version 3.7.3

Included a workaround for jslint issue (V8 issue 1789).
Review URL: http://codereview.chromium.org/8414018
http://code.google.com/p/v8/source/detail?r=9825

Modified:
 /trunk/ChangeLog
 /trunk/src/ia32/codegen-ia32.cc
 /trunk/src/ia32/full-codegen-ia32.cc
 /trunk/src/version.cc
 /trunk/src/x64/codegen-x64.cc

=======================================
--- /trunk/ChangeLog    Thu Oct 27 07:20:17 2011
+++ /trunk/ChangeLog    Fri Oct 28 00:45:20 2011
@@ -1,3 +1,9 @@
+2011-10-28: Version 3.7.3
+
+        Slight deoptimization as a workaround for issue with jslint: Issue
+        1789.
+
+
 2011-10-27: Version 3.7.2

         Fix bug in deoptimization.  Known issue with jslint: Issue 1789.
=======================================
--- /trunk/src/ia32/codegen-ia32.cc     Thu Oct 27 00:38:48 2011
+++ /trunk/src/ia32/codegen-ia32.cc     Fri Oct 28 00:45:20 2011
@@ -355,9 +355,7 @@

   // Convert and copy elements
   // esi: source FixedArray
-  // edi: number of elements to convert/copy
   __ bind(&loop);
-  __ sub(edi, Immediate(Smi::FromInt(1)));
   __ mov(ebx, FieldOperand(esi, edi, times_2, FixedArray::kHeaderSize));
   // ebx: current element from source
   // edi: index of current element
@@ -390,8 +388,8 @@
   }

   __ bind(&entry);
-  __ test(edi, edi);
-  __ j(not_zero, &loop);
+  __ sub(edi, Immediate(Smi::FromInt(1)));
+  __ j(not_sign, &loop);

   __ pop(ebx);
   __ pop(eax);
@@ -454,7 +452,6 @@
   // edi: source FixedDoubleArray
   // eax: destination FixedArray
   __ bind(&loop);
-  __ sub(ebx, Immediate(Smi::FromInt(1)));
   // ebx: index of current element (smi-tagged)
uint32_t offset = FixedDoubleArray::kHeaderSize + sizeof(kHoleNanLower32); __ cmp(FieldOperand(edi, ebx, times_4, offset), Immediate(kHoleNanUpper32));
@@ -490,8 +487,8 @@
          masm->isolate()->factory()->the_hole_value());

   __ bind(&entry);
-  __ test(ebx, ebx);
-  __ j(not_zero, &loop);
+  __ sub(ebx, Immediate(Smi::FromInt(1)));
+  __ j(not_sign, &loop);

   __ pop(ebx);
   __ pop(edx);
=======================================
--- /trunk/src/ia32/full-codegen-ia32.cc        Thu Oct 27 00:38:48 2011
+++ /trunk/src/ia32/full-codegen-ia32.cc        Fri Oct 28 00:45:20 2011
@@ -2185,7 +2185,9 @@
   SetSourcePosition(expr->position());

   // Record call targets in unoptimized code, but not in the snapshot.
-  bool record_call_target = !Serializer::enabled();
+  // TODO(1789): Reenable temporarily disabled recording CallFunctionStub
+  // when the issue is fixed.
+  bool record_call_target = false && !Serializer::enabled();
   if (record_call_target) {
     flags = static_cast<CallFunctionFlags>(flags | RECORD_CALL_TARGET);
   }
=======================================
--- /trunk/src/version.cc       Thu Oct 27 07:20:17 2011
+++ /trunk/src/version.cc       Fri Oct 28 00:45:20 2011
@@ -34,7 +34,7 @@
 // cannot be changed without changing the SCons build script.
 #define MAJOR_VERSION     3
 #define MINOR_VERSION     7
-#define BUILD_NUMBER      2
+#define BUILD_NUMBER      3
 #define PATCH_LEVEL       0
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
=======================================
--- /trunk/src/x64/codegen-x64.cc       Thu Oct 27 00:38:48 2011
+++ /trunk/src/x64/codegen-x64.cc       Fri Oct 28 00:45:20 2011
@@ -243,7 +243,6 @@

   // Conversion loop.
   __ bind(&loop);
-  __ decq(r9);
   __ movq(rbx,
           FieldOperand(r8, r9, times_8, FixedArray::kHeaderSize));
   // r9 : current element's index
@@ -257,8 +256,8 @@
   __ bind(&convert_hole);
__ movq(FieldOperand(r14, r9, times_8, FixedDoubleArray::kHeaderSize), r15);
   __ bind(&entry);
-  __ testq(r9, r9);
-  __ j(not_zero, &loop);
+  __ decq(r9);
+  __ j(not_sign, &loop);
 }


@@ -301,7 +300,6 @@

   // Box doubles into heap numbers.
   __ bind(&loop);
-  __ decq(r9);
   __ movq(r14, FieldOperand(r8,
                             r9,
                             times_pointer_size,
@@ -338,8 +336,8 @@
           rdi);

   __ bind(&entry);
-  __ testq(r9, r9);
-  __ j(not_zero, &loop);
+  __ decq(r9);
+  __ j(not_sign, &loop);

   // Set transitioned map.
   __ movq(FieldOperand(rdx, HeapObject::kMapOffset), rbx);

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to