blob: d88fcdcc95706f90c6587e8aafcd839cb6f39467 [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 Gampe8cf9cb32017-07-19 09:28:38 -070022#include "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";
Richard Uhlerda1da8a2017-05-16 13:37:32 +000036 case kGcCauseForNativeAllocBlocking: return "NativeAllocBlocking";
Mathieu Chartier89a201e2014-05-02 10:27:26 -070037 case kGcCauseCollectorTransition: return "CollectorTransition";
38 case kGcCauseDisableMovingGc: return "DisableMovingGc";
Zuo Wangf37a88b2014-07-10 04:26:41 -070039 case kGcCauseHomogeneousSpaceCompact: return "HomogeneousSpaceCompact";
Mathieu Chartier89a201e2014-05-02 10:27:26 -070040 case kGcCauseTrim: return "HeapTrim";
Mathieu Chartieraa516822015-10-02 15:53:37 -070041 case kGcCauseInstrumentation: return "Instrumentation";
Mathieu Chartier61d2b2d2016-02-04 13:31:46 -080042 case kGcCauseAddRemoveAppImageSpace: return "AddRemoveAppImageSpace";
Hiroshi Yamauchi8f95cf32016-04-19 11:14:06 -070043 case kGcCauseDebugger: return "Debugger";
Mathieu Chartier1b1e31f2016-05-19 10:13:04 -070044 case kGcCauseClassLinker: return "ClassLinker";
Nicolas Geoffraycf48fa02016-07-30 22:49:11 +010045 case kGcCauseJitCodeCache: return "JitCodeCache";
Andreas Gampe41ba35d2016-10-27 11:50:18 -070046 case kGcCauseAddRemoveSystemWeakHolder: return "SystemWeakHolder";
Mathieu Chartierecc82302017-02-16 10:20:12 -080047 case kGcCauseHprof: return "Hprof";
Mathieu Chartiere8649c72017-03-03 18:02:18 -080048 case kGcCauseGetObjectsAllocated: return "ObjectsAllocated";
Mathieu Chartier39100372017-05-17 13:14:10 -070049 case kGcCauseProfileSaver: return "ProfileSaver";
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080050 }
Andreas Gampe41ba35d2016-10-27 11:50:18 -070051 LOG(FATAL) << "Unreachable";
52 UNREACHABLE();
Hiroshi Yamauchi6f4ffe42014-01-13 12:30:44 -080053}
54
55std::ostream& operator<<(std::ostream& os, const GcCause& gc_cause) {
56 os << PrettyCause(gc_cause);
57 return os;
58}
59
60} // namespace gc
61} // namespace art