gc_cause.cc revision 89a201e599da95d88590c7b4d069b76735e20fa8
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";
3489a201e599da95d88590c7b4d069b76735e20fa8Mathieu Chartier    case kGcCauseTrim: return "HeapTrim";
356f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi    default:
366f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi      LOG(FATAL) << "Unreachable";
376f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi  }
386f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi  return "";
396f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi}
406f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi
416f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchistd::ostream& operator<<(std::ostream& os, const GcCause& gc_cause) {
426f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi  os << PrettyCause(gc_cause);
436f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi  return os;
446f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi}
456f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi
466f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi}  // namespace gc
476f4ffe41649f1e6381e8cda087ad3749206806e5Hiroshi Yamauchi}  // namespace art
48