Commit 6bbf2dfa authored by Milad Fa's avatar Milad Fa Committed by Commit Bot

cppgc: fix unittest compilation on gcc 8

MatcherBase::buffer_ defined under "gtest/gtest-matchers.h"
is a union of sizes that may be too large for Config object
currently being passed to it. This might result in `buffer_` to remain
uninitialized.

More information about the error can be found
in the comment section of this CL: https://crrev.com/c/2228887

Change-Id: Ibeef1189a7db8056f00cc85dbccec506d345a7eb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2854278Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Milad Fa <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/master@{#74235}
parent 833fae24
...@@ -69,7 +69,10 @@ TEST(HeapGrowingTest, ConservativeGCInvoked) { ...@@ -69,7 +69,10 @@ TEST(HeapGrowingTest, ConservativeGCInvoked) {
HeapGrowing growing(&gc, &stats_collector, constraints, HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent, cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent); cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
EXPECT_CALL(gc, CollectGarbage(::testing::_)); EXPECT_CALL(
gc, CollectGarbage(::testing::Field(
&GarbageCollector::Config::stack_state,
GarbageCollector::Config::StackState::kMayContainHeapPointers)));
FakeAllocate(&stats_collector, 100 * kMB); FakeAllocate(&stats_collector, 100 * kMB);
} }
...@@ -85,7 +88,10 @@ TEST(HeapGrowingTest, InitialHeapSize) { ...@@ -85,7 +88,10 @@ TEST(HeapGrowingTest, InitialHeapSize) {
cppgc::Heap::MarkingType::kIncrementalAndConcurrent, cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent); cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
FakeAllocate(&stats_collector, kObjectSize - 1); FakeAllocate(&stats_collector, kObjectSize - 1);
EXPECT_CALL(gc, CollectGarbage(::testing::_)); EXPECT_CALL(
gc, CollectGarbage(::testing::Field(
&GarbageCollector::Config::stack_state,
GarbageCollector::Config::StackState::kMayContainHeapPointers)));
FakeAllocate(&stats_collector, kObjectSize); FakeAllocate(&stats_collector, kObjectSize);
} }
...@@ -135,7 +141,11 @@ TEST(HeapGrowingTest, IncrementalGCStarted) { ...@@ -135,7 +141,11 @@ TEST(HeapGrowingTest, IncrementalGCStarted) {
HeapGrowing growing(&gc, &stats_collector, constraints, HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent, cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent); cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
EXPECT_CALL(gc, CollectGarbage(::testing::_)).Times(0); EXPECT_CALL(
gc, CollectGarbage(::testing::Field(
&GarbageCollector::Config::stack_state,
GarbageCollector::Config::StackState::kMayContainHeapPointers)))
.Times(0);
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_)); EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_));
// Allocate 1 byte less the limit for atomic gc to trigger incremental gc. // Allocate 1 byte less the limit for atomic gc to trigger incremental gc.
FakeAllocate(&stats_collector, growing.limit_for_atomic_gc() - 1); FakeAllocate(&stats_collector, growing.limit_for_atomic_gc() - 1);
...@@ -149,13 +159,20 @@ TEST(HeapGrowingTest, IncrementalGCFinalized) { ...@@ -149,13 +159,20 @@ TEST(HeapGrowingTest, IncrementalGCFinalized) {
HeapGrowing growing(&gc, &stats_collector, constraints, HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent, cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent); cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
EXPECT_CALL(gc, CollectGarbage(::testing::_)).Times(0); EXPECT_CALL(
gc, CollectGarbage(::testing::Field(
&GarbageCollector::Config::stack_state,
GarbageCollector::Config::StackState::kMayContainHeapPointers)))
.Times(0);
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_)); EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_));
// Allocate 1 byte less the limit for atomic gc to trigger incremental gc. // Allocate 1 byte less the limit for atomic gc to trigger incremental gc.
size_t bytes_for_incremental_gc = growing.limit_for_atomic_gc() - 1; size_t bytes_for_incremental_gc = growing.limit_for_atomic_gc() - 1;
FakeAllocate(&stats_collector, bytes_for_incremental_gc); FakeAllocate(&stats_collector, bytes_for_incremental_gc);
::testing::Mock::VerifyAndClearExpectations(&gc); ::testing::Mock::VerifyAndClearExpectations(&gc);
EXPECT_CALL(gc, CollectGarbage(::testing::_)); EXPECT_CALL(
gc, CollectGarbage(::testing::Field(
&GarbageCollector::Config::stack_state,
GarbageCollector::Config::StackState::kMayContainHeapPointers)));
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_)).Times(0); EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_)).Times(0);
// Allocate the rest needed to trigger atomic gc (). // Allocate the rest needed to trigger atomic gc ().
FakeAllocate(&stats_collector, StatsCollector::kAllocationThresholdBytes); FakeAllocate(&stats_collector, StatsCollector::kAllocationThresholdBytes);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment