Revision: 19018
Author:   [email protected]
Date:     Mon Feb  3 07:23:16 2014 UTC
Log:      Version 3.24.30 (based on bleeding_edge revision r19017)

Performance and stability improvements on all platforms.
http://code.google.com/p/v8/source/detail?r=19018

Modified:
 /trunk/ChangeLog
 /trunk/src/arm/code-stubs-arm.cc
 /trunk/src/heap-inl.h
 /trunk/src/mark-compact.cc
 /trunk/src/mips/code-stubs-mips.cc
 /trunk/src/version.cc
 /trunk/test/mjsunit/mjsunit.status

=======================================
--- /trunk/ChangeLog    Sat Feb  1 08:54:43 2014 UTC
+++ /trunk/ChangeLog    Mon Feb  3 07:23:16 2014 UTC
@@ -1,3 +1,8 @@
+2014-02-03: Version 3.24.30
+
+        Performance and stability improvements on all platforms.
+
+
 2014-02-01: Version 3.24.29

         Performance and stability improvements on all platforms.
=======================================
--- /trunk/src/arm/code-stubs-arm.cc    Sat Feb  1 08:54:43 2014 UTC
+++ /trunk/src/arm/code-stubs-arm.cc    Mon Feb  3 07:23:16 2014 UTC
@@ -3111,26 +3111,23 @@
   if (CallAsMethod()) {
     if (NeedsChecks()) {
       // Do not transform the receiver for strict mode functions.
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); - __ ldr(r3, FieldMemOperand(r2, SharedFunctionInfo::kCompilerHintsOffset));
-      __ tst(r3, Operand(1 << (SharedFunctionInfo::kStrictModeFunction +
+ __ ldr(r3, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); + __ ldr(r4, FieldMemOperand(r3, SharedFunctionInfo::kCompilerHintsOffset));
+      __ tst(r4, Operand(1 << (SharedFunctionInfo::kStrictModeFunction +
                                kSmiTagSize)));
       __ b(ne, &cont);

// Do not transform the receiver for native (Compilerhints already in r3). - __ tst(r3, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize))); + __ tst(r4, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize)));
       __ b(ne, &cont);
     }

     // Compute the receiver in non-strict mode.
-    __ ldr(r2, MemOperand(sp, argc_ * kPointerSize));
+    __ ldr(r3, MemOperand(sp, argc_ * kPointerSize));

     if (NeedsChecks()) {
-      // r0: actual number of arguments
-      // r1: function
-      // r2: first argument
-      __ JumpIfSmi(r2, &wrap);
-      __ CompareObjectType(r2, r3, r3, FIRST_SPEC_OBJECT_TYPE);
+      __ JumpIfSmi(r3, &wrap);
+      __ CompareObjectType(r3, r4, r4, FIRST_SPEC_OBJECT_TYPE);
       __ b(lt, &wrap);
     } else {
       __ jmp(&wrap);
@@ -3180,8 +3177,7 @@
     __ bind(&wrap);
     // Wrap the receiver and patch it back onto the stack.
     { FrameScope frame_scope(masm, StackFrame::INTERNAL);
-      __ push(r1);
-      __ push(r2);
+      __ Push(r1, r3);
       __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION);
       __ pop(r1);
     }
=======================================
--- /trunk/src/heap-inl.h       Thu Jan 30 01:05:27 2014 UTC
+++ /trunk/src/heap-inl.h       Mon Feb  3 07:23:16 2014 UTC
@@ -488,7 +488,7 @@

 void Heap::UpdateAllocationSiteFeedback(HeapObject* object) {
   Heap* heap = object->GetHeap();
-  ASSERT(heap->InNewSpace(object));
+  ASSERT(heap->InFromSpace(object));

   if (!FLAG_allocation_site_pretenuring ||
       !AllocationSite::CanTrack(object->map()->instance_type())) return;
=======================================
--- /trunk/src/mark-compact.cc  Fri Jan 24 01:05:19 2014 UTC
+++ /trunk/src/mark-compact.cc  Mon Feb  3 07:23:16 2014 UTC
@@ -3006,6 +3006,20 @@
   // live objects.
   new_space->Flip();
   new_space->ResetAllocationInfo();
+
+  // UpdateAllocationSiteFeedback expects that only objects at the end of
+  // newspace are not guaranteed to have the next word clear. It relies on
+ // FromSpacePageHigh to check whether an object is at the end of newspace. + // However, it is possible that newspace is being evacuated without it being + // full, e.g. to make the heap iterable, hence top will not equal high. In
+  // that case, fill up newspace with a filler to ensure the next word is
+  // cleared.
+  if (FLAG_allocation_site_pretenuring &&
+      from_top < new_space->FromSpacePageHigh()) {
+    Address limit = NewSpacePage::FromLimit(from_top)->area_end();
+    int remaining_in_page = static_cast<int>(limit - from_top);
+    heap()->CreateFillerObjectAt(from_top, remaining_in_page);
+  }

   int survivors_size = 0;

=======================================
--- /trunk/src/mips/code-stubs-mips.cc  Sat Feb  1 08:54:43 2014 UTC
+++ /trunk/src/mips/code-stubs-mips.cc  Mon Feb  3 07:23:16 2014 UTC
@@ -3257,25 +3257,22 @@
   if (CallAsMethod()) {
     if (NeedsChecks()) {
// Do not transform the receiver for strict mode functions and natives. - __ lw(a2, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); - __ lw(a3, FieldMemOperand(a2, SharedFunctionInfo::kCompilerHintsOffset)); + __ lw(a3, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); + __ lw(t0, FieldMemOperand(a3, SharedFunctionInfo::kCompilerHintsOffset));
       int32_t strict_mode_function_mask =
           1 <<  (SharedFunctionInfo::kStrictModeFunction + kSmiTagSize);
int32_t native_mask = 1 << (SharedFunctionInfo::kNative + kSmiTagSize);
-      __ And(at, a3, Operand(strict_mode_function_mask | native_mask));
+      __ And(at, t0, Operand(strict_mode_function_mask | native_mask));
       __ Branch(&cont, ne, at, Operand(zero_reg));
     }

     // Compute the receiver in non-strict mode.
-    __ lw(a2, MemOperand(sp, argc_ * kPointerSize));
+    __ lw(a3, MemOperand(sp, argc_ * kPointerSize));

     if (NeedsChecks()) {
-      // a0: actual number of arguments
-      // a1: function
-      // a2: first argument
-      __ JumpIfSmi(a2, &wrap);
-      __ GetObjectType(a2, a3, a3);
-      __ Branch(&wrap, lt, a3, Operand(FIRST_SPEC_OBJECT_TYPE));
+      __ JumpIfSmi(a3, &wrap);
+      __ GetObjectType(a3, t0, t0);
+      __ Branch(&wrap, lt, t0, Operand(FIRST_SPEC_OBJECT_TYPE));
     } else {
       __ jmp(&wrap);
     }
@@ -3323,7 +3320,7 @@
     __ bind(&wrap);
     // Wrap the receiver and patch it back onto the stack.
     { FrameScope frame_scope(masm, StackFrame::INTERNAL);
-      __ Push(a1, a2);
+      __ Push(a1, a3);
       __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION);
       __ pop(a1);
     }
=======================================
--- /trunk/src/version.cc       Sat Feb  1 08:54:43 2014 UTC
+++ /trunk/src/version.cc       Mon Feb  3 07:23:16 2014 UTC
@@ -34,7 +34,7 @@
 // system so their names cannot be changed without changing the scripts.
 #define MAJOR_VERSION     3
 #define MINOR_VERSION     24
-#define BUILD_NUMBER      29
+#define BUILD_NUMBER      30
 #define PATCH_LEVEL       0
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
=======================================
--- /trunk/test/mjsunit/mjsunit.status  Sat Feb  1 08:54:43 2014 UTC
+++ /trunk/test/mjsunit/mjsunit.status  Mon Feb  3 07:23:16 2014 UTC
@@ -116,8 +116,8 @@
   'regress/regress-336820': [PASS, FAIL],

   # BUG(v8:2989). PASS/FAIL on linux32 because crankshaft is turned off for
-  # nosse2.
- 'regress/regress-2989': [FAIL, NO_VARIANTS, ['system == linux and arch == ia32', PASS]],
+  # nosse2. Also for arm novfp3.
+ 'regress/regress-2989': [FAIL, NO_VARIANTS, ['system == linux and arch == ia32 or arch == arm and simulator == True', PASS]],
 }],  # ALWAYS

##############################################################################

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to