Mercurial > hg > truffle
annotate agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java @ 7950:6cf2530f7fd3
8005278: Serviceability Agent: jmap -heap and jstack -m fail
Summary: BinaryTreeDictionary is typedef'ed as AFLBinaryTreeDictionary in vmStructs and in SA we still use old name for that. FreeList now is a template based class which is not reflect in SA type library. When SA does calculation of heap for CMS, the former will cause failure to retrieve BinaryTreeDictionary sine the rename. The later will fail wherever it is used in SA.
Reviewed-by: dholmes, sla, coleenp
Contributed-by: yunda.mly@taobao.com
author | minqi |
---|---|
date | Thu, 24 Jan 2013 23:30:45 -0800 |
parents | c18cbe5936b8 |
children |
rev | line source |
---|---|
152
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
1 /* |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
2 * @(#)FreeList.java |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
3 * |
7950
6cf2530f7fd3
8005278: Serviceability Agent: jmap -heap and jstack -m fail
minqi
parents:
1552
diff
changeset
|
4 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. |
152
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
5 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
6 * |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
7 * This code is free software; you can redistribute it and/or modify it |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
8 * under the terms of the GNU General Public License version 2 only, as |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
9 * published by the Free Software Foundation. |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
10 * |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
14 * version 2 for more details (a copy is included in the LICENSE file that |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
15 * accompanied this code). |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
16 * |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
17 * You should have received a copy of the GNU General Public License version |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
18 * 2 along with this work; if not, write to the Free Software Foundation, |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
20 * |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
196
diff
changeset
|
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
196
diff
changeset
|
22 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
196
diff
changeset
|
23 * questions. |
152
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
24 * |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
25 */ |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
26 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
27 package sun.jvm.hotspot.memory; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
28 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
29 import java.util.*; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
30 import sun.jvm.hotspot.debugger.*; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
31 import sun.jvm.hotspot.types.*; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
32 import sun.jvm.hotspot.runtime.*; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
33 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
34 public class FreeList extends VMObject { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
35 static { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
36 VM.registerVMInitializedObserver(new Observer() { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
37 public void update(Observable o, Object data) { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
38 initialize(VM.getVM().getTypeDataBase()); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
39 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
40 }); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
41 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
42 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
43 private static synchronized void initialize(TypeDataBase db) { |
7950
6cf2530f7fd3
8005278: Serviceability Agent: jmap -heap and jstack -m fail
minqi
parents:
1552
diff
changeset
|
44 Type type = db.lookupType("FreeList<FreeChunk>"); |
152
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
45 sizeField = type.getCIntegerField("_size"); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
46 countField = type.getCIntegerField("_count"); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
47 headerSize = type.getSize(); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
48 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
49 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
50 // Fields |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
51 private static CIntegerField sizeField; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
52 private static CIntegerField countField; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
53 private static long headerSize; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
54 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
55 //Constructor |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
56 public FreeList(Address address) { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
57 super(address); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
58 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
59 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
60 // Accessors |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
61 public long size() { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
62 return sizeField.getValue(addr); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
63 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
64 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
65 public long count() { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
66 return countField.getValue(addr); |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
67 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
68 |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
69 public static long sizeOf() { |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
70 return headerSize; |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
71 } |
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
diff
changeset
|
72 } |