Mercurial > hg > graal-jvmci-8
comparison agent/src/share/classes/sun/jvm/hotspot/HSDB.java @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 7588156f5cf9 |
children | 38ea2efa32a7 |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2000, 2012, 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. |
996 int offset = 1; | 996 int offset = 1; |
997 annoPanel.addAnnotation(new Annotation(curFrame.addressOfInterpreterFrameLocal(offset), | 997 annoPanel.addAnnotation(new Annotation(curFrame.addressOfInterpreterFrameLocal(offset), |
998 curFrame.addressOfInterpreterFrameLocal((int) interpreterFrameMethod.getMaxLocals() + offset), | 998 curFrame.addressOfInterpreterFrameLocal((int) interpreterFrameMethod.getMaxLocals() + offset), |
999 "Interpreter locals area for frame with SP = " + curFrame.getSP())); | 999 "Interpreter locals area for frame with SP = " + curFrame.getSP())); |
1000 } | 1000 } |
1001 String methodAnno = "Interpreter frame methodOop"; | 1001 String methodAnno = "Interpreter frame Method*"; |
1002 if (interpreterFrameMethod == null) { | 1002 if (interpreterFrameMethod == null) { |
1003 methodAnno += " (BAD OOP)"; | 1003 methodAnno += " (BAD OOP)"; |
1004 } | 1004 } |
1005 Address a = curFrame.addressOfInterpreterFrameMethod(); | 1005 Address a = curFrame.addressOfInterpreterFrameMethod(); |
1006 annoPanel.addAnnotation(new Annotation(a, a.addOffsetTo(addressSize), methodAnno)); | 1006 annoPanel.addAnnotation(new Annotation(a, a.addOffsetTo(addressSize), methodAnno)); |
1052 bad = false; | 1052 bad = false; |
1053 break; | 1053 break; |
1054 } | 1054 } |
1055 } | 1055 } |
1056 | 1056 |
1057 if (bad) { | |
1058 // Try perm gen | |
1059 if (heap.permGen().isIn(handle)) { | |
1060 anno = "PermGen "; | |
1061 bad = false; | |
1062 } | |
1063 } | |
1064 } else if (collHeap instanceof ParallelScavengeHeap) { | 1057 } else if (collHeap instanceof ParallelScavengeHeap) { |
1065 ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap; | 1058 ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap; |
1066 if (heap.youngGen().isIn(handle)) { | 1059 if (heap.youngGen().isIn(handle)) { |
1067 anno = "PSYoungGen "; | 1060 anno = "PSYoungGen "; |
1068 bad = false; | 1061 bad = false; |
1069 } else if (heap.oldGen().isIn(handle)) { | 1062 } else if (heap.oldGen().isIn(handle)) { |
1070 anno = "PSOldGen "; | 1063 anno = "PSOldGen "; |
1071 bad = false; | |
1072 } else if (heap.permGen().isIn(handle)) { | |
1073 anno = "PSPermGen "; | |
1074 bad = false; | 1064 bad = false; |
1075 } | 1065 } |
1076 } else { | 1066 } else { |
1077 // Optimistically assume the oop isn't bad | 1067 // Optimistically assume the oop isn't bad |
1078 anno = "[Unknown generation] "; | 1068 anno = "[Unknown generation] "; |