Mercurial > hg > truffle
annotate src/share/vm/runtime/fieldDescriptor.hpp @ 10292:acac2b03a07f
8014765: VM exits if MaxTenuringThreshold is set below the default InitialTenuringThreshold, and InitialTenuringThreshold is not set
Summary: The VM exits when the condition in the subject line applies. The fix sets InitialTenuringThreshold to MaxTenuringThreshold if it is larger than MaxTenuringThreshold and InitialTenuringThreshold has not been set (is default).
Reviewed-by: jwilhelm, jmasa, brutisso, johnc
author | tschatzl |
---|---|
date | Thu, 16 May 2013 23:51:51 +0200 |
parents | 35431a769282 |
children | 989155e2d07a b2e698d2276c |
rev | line source |
---|---|
0 | 1 /* |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6266
diff
changeset
|
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
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 | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP |
26 #define SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP | |
27 | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6266
diff
changeset
|
28 #include "oops/constantPool.hpp" |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
1972
diff
changeset
|
29 #include "oops/symbol.hpp" |
1972 | 30 #include "runtime/fieldType.hpp" |
31 #include "utilities/accessFlags.hpp" | |
32 #include "utilities/constantTag.hpp" | |
33 | |
0 | 34 // A fieldDescriptor describes the attributes of a single field (instance or class variable). |
35 // It needs the class constant pool to work (because it only holds indices into the pool | |
36 // rather than the actual info). | |
37 | |
38 class fieldDescriptor VALUE_OBJ_CLASS_SPEC { | |
39 private: | |
40 AccessFlags _access_flags; | |
3938 | 41 int _index; // the field index |
0 | 42 constantPoolHandle _cp; |
43 | |
3938 | 44 // update the access_flags for the field in the klass |
45 void update_klass_field_access_flag() { | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
46 InstanceKlass* ik = field_holder(); |
3938 | 47 ik->field(index())->set_access_flags(_access_flags.as_short()); |
48 } | |
49 | |
50 FieldInfo* field() const { | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
51 InstanceKlass* ik = field_holder(); |
3938 | 52 return ik->field(_index); |
53 } | |
54 | |
0 | 55 public: |
3938 | 56 Symbol* name() const { |
57 return field()->name(_cp); | |
58 } | |
59 Symbol* signature() const { | |
60 return field()->signature(_cp); | |
61 } | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
62 InstanceKlass* field_holder() const { return _cp->pool_holder(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
63 ConstantPool* constants() const { return _cp(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
64 AccessFlags access_flags() const { return _access_flags; } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
65 oop loader() const; |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6266
diff
changeset
|
66 // Offset (in words) of field from start of instanceOop / Klass* |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
67 int offset() const { return field()->offset(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
68 Symbol* generic_signature() const; |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
69 int index() const { return _index; } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
70 AnnotationArray* annotations() const; |
7457
35431a769282
8004823: Add VM support for type annotation reflection
stefank
parents:
6940
diff
changeset
|
71 AnnotationArray* type_annotations() const; |
0 | 72 |
73 // Initial field value | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
74 bool has_initial_value() const { return field()->initval_index() != 0; } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
75 int initial_value_index() const { return field()->initval_index(); } |
0 | 76 constantTag initial_value_tag() const; // The tag will return true on one of is_int(), is_long(), is_single(), is_double() |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
77 jint int_initial_value() const; |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
78 jlong long_initial_value() const; |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
79 jfloat float_initial_value() const; |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
80 jdouble double_initial_value() const; |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
81 oop string_initial_value(TRAPS) const; |
0 | 82 |
83 // Field signature type | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
84 BasicType field_type() const { return FieldType::basic_type(signature()); } |
0 | 85 |
86 // Access flags | |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
87 bool is_public() const { return access_flags().is_public(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
88 bool is_private() const { return access_flags().is_private(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
89 bool is_protected() const { return access_flags().is_protected(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
90 bool is_package_private() const { return !is_public() && !is_private() && !is_protected(); } |
0 | 91 |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
92 bool is_static() const { return access_flags().is_static(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
93 bool is_final() const { return access_flags().is_final(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
94 bool is_volatile() const { return access_flags().is_volatile(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
95 bool is_transient() const { return access_flags().is_transient(); } |
0 | 96 |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
97 bool is_synthetic() const { return access_flags().is_synthetic(); } |
0 | 98 |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
99 bool is_field_access_watched() const { return access_flags().is_field_access_watched(); } |
0 | 100 bool is_field_modification_watched() const |
6940
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
101 { return access_flags().is_field_modification_watched(); } |
18fb7da42534
8000725: NPG: method_holder() and pool_holder() and pool_holder field should be InstanceKlass
coleenp
parents:
6725
diff
changeset
|
102 bool has_generic_signature() const { return access_flags().field_has_generic_signature(); } |
3938 | 103 |
104 void set_is_field_access_watched(const bool value) { | |
105 _access_flags.set_is_field_access_watched(value); | |
106 update_klass_field_access_flag(); | |
107 } | |
108 | |
109 void set_is_field_modification_watched(const bool value) { | |
110 _access_flags.set_is_field_modification_watched(value); | |
111 update_klass_field_access_flag(); | |
112 } | |
0 | 113 |
114 // Initialization | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6266
diff
changeset
|
115 void initialize(InstanceKlass* ik, int index); |
0 | 116 |
117 // Print | |
6266
1d7922586cf6
7023639: JSR 292 method handle invocation needs a fast path for compiled code
twisti
parents:
6176
diff
changeset
|
118 void print() { print_on(tty); } |
0 | 119 void print_on(outputStream* st) const PRODUCT_RETURN; |
120 void print_on_for(outputStream* st, oop obj) PRODUCT_RETURN; | |
121 }; | |
1972 | 122 |
123 #endif // SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP |