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] ";