16f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi/* 26f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * Copyright (C) 2014 The Android Open Source Project 36f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * 46f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * Licensed under the Apache License, Version 2.0 (the "License"); 56f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * you may not use this file except in compliance with the License. 66f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * You may obtain a copy of the License at 76f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * 86f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * http://www.apache.org/licenses/LICENSE-2.0 96f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * 106f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * Unless required by applicable law or agreed to in writing, software 116f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * distributed under the License is distributed on an "AS IS" BASIS, 126f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * See the License for the specific language governing permissions and 146f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi * limitations under the License. 156f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi */ 166f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 176f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi#include "gc_cause.h" 186f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi#include "globals.h" 196f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi#include "base/logging.h" 206f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 216f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi#include <ostream> 226f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 236f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchinamespace art { 246f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchinamespace gc { 256f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 266f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchiconst char* PrettyCause(GcCause cause) { 276f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi switch (cause) { 286f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi case kGcCauseForAlloc: return "Alloc"; 296f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi case kGcCauseBackground: return "Background"; 306f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi case kGcCauseExplicit: return "Explicit"; 316f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi case kGcCauseForNativeAlloc: return "NativeAlloc"; 3289a201e599da95d88590c7b4d069b76735e20fa8Mathieu Chartier case kGcCauseCollectorTransition: return "CollectorTransition"; 3389a201e599da95d88590c7b4d069b76735e20fa8Mathieu Chartier case kGcCauseDisableMovingGc: return "DisableMovingGc"; 34f37a88b8e6db6c587fa449a12e40cb46be1689fcZuo Wang case kGcCauseHomogeneousSpaceCompact: return "HomogeneousSpaceCompact"; 3589a201e599da95d88590c7b4d069b76735e20fa8Mathieu Chartier case kGcCauseTrim: return "HeapTrim"; 366f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi default: 376f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi LOG(FATAL) << "Unreachable"; 382c4257be8191c5eefde744e8965fcefc80a0a97dIan Rogers UNREACHABLE(); 396f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi } 406f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi} 416f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 426f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchistd::ostream& operator<<(std::ostream& os, const GcCause& gc_cause) { 436f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi os << PrettyCause(gc_cause); 446f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi return os; 456f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi} 466f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi 476f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi} // namespace gc 486f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi} // namespace art 49