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.