1 // Copyright 2019 The Chromium 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 #include "third_party/blink/renderer/platform/heap/blink_gc.h"
6 
7 #include "base/logging.h"
8 
9 namespace blink {
10 
ToString(BlinkGC::GCReason reason)11 const char* BlinkGC::ToString(BlinkGC::GCReason reason) {
12   switch (reason) {
13     case BlinkGC::GCReason::kPreciseGC:
14       return "PreciseGC";
15     case BlinkGC::GCReason::kConservativeGC:
16       return "ConservativeGC";
17     case BlinkGC::GCReason::kForcedGCForTesting:
18       return "ForcedGCForTesting";
19     case BlinkGC::GCReason::kMemoryPressureGC:
20       return "MemoryPressureGC";
21     case BlinkGC::GCReason::kThreadTerminationGC:
22       return "ThreadTerminationGC";
23     case BlinkGC::GCReason::kIncrementalV8FollowupGC:
24       return "IncrementalV8FollowupGC";
25     case BlinkGC::GCReason::kUnifiedHeapGC:
26       return "UnifiedHeapGC";
27     case BlinkGC::GCReason::kUnifiedHeapForMemoryReductionGC:
28       return "UnifiedHeapForMemoryReductionGC";
29   }
30   IMMEDIATE_CRASH();
31 }
32 
ToString(BlinkGC::MarkingType type)33 const char* BlinkGC::ToString(BlinkGC::MarkingType type) {
34   switch (type) {
35     case BlinkGC::MarkingType::kAtomicMarking:
36       return "AtomicMarking";
37     case BlinkGC::MarkingType::kIncrementalAndConcurrentMarking:
38       return "IncrementalAndConcurrentMarking";
39   }
40   IMMEDIATE_CRASH();
41 }
42 
ToString(BlinkGC::SweepingType type)43 const char* BlinkGC::ToString(BlinkGC::SweepingType type) {
44   switch (type) {
45     case BlinkGC::SweepingType::kConcurrentAndLazySweeping:
46       return "ConcurrentAndLazySweeping";
47     case BlinkGC::SweepingType::kEagerSweeping:
48       return "EagerSweeping";
49   }
50   IMMEDIATE_CRASH();
51 }
52 
ToString(BlinkGC::StackState stack_state)53 const char* BlinkGC::ToString(BlinkGC::StackState stack_state) {
54   switch (stack_state) {
55     case BlinkGC::kNoHeapPointersOnStack:
56       return "NoHeapPointersOnStack";
57     case BlinkGC::kHeapPointersOnStack:
58       return "HeapPointersOnStack";
59   }
60   IMMEDIATE_CRASH();
61 }
62 
ToString(BlinkGC::ArenaIndices arena_index)63 const char* BlinkGC::ToString(BlinkGC::ArenaIndices arena_index) {
64 #define ArenaCase(name)     \
65   case k##name##ArenaIndex: \
66     return "" #name "Arena";
67 
68   switch (arena_index) {
69     FOR_EACH_ARENA(ArenaCase)
70 
71     case BlinkGC::ArenaIndices::kNumberOfArenas:
72       IMMEDIATE_CRASH();
73   }
74   IMMEDIATE_CRASH();
75 
76 #undef ArenaCase
77 }
78 
79 }  // namespace blink
80