-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathGCEnum.h
92 lines (81 loc) · 2.58 KB
/
GCEnum.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* vim: set ts=8 sts=2 et sw=2 tw=80:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* GC-internal enum definitions.
*/
#ifndef gc_GCEnum_h
#define gc_GCEnum_h
#include <stdint.h>
namespace js {
namespace gc {
// Mark colors to pass to markIfUnmarked.
enum class MarkColor : uint32_t { Black = 0, Gray };
// The phases of an incremental GC.
#define GCSTATES(D) \
D(NotActive) \
D(MarkRoots) \
D(Mark) \
D(Sweep) \
D(Finalize) \
D(Compact) \
D(Decommit) \
D(Finish)
enum class State {
#define MAKE_STATE(name) name,
GCSTATES(MAKE_STATE)
#undef MAKE_STATE
};
// Reasons we reset an ongoing incremental GC or perform a non-incremental GC.
#define GC_ABORT_REASONS(D) \
D(None, 0) \
D(NonIncrementalRequested, 1) \
D(AbortRequested, 2) \
D(Unused1, 3) \
D(IncrementalDisabled, 4) \
D(ModeChange, 5) \
D(MallocBytesTrigger, 6) \
D(GCBytesTrigger, 7) \
D(ZoneChange, 8) \
D(CompartmentRevived, 9) \
D(GrayRootBufferingFailed, 10)
enum class AbortReason {
#define MAKE_REASON(name, num) name = num,
GC_ABORT_REASONS(MAKE_REASON)
#undef MAKE_REASON
};
#define JS_FOR_EACH_ZEAL_MODE(D) \
D(RootsChange, 1) \
D(Alloc, 2) \
D(VerifierPre, 4) \
D(GenerationalGC, 7) \
D(YieldBeforeMarking, 8) \
D(YieldBeforeSweeping, 9) \
D(IncrementalMultipleSlices, 10) \
D(IncrementalMarkingValidator, 11) \
D(ElementsBarrier, 12) \
D(CheckHashTablesOnMinorGC, 13) \
D(Compact, 14) \
D(CheckHeapAfterGC, 15) \
D(CheckNursery, 16) \
D(YieldBeforeSweepingAtoms, 17) \
D(CheckGrayMarking, 18) \
D(YieldBeforeSweepingCaches, 19) \
D(YieldBeforeSweepingTypes, 20) \
D(YieldBeforeSweepingObjects, 21) \
D(YieldBeforeSweepingNonObjects, 22) \
D(YieldBeforeSweepingShapeTrees, 23) \
D(CheckWeakMapMarking, 24) \
D(YieldWhileGrayMarking, 25)
enum class ZealMode {
#define ZEAL_MODE(name, value) name = value,
JS_FOR_EACH_ZEAL_MODE(ZEAL_MODE)
#undef ZEAL_MODE
Count,
Limit = Count - 1
};
} /* namespace gc */
} /* namespace js */
#endif /* gc_GCEnum_h */