Mercurial > hg > truffle
diff agent/src/share/classes/sun/jvm/hotspot/memory/Universe.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 | 4f93f0d00802 |
children | 8e47bac5643a |
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java Fri Aug 31 16:39:35 2012 -0700 +++ b/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,17 +42,14 @@ private static sun.jvm.hotspot.types.OopField systemThreadGroupField; // single dimensional primitive array klasses - private static sun.jvm.hotspot.types.OopField boolArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField byteArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField charArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField intArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField shortArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField longArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField singleArrayKlassObjField; - private static sun.jvm.hotspot.types.OopField doubleArrayKlassObjField; - - // system obj array klass object - private static sun.jvm.hotspot.types.OopField systemObjArrayKlassObjField; + private static sun.jvm.hotspot.types.AddressField boolArrayKlassField; + private static sun.jvm.hotspot.types.AddressField byteArrayKlassField; + private static sun.jvm.hotspot.types.AddressField charArrayKlassField; + private static sun.jvm.hotspot.types.AddressField intArrayKlassField; + private static sun.jvm.hotspot.types.AddressField shortArrayKlassField; + private static sun.jvm.hotspot.types.AddressField longArrayKlassField; + private static sun.jvm.hotspot.types.AddressField singleArrayKlassField; + private static sun.jvm.hotspot.types.AddressField doubleArrayKlassField; private static AddressField narrowOopBaseField; private static CIntegerField narrowOopShiftField; @@ -78,16 +75,14 @@ mainThreadGroupField = type.getOopField("_main_thread_group"); systemThreadGroupField = type.getOopField("_system_thread_group"); - boolArrayKlassObjField = type.getOopField("_boolArrayKlassObj"); - byteArrayKlassObjField = type.getOopField("_byteArrayKlassObj"); - charArrayKlassObjField = type.getOopField("_charArrayKlassObj"); - intArrayKlassObjField = type.getOopField("_intArrayKlassObj"); - shortArrayKlassObjField = type.getOopField("_shortArrayKlassObj"); - longArrayKlassObjField = type.getOopField("_longArrayKlassObj"); - singleArrayKlassObjField = type.getOopField("_singleArrayKlassObj"); - doubleArrayKlassObjField = type.getOopField("_doubleArrayKlassObj"); - - systemObjArrayKlassObjField = type.getOopField("_systemObjArrayKlassObj"); + boolArrayKlassField = type.getAddressField("_boolArrayKlassObj"); + byteArrayKlassField = type.getAddressField("_byteArrayKlassObj"); + charArrayKlassField = type.getAddressField("_charArrayKlassObj"); + intArrayKlassField = type.getAddressField("_intArrayKlassObj"); + shortArrayKlassField = type.getAddressField("_shortArrayKlassObj"); + longArrayKlassField = type.getAddressField("_longArrayKlassObj"); + singleArrayKlassField = type.getAddressField("_singleArrayKlassObj"); + doubleArrayKlassField = type.getAddressField("_doubleArrayKlassObj"); narrowOopBaseField = type.getAddressField("_narrow_oop._base"); narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift"); @@ -138,21 +133,17 @@ return newOop(systemThreadGroupField.getValue()); } - public Oop systemObjArrayKlassObj() { - return newOop(systemObjArrayKlassObjField.getValue()); - } - // iterate through the single dimensional primitive array klasses - // refer to basic_type_classes_do(void f(klassOop)) in universe.cpp + // refer to basic_type_classes_do(void f(Klass*)) in universe.cpp public void basicTypeClassesDo(SystemDictionary.ClassVisitor visitor) { - visitor.visit((Klass)newOop(boolArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(byteArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(charArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(intArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(shortArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(longArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(singleArrayKlassObjField.getValue())); - visitor.visit((Klass)newOop(doubleArrayKlassObjField.getValue())); + visitor.visit(new TypeArrayKlass(boolArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(byteArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(charArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(intArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(shortArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(longArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(singleArrayKlassField.getValue())); + visitor.visit(new TypeArrayKlass(doubleArrayKlassField.getValue())); } public void print() { printOn(System.out); }