blob: 8b4bac2f8d6c446504ab70a9a9bbdb54d7fc06d3 [file] [log] [blame]
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -08001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include "gc_cause.h"
Andreas Gampe57943812017-12-06 21:39:13 -080018
19#include <android-base/logging.h>
20
21#include "base/macros.h"
Andreas Gampe5a0430d2019-01-04 14:33:57 -080022#include "runtime_globals.h"
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080023
24#include <ostream>
25
26namespace art {
27namespace gc {
28
29const char* PrettyCause(GcCause cause) {
30 switch (cause) {
Mathieu Chartier40112dd2017-06-26 17:49:09 -070031 case kGcCauseNone: return "None";
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080032 case kGcCauseForAlloc: return "Alloc";
33 case kGcCauseBackground: return "Background";
34 case kGcCauseExplicit: return "Explicit";
35 case kGcCauseForNativeAlloc: return "NativeAlloc";
Mathieu Chartier89a201e2014-05-02 10:27:26 -070036 case kGcCauseCollectorTransition: return "CollectorTransition";
37 case kGcCauseDisableMovingGc: return "DisableMovingGc";
Zuo Wangf37a88b2014-07-10 04:26:41 -070038 case kGcCauseHomogeneousSpaceCompact: return "HomogeneousSpaceCompact";
Mathieu Chartier89a201e2014-05-02 10:27:26 -070039 case kGcCauseTrim: return "HeapTrim";
Mathieu Chartieraa516822015-10-02 15:53:37 -070040 case kGcCauseInstrumentation: return "Instrumentation";
Mathieu Chartier61d2b2d2016-02-04 13:31:46 -080041 case kGcCauseAddRemoveAppImageSpace: return "AddRemoveAppImageSpace";
Hiroshi Yamauchi8f95cf32016-04-19 11:14:06 -070042 case kGcCauseDebugger: return "Debugger";
Mathieu Chartier1b1e31f2016-05-19 10:13:04 -070043 case kGcCauseClassLinker: return "ClassLinker";
Nicolas Geoffraycf48fa02016-07-30 22:49:11 +010044 case kGcCauseJitCodeCache: return "JitCodeCache";
Andreas Gampe41ba35d2016-10-27 11:50:18 -070045 case kGcCauseAddRemoveSystemWeakHolder: return "SystemWeakHolder";
Mathieu Chartierecc82302017-02-16 10:20:12 -080046 case kGcCauseHprof: return "Hprof";
Mathieu Chartiere8649c72017-03-03 18:02:18 -080047 case kGcCauseGetObjectsAllocated: return "ObjectsAllocated";
Mathieu Chartier39100372017-05-17 13:14:10 -070048 case kGcCauseProfileSaver: return "ProfileSaver";
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080049 }
Andreas Gampe41ba35d2016-10-27 11:50:18 -070050 LOG(FATAL) << "Unreachable";
51 UNREACHABLE();
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080052}
53
54std::ostream& operator<<(std::ostream& os, const GcCause& gc_cause) {
55 os << PrettyCause(gc_cause);
56 return os;
57}
58
59} // namespace gc
60} // namespace art