comparison agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.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 f6f3bb0ee072
children bd7a7ce2e264
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
1 /* 1 /*
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2011, 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.
30 import sun.jvm.hotspot.code.*; 30 import sun.jvm.hotspot.code.*;
31 import sun.jvm.hotspot.runtime.*; 31 import sun.jvm.hotspot.runtime.*;
32 import sun.jvm.hotspot.oops.*; 32 import sun.jvm.hotspot.oops.*;
33 import sun.jvm.hotspot.types.*; 33 import sun.jvm.hotspot.types.*;
34 34
35 public class ciMethod extends ciObject { 35 public class ciMethod extends ciMetadata {
36 static { 36 static {
37 VM.registerVMInitializedObserver(new Observer() { 37 VM.registerVMInitializedObserver(new Observer() {
38 public void update(Observable o, Object data) { 38 public void update(Observable o, Object data) {
39 initialize(VM.getVM().getTypeDataBase()); 39 initialize(VM.getVM().getTypeDataBase());
40 } 40 }
59 public ciMethod(Address addr) { 59 public ciMethod(Address addr) {
60 super(addr); 60 super(addr);
61 } 61 }
62 62
63 public Method method() { 63 public Method method() {
64 return (Method)getOop(); 64 return (Method)getMetadata();
65 } 65 }
66 66
67 public int interpreterThrowoutCount() { 67 public int interpreterThrowoutCount() {
68 return (int) interpreterThrowoutCountField.getValue(getAddress()); 68 return (int) interpreterThrowoutCountField.getValue(getAddress());
69 } 69 }
73 } 73 }
74 74
75 public int instructionsSize() { 75 public int instructionsSize() {
76 if (instructionsSizeField == null) { 76 if (instructionsSizeField == null) {
77 // XXX 77 // XXX
78 Method method = (Method)getOop(); 78 Method method = method();
79 NMethod nm = method.getNativeMethod(); 79 NMethod nm = method.getNativeMethod();
80 if (nm != null) return (int)nm.codeEnd().minus(nm.getVerifiedEntryPoint()); 80 if (nm != null) return (int)nm.codeEnd().minus(nm.getVerifiedEntryPoint());
81 return 0; 81 return 0;
82 } 82 }
83 return (int) instructionsSizeField.getValue(getAddress()); 83 return (int) instructionsSizeField.getValue(getAddress());
84 } 84 }
85 85
86 public void printShortName(PrintStream st) { 86 public void printShortName(PrintStream st) {
87 Method method = (Method)getOop(); 87 Method method = method();
88 st.printf(" %s::%s", method.getMethodHolder().getName().asString().replace('/', '.'), 88 st.printf(" %s::%s", method.getMethodHolder().getName().asString().replace('/', '.'),
89 method.getName().asString()); 89 method.getName().asString());
90 } 90 }
91 } 91 }