Upgrade V8 to 5.1.281.57 DO NOT MERGE
FPIIM-449
Change-Id: Id981b686b4d587ac31697662eb98bb34be42ad90
(cherry picked from commit 3b9bc31999c9787eb726ecdbfd5796bfdec32a18)
diff --git a/test/unittests/heap/gc-idle-time-handler-unittest.cc b/test/unittests/heap/gc-idle-time-handler-unittest.cc
index 6413e36..99351b5 100644
--- a/test/unittests/heap/gc-idle-time-handler-unittest.cc
+++ b/test/unittests/heap/gc-idle-time-handler-unittest.cc
@@ -74,43 +74,6 @@
}
-TEST(GCIdleTimeHandler, EstimateMarkCompactTimeInitial) {
- size_t size = 100 * MB;
- size_t time = GCIdleTimeHandler::EstimateMarkCompactTime(size, 0);
- EXPECT_EQ(size / GCIdleTimeHandler::kInitialConservativeMarkCompactSpeed,
- time);
-}
-
-
-TEST(GCIdleTimeHandler, EstimateMarkCompactTimeNonZero) {
- size_t size = 100 * MB;
- size_t speed = 1 * MB;
- size_t time = GCIdleTimeHandler::EstimateMarkCompactTime(size, speed);
- EXPECT_EQ(size / speed, time);
-}
-
-
-TEST(GCIdleTimeHandler, EstimateMarkCompactTimeMax) {
- size_t size = std::numeric_limits<size_t>::max();
- size_t speed = 1;
- size_t time = GCIdleTimeHandler::EstimateMarkCompactTime(size, speed);
- EXPECT_EQ(GCIdleTimeHandler::kMaxMarkCompactTimeInMs, time);
-}
-
-
-TEST_F(GCIdleTimeHandlerTest, ShouldDoMarkCompact) {
- size_t idle_time_ms = GCIdleTimeHandler::kMaxScheduledIdleTime;
- EXPECT_TRUE(GCIdleTimeHandler::ShouldDoMarkCompact(idle_time_ms, 0, 0));
-}
-
-
-TEST_F(GCIdleTimeHandlerTest, DontDoMarkCompact) {
- size_t idle_time_ms = 1;
- EXPECT_FALSE(GCIdleTimeHandler::ShouldDoMarkCompact(
- idle_time_ms, kSizeOfObjects, kMarkingSpeed));
-}
-
-
TEST_F(GCIdleTimeHandlerTest, ShouldDoFinalIncrementalMarkCompact) {
size_t idle_time_ms = 16;
EXPECT_TRUE(GCIdleTimeHandler::ShouldDoFinalIncrementalMarkCompact(
diff --git a/test/unittests/heap/gc-tracer-unittest.cc b/test/unittests/heap/gc-tracer-unittest.cc
new file mode 100644
index 0000000..2bf4d03
--- /dev/null
+++ b/test/unittests/heap/gc-tracer-unittest.cc
@@ -0,0 +1,49 @@
+// Copyright 2014 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <cmath>
+#include <limits>
+
+#include "src/heap/gc-tracer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace v8 {
+namespace internal {
+
+TEST(GCTracer, AverageSpeed) {
+ RingBuffer<BytesAndDuration> buffer;
+ EXPECT_EQ(100 / 2,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(100, 2), 0));
+ buffer.Push(MakeBytesAndDuration(100, 8));
+ EXPECT_EQ(100 / 2,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(100, 2), 2));
+ EXPECT_EQ(200 / 10,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(100, 2), 3));
+ const int max_speed = 1024 * MB;
+ buffer.Reset();
+ buffer.Push(MakeBytesAndDuration(max_speed, 0.5));
+ EXPECT_EQ(max_speed,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(0, 0), 1));
+ const int min_speed = 1;
+ buffer.Reset();
+ buffer.Push(MakeBytesAndDuration(1, 10000));
+ EXPECT_EQ(min_speed,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(0, 0), 1));
+ buffer.Reset();
+ int sum = 0;
+ for (int i = 0; i < buffer.kSize; i++) {
+ sum += i + 1;
+ buffer.Push(MakeBytesAndDuration(i + 1, 1));
+ }
+ EXPECT_EQ(
+ sum * 1.0 / buffer.kSize,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(0, 0), buffer.kSize));
+ buffer.Push(MakeBytesAndDuration(100, 1));
+ EXPECT_EQ(
+ (sum * 1.0 - 1 + 100) / buffer.kSize,
+ GCTracer::AverageSpeed(buffer, MakeBytesAndDuration(0, 0), buffer.kSize));
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/test/unittests/heap/scavenge-job-unittest.cc b/test/unittests/heap/scavenge-job-unittest.cc
index dbd463c..91abbb1 100644
--- a/test/unittests/heap/scavenge-job-unittest.cc
+++ b/test/unittests/heap/scavenge-job-unittest.cc
@@ -71,7 +71,7 @@
EXPECT_FALSE(ScavengeJob::ReachedIdleAllocationLimit(
scavenge_speed, expected_size - 1, kNewSpaceCapacity));
EXPECT_TRUE(ScavengeJob::ReachedIdleAllocationLimit(
- scavenge_speed, expected_size, kNewSpaceCapacity));
+ scavenge_speed, expected_size + 1, kNewSpaceCapacity));
}
diff --git a/test/unittests/heap/slot-set-unittest.cc b/test/unittests/heap/slot-set-unittest.cc
index 3761889..26a26f0 100644
--- a/test/unittests/heap/slot-set-unittest.cc
+++ b/test/unittests/heap/slot-set-unittest.cc
@@ -55,9 +55,9 @@
set.Iterate([](Address slot_address) {
uintptr_t intaddr = reinterpret_cast<uintptr_t>(slot_address);
if (intaddr % 3 == 0) {
- return SlotSet::KEEP_SLOT;
+ return KEEP_SLOT;
} else {
- return SlotSet::REMOVE_SLOT;
+ return REMOVE_SLOT;
}
});
@@ -139,5 +139,33 @@
}
}
+TEST(TypedSlotSet, Iterate) {
+ TypedSlotSet set(0);
+ const int kDelta = 10000001;
+ int added = 0;
+ for (uint32_t i = 0; i < TypedSlotSet::kMaxOffset; i += kDelta) {
+ SlotType type = static_cast<SlotType>(i % NUMBER_OF_SLOT_TYPES);
+ set.Insert(type, i);
+ ++added;
+ }
+ int iterated = 0;
+ set.Iterate([&iterated, kDelta](SlotType type, Address addr) {
+ uint32_t i = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(addr));
+ EXPECT_EQ(i % NUMBER_OF_SLOT_TYPES, static_cast<uint32_t>(type));
+ EXPECT_EQ(0, i % kDelta);
+ ++iterated;
+ return i % 2 == 0 ? KEEP_SLOT : REMOVE_SLOT;
+ });
+ EXPECT_EQ(added, iterated);
+ iterated = 0;
+ set.Iterate([&iterated](SlotType type, Address addr) {
+ uint32_t i = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(addr));
+ EXPECT_EQ(0, i % 2);
+ ++iterated;
+ return KEEP_SLOT;
+ });
+ EXPECT_EQ(added / 2, iterated);
+}
+
} // namespace internal
} // namespace v8