comparison src/share/vm/oops/fieldInfo.hpp @ 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 71afdabfd05b
children 4a916f2ce331
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.
23 */ 23 */
24 24
25 #ifndef SHARE_VM_OOPS_FIELDINFO_HPP 25 #ifndef SHARE_VM_OOPS_FIELDINFO_HPP
26 #define SHARE_VM_OOPS_FIELDINFO_HPP 26 #define SHARE_VM_OOPS_FIELDINFO_HPP
27 27
28 #include "oops/constantPool.hpp"
28 #include "oops/typeArrayOop.hpp" 29 #include "oops/typeArrayOop.hpp"
29 #include "classfile/vmSymbols.hpp" 30 #include "classfile/vmSymbols.hpp"
30 31
31 // This class represents the field information contained in the fields 32 // This class represents the field information contained in the fields
32 // array of an instanceKlass. Currently it's laid on top an array of 33 // array of an InstanceKlass. Currently it's laid on top an array of
33 // Java shorts but in the future it could simply be used as a real 34 // Java shorts but in the future it could simply be used as a real
34 // array type. FieldInfo generally shouldn't be used directly. 35 // array type. FieldInfo generally shouldn't be used directly.
35 // Fields should be queried either through instanceKlass or through 36 // Fields should be queried either through InstanceKlass or through
36 // the various FieldStreams. 37 // the various FieldStreams.
37 class FieldInfo VALUE_OBJ_CLASS_SPEC { 38 class FieldInfo VALUE_OBJ_CLASS_SPEC {
38 friend class fieldDescriptor; 39 friend class fieldDescriptor;
39 friend class JavaFieldStream; 40 friend class JavaFieldStream;
40 friend class ClassFileParser; 41 friend class ClassFileParser;
63 u2 name_index() const { return _shorts[name_index_offset]; } 64 u2 name_index() const { return _shorts[name_index_offset]; }
64 u2 signature_index() const { return _shorts[signature_index_offset]; } 65 u2 signature_index() const { return _shorts[signature_index_offset]; }
65 u2 initval_index() const { return _shorts[initval_index_offset]; } 66 u2 initval_index() const { return _shorts[initval_index_offset]; }
66 67
67 public: 68 public:
68 static FieldInfo* from_field_array(typeArrayOop fields, int index) { 69 static FieldInfo* from_field_array(Array<u2>* fields, int index) {
69 return ((FieldInfo*)fields->short_at_addr(index * field_slots)); 70 return ((FieldInfo*)fields->adr_at(index * field_slots));
70 } 71 }
71 static FieldInfo* from_field_array(u2* fields, int index) { 72 static FieldInfo* from_field_array(u2* fields, int index) {
72 return ((FieldInfo*)(fields + index * field_slots)); 73 return ((FieldInfo*)(fields + index * field_slots));
73 } 74 }
74 75