diff src/share/vm/gc_interface/gcCause.cpp @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children c18cbe5936b8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/gc_interface/gcCause.cpp	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+# include "incls/_precompiled.incl"
+# include "incls/_gcCause.cpp.incl"
+
+const char* GCCause::to_string(GCCause::Cause cause) {
+  switch (cause) {
+    case _java_lang_system_gc:
+      return "System.gc()";
+
+    case _full_gc_alot:
+      return "FullGCAlot";
+
+    case _scavenge_alot:
+      return "ScavengeAlot";
+
+    case _allocation_profiler:
+      return "Allocation Profiler";
+
+    case _jvmti_force_gc:
+      return "JvmtiEnv ForceGarbageCollection";
+
+    case _no_gc:
+      return "No GC";
+
+    case _allocation_failure:
+      return "Allocation Failure";
+
+    case _gc_locker:
+      return "GCLocker Initiated GC";
+
+    case _heap_inspection:
+      return "Heap Inspection Initiated GC";
+
+    case _heap_dump:
+      return "Heap Dump Initiated GC";
+
+    case _tenured_generation_full:
+      return "Tenured Generation Full";
+
+    case _permanent_generation_full:
+      return "Permanent Generation Full";
+
+    case _cms_generation_full:
+      return "CMS Generation Full";
+
+    case _cms_initial_mark:
+      return "CMS Initial Mark";
+
+    case _cms_final_remark:
+      return "CMS Final Remark";
+
+    case _old_generation_expanded_on_last_scavenge:
+      return "Old Generation Expanded On Last Scavenge";
+
+    case _old_generation_too_full_to_scavenge:
+      return "Old Generation Too Full To Scavenge";
+
+    case _last_ditch_collection:
+      return "Last ditch collection";
+
+    case _last_gc_cause:
+      return "ILLEGAL VALUE - last gc cause - ILLEGAL VALUE";
+
+    default:
+      return "unknown GCCause";
+  }
+  ShouldNotReachHere();
+}
+
+#ifndef PRODUCT
+
+bool GCCause::is_for_full_collection(GCCause::Cause cause) {
+  bool result;
+
+  // There are more GCCause::Cause types than listed here.
+  // For brevity, we list only those that cause full collections.
+  switch (cause) {
+    case _allocation_failure:
+    case _tenured_generation_full:
+    case _permanent_generation_full:
+    case _cms_generation_full:
+    case _last_ditch_collection:
+      result = true;
+      break;
+
+    default:
+      result = false;
+      break;
+  }
+  return result;
+}
+
+#endif // PRODUCT