Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/markOop.cpp @ 22833:6e8e0bf87bbe
8069412: Locks need better debug-printing support
Summary: Added better debug-printing support and enhanced LogCompilation tool
Reviewed-by: kvn, roland, dholmes
author | drchase |
---|---|
date | Fri, 20 Feb 2015 22:12:53 -0500 |
parents | 78bbf4d43a14 |
children |
comparison
equal
deleted
inserted
replaced
22832:9d6eb2757167 | 22833:6e8e0bf87bbe |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
23 */ | 23 */ |
24 | 24 |
25 #include "precompiled.hpp" | 25 #include "precompiled.hpp" |
26 #include "oops/markOop.hpp" | 26 #include "oops/markOop.hpp" |
27 #include "runtime/thread.inline.hpp" | 27 #include "runtime/thread.inline.hpp" |
28 #include "runtime/objectMonitor.inline.hpp" | |
28 | 29 |
29 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC | 30 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC |
30 | 31 |
31 void markOopDesc::print_on(outputStream* st) const { | 32 void markOopDesc::print_on(outputStream* st) const { |
32 if (is_locked()) { | 33 if (is_marked()) { |
33 st->print("locked(" INTPTR_FORMAT ")->", value()); | 34 st->print(" marked(" INTPTR_FORMAT ")", value()); |
34 markOop(*(markOop*)value())->print_on(st); | 35 } else if (is_locked()) { |
36 st->print(" locked(" INTPTR_FORMAT ")->", value()); | |
37 if (is_neutral()) { | |
38 st->print("is_neutral"); | |
39 if (has_no_hash()) st->print(" no_hash"); | |
40 else st->print(" hash=" INTPTR_FORMAT, hash()); | |
41 st->print(" age=%d", age()); | |
42 } else if (has_bias_pattern()) { | |
43 st->print("is_biased"); | |
44 JavaThread* jt = biased_locker(); | |
45 st->print(" biased_locker=" INTPTR_FORMAT, p2i(jt)); | |
46 } else if (has_monitor()) { | |
47 ObjectMonitor* mon = monitor(); | |
48 if (mon == NULL) | |
49 st->print("monitor=NULL"); | |
50 else { | |
51 BasicLock * bl = (BasicLock *) mon->owner(); | |
52 st->print("monitor={count="INTPTR_FORMAT",waiters="INTPTR_FORMAT",recursions="INTPTR_FORMAT",owner="INTPTR_FORMAT"}", | |
53 mon->count(), mon->waiters(), mon->recursions(), p2i(bl)); | |
54 } | |
55 } else { | |
56 st->print("??"); | |
57 } | |
35 } else { | 58 } else { |
36 assert(is_unlocked() || has_bias_pattern(), "just checking"); | 59 assert(is_unlocked() || has_bias_pattern(), "just checking"); |
37 st->print("mark("); | 60 st->print("mark("); |
38 if (has_bias_pattern()) st->print("biased,"); | 61 if (has_bias_pattern()) st->print("biased,"); |
39 st->print("hash %#lx,", hash()); | 62 st->print("hash %#lx,", hash()); |
40 st->print("age %d)", age()); | 63 st->print("age %d)", age()); |
41 } | 64 } |
42 } | 65 } |