annotate src/share/vm/gc_interface/gcCause.hpp @ 13212:eb03a7335eb0

Use fixed instead of virtual register for target in far foreign call, since the register allocator does not support virtual registers to be used at call sites.
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 02 Dec 2013 14:20:32 -0800
parents f2110083203d
children de6a9e811145
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
4829
9509c20bba28 6976060: G1: humongous object allocations should initiate marking cycles when necessary
brutisso
parents: 2225
diff changeset
2 * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 844
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
25 #ifndef SHARE_VM_GC_INTERFACE_GCCAUSE_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
26 #define SHARE_VM_GC_INTERFACE_GCCAUSE_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
27
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
28 #include "memory/allocation.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
29
0
a61af66fc99e Initial load
duke
parents:
diff changeset
30 //
a61af66fc99e Initial load
duke
parents:
diff changeset
31 // This class exposes implementation details of the various
a61af66fc99e Initial load
duke
parents:
diff changeset
32 // collector(s), and we need to be very careful with it. If
a61af66fc99e Initial load
duke
parents:
diff changeset
33 // use of this class grows, we should split it into public
a61af66fc99e Initial load
duke
parents:
diff changeset
34 // and implemenation-private "causes".
a61af66fc99e Initial load
duke
parents:
diff changeset
35 //
a61af66fc99e Initial load
duke
parents:
diff changeset
36
a61af66fc99e Initial load
duke
parents:
diff changeset
37 class GCCause : public AllStatic {
a61af66fc99e Initial load
duke
parents:
diff changeset
38 public:
a61af66fc99e Initial load
duke
parents:
diff changeset
39 enum Cause {
a61af66fc99e Initial load
duke
parents:
diff changeset
40 /* public */
a61af66fc99e Initial load
duke
parents:
diff changeset
41 _java_lang_system_gc,
a61af66fc99e Initial load
duke
parents:
diff changeset
42 _full_gc_alot,
a61af66fc99e Initial load
duke
parents:
diff changeset
43 _scavenge_alot,
a61af66fc99e Initial load
duke
parents:
diff changeset
44 _allocation_profiler,
a61af66fc99e Initial load
duke
parents:
diff changeset
45 _jvmti_force_gc,
a61af66fc99e Initial load
duke
parents:
diff changeset
46 _gc_locker,
a61af66fc99e Initial load
duke
parents:
diff changeset
47 _heap_inspection,
a61af66fc99e Initial load
duke
parents:
diff changeset
48 _heap_dump,
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 /* implementation independent, but reserved for GC use */
a61af66fc99e Initial load
duke
parents:
diff changeset
51 _no_gc,
a61af66fc99e Initial load
duke
parents:
diff changeset
52 _no_cause_specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
53 _allocation_failure,
a61af66fc99e Initial load
duke
parents:
diff changeset
54
a61af66fc99e Initial load
duke
parents:
diff changeset
55 /* implementation specific */
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 _tenured_generation_full,
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6064
diff changeset
58 _metadata_GC_threshold,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
59
a61af66fc99e Initial load
duke
parents:
diff changeset
60 _cms_generation_full,
a61af66fc99e Initial load
duke
parents:
diff changeset
61 _cms_initial_mark,
a61af66fc99e Initial load
duke
parents:
diff changeset
62 _cms_final_remark,
10405
f2110083203d 8005849: JEP 167: Event-Based JVM Tracing
sla
parents: 7455
diff changeset
63 _cms_concurrent_mark,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
64
a61af66fc99e Initial load
duke
parents:
diff changeset
65 _old_generation_expanded_on_last_scavenge,
a61af66fc99e Initial load
duke
parents:
diff changeset
66 _old_generation_too_full_to_scavenge,
a61af66fc99e Initial load
duke
parents:
diff changeset
67 _adaptive_size_policy,
a61af66fc99e Initial load
duke
parents:
diff changeset
68
677
96b229c54d1e 6543938: G1: remove the concept of popularity
apetrusenko
parents: 342
diff changeset
69 _g1_inc_collection_pause,
4829
9509c20bba28 6976060: G1: humongous object allocations should initiate marking cycles when necessary
brutisso
parents: 2225
diff changeset
70 _g1_humongous_allocation,
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 0
diff changeset
71
0
a61af66fc99e Initial load
duke
parents:
diff changeset
72 _last_ditch_collection,
a61af66fc99e Initial load
duke
parents:
diff changeset
73 _last_gc_cause
a61af66fc99e Initial load
duke
parents:
diff changeset
74 };
a61af66fc99e Initial load
duke
parents:
diff changeset
75
a61af66fc99e Initial load
duke
parents:
diff changeset
76 inline static bool is_user_requested_gc(GCCause::Cause cause) {
a61af66fc99e Initial load
duke
parents:
diff changeset
77 return (cause == GCCause::_java_lang_system_gc ||
a61af66fc99e Initial load
duke
parents:
diff changeset
78 cause == GCCause::_jvmti_force_gc);
a61af66fc99e Initial load
duke
parents:
diff changeset
79 }
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 0
diff changeset
80
0
a61af66fc99e Initial load
duke
parents:
diff changeset
81 inline static bool is_serviceability_requested_gc(GCCause::Cause
a61af66fc99e Initial load
duke
parents:
diff changeset
82 cause) {
a61af66fc99e Initial load
duke
parents:
diff changeset
83 return (cause == GCCause::_jvmti_force_gc ||
a61af66fc99e Initial load
duke
parents:
diff changeset
84 cause == GCCause::_heap_inspection ||
a61af66fc99e Initial load
duke
parents:
diff changeset
85 cause == GCCause::_heap_dump);
a61af66fc99e Initial load
duke
parents:
diff changeset
86 }
342
37f87013dfd8 6711316: Open source the Garbage-First garbage collector
ysr
parents: 0
diff changeset
87
0
a61af66fc99e Initial load
duke
parents:
diff changeset
88 // Return a string describing the GCCause.
a61af66fc99e Initial load
duke
parents:
diff changeset
89 static const char* to_string(GCCause::Cause cause);
a61af66fc99e Initial load
duke
parents:
diff changeset
90 };
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
91
6064
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
92 // Helper class for doing logging that includes the GC Cause
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
93 // as a string.
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
94 class GCCauseString : StackObj {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
95 private:
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
96 static const int _length = 128;
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
97 char _buffer[_length];
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
98 int _position;
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
99
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
100 public:
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
101 GCCauseString(const char* prefix, GCCause::Cause cause) {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
102 if (PrintGCCause) {
7455
0b54ffe4c2d3 8005672: Clean up some changes to GC logging with GCCause's
jmasa
parents: 6725
diff changeset
103 _position = jio_snprintf(_buffer, _length, "%s (%s) ", prefix, GCCause::to_string(cause));
6064
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
104 } else {
7455
0b54ffe4c2d3 8005672: Clean up some changes to GC logging with GCCause's
jmasa
parents: 6725
diff changeset
105 _position = jio_snprintf(_buffer, _length, "%s ", prefix);
6064
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
106 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
107 assert(_position >= 0 && _position <= _length,
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
108 err_msg("Need to increase the buffer size in GCCauseString? %d", _position));
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
109 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
110
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
111 GCCauseString& append(const char* str) {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
112 int res = jio_snprintf(_buffer + _position, _length - _position, "%s", str);
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
113 _position += res;
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
114 assert(res >= 0 && _position <= _length,
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
115 err_msg("Need to increase the buffer size in GCCauseString? %d", res));
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
116 return *this;
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
117 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
118
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
119 operator const char*() {
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
120 return _buffer;
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
121 }
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
122 };
9d679effd28c 7166894: Add gc cause to GC logging for all collectors
brutisso
parents: 4829
diff changeset
123
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
124 #endif // SHARE_VM_GC_INTERFACE_GCCAUSE_HPP