Line data Source code
1 : // Copyright 2017 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #ifndef V8_HEAP_STRESS_SCAVENGE_OBSERVER_H_
6 : #define V8_HEAP_STRESS_SCAVENGE_OBSERVER_H_
7 :
8 : #include "src/heap/heap.h"
9 :
10 : namespace v8 {
11 : namespace internal {
12 :
13 0 : class StressScavengeObserver : public AllocationObserver {
14 : public:
15 : explicit StressScavengeObserver(Heap& heap);
16 :
17 : void Step(int bytes_allocated, Address soon_object, size_t size) override;
18 :
19 : bool HasRequestedGC() const;
20 : void RequestedGCDone();
21 :
22 : // The maximum percent of the newspace capacity reached. This is tracked when
23 : // specyfing --fuzzer-gc-analysis.
24 : double MaxNewSpaceSizeReached() const;
25 :
26 : private:
27 : Heap& heap_;
28 : int limit_percentage_;
29 : bool has_requested_gc_;
30 :
31 : double max_new_space_size_reached_;
32 :
33 : int NextLimit(int min = 0);
34 : };
35 :
36 : } // namespace internal
37 : } // namespace v8
38 :
39 : #endif // V8_HEAP_STRESS_SCAVENGE_OBSERVER_H_
|