Mercurial > hg > truffle
annotate src/share/vm/runtime/vmStructs.cpp @ 3917:eca1193ca245
4965777: GC changes to support use of discovered field for pending references
Summary: If and when the reference handler thread is able to use the discovered field to link reference objects in its pending list, so will GC. In that case, GC will scan through this field once a reference object has been placed on the pending list, but not scan that field before that stage, as the field is used by the concurrent GC thread to link discovered objects. When ReferenceHandleR thread does not use the discovered field for the purpose of linking the elements in the pending list, as would be the case in older JDKs, the JVM will fall back to the old behaviour of using the next field for that purpose.
Reviewed-by: jcoomes, mchung, stefank
author | ysr |
---|---|
date | Wed, 07 Sep 2011 13:55:42 -0700 |
parents | d17bd0b18663 |
children | 7588156f5cf9 |
rev | line source |
---|---|
0 | 1 /* |
2119 | 2 * Copyright (c) 2000, 2011, 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:
1166
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1166
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:
1166
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #include "precompiled.hpp" |
26 #include "classfile/dictionary.hpp" | |
27 #include "classfile/javaClasses.hpp" | |
28 #include "classfile/loaderConstraints.hpp" | |
29 #include "classfile/placeholders.hpp" | |
30 #include "classfile/symbolTable.hpp" | |
31 #include "classfile/systemDictionary.hpp" | |
32 #include "code/codeBlob.hpp" | |
33 #include "code/codeCache.hpp" | |
34 #include "code/compressedStream.hpp" | |
35 #include "code/location.hpp" | |
36 #include "code/nmethod.hpp" | |
37 #include "code/pcDesc.hpp" | |
38 #include "code/stubs.hpp" | |
39 #include "code/vmreg.hpp" | |
40 #include "compiler/oopMap.hpp" | |
41 #include "gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp" | |
42 #include "gc_implementation/shared/immutableSpace.hpp" | |
43 #include "gc_implementation/shared/markSweep.hpp" | |
44 #include "gc_implementation/shared/mutableSpace.hpp" | |
45 #include "gc_interface/collectedHeap.hpp" | |
46 #include "interpreter/bytecodeInterpreter.hpp" | |
47 #include "interpreter/bytecodes.hpp" | |
48 #include "interpreter/interpreter.hpp" | |
49 #include "memory/cardTableRS.hpp" | |
50 #include "memory/compactPermGen.hpp" | |
51 #include "memory/defNewGeneration.hpp" | |
52 #include "memory/genCollectedHeap.hpp" | |
53 #include "memory/generation.hpp" | |
54 #include "memory/generationSpec.hpp" | |
55 #include "memory/heap.hpp" | |
56 #include "memory/permGen.hpp" | |
57 #include "memory/space.hpp" | |
58 #include "memory/tenuredGeneration.hpp" | |
59 #include "memory/universe.hpp" | |
60 #include "memory/watermark.hpp" | |
61 #include "oops/arrayKlass.hpp" | |
62 #include "oops/arrayKlassKlass.hpp" | |
63 #include "oops/arrayOop.hpp" | |
64 #include "oops/compiledICHolderKlass.hpp" | |
65 #include "oops/compiledICHolderOop.hpp" | |
66 #include "oops/constMethodKlass.hpp" | |
67 #include "oops/constMethodOop.hpp" | |
68 #include "oops/constantPoolKlass.hpp" | |
69 #include "oops/constantPoolOop.hpp" | |
70 #include "oops/cpCacheKlass.hpp" | |
71 #include "oops/cpCacheOop.hpp" | |
72 #include "oops/instanceKlass.hpp" | |
2411
63997f575155
7031614: jmap -permstat fails with java.lang.InternalError in sun.jvm.hotspot.oops.OopField.getValue
never
parents:
2388
diff
changeset
|
73 #include "oops/instanceMirrorKlass.hpp" |
1972 | 74 #include "oops/instanceKlassKlass.hpp" |
75 #include "oops/instanceOop.hpp" | |
76 #include "oops/klass.hpp" | |
77 #include "oops/klassOop.hpp" | |
78 #include "oops/markOop.hpp" | |
79 #include "oops/methodDataKlass.hpp" | |
80 #include "oops/methodDataOop.hpp" | |
81 #include "oops/methodKlass.hpp" | |
82 #include "oops/methodOop.hpp" | |
83 #include "oops/objArrayKlass.hpp" | |
84 #include "oops/objArrayKlassKlass.hpp" | |
85 #include "oops/objArrayOop.hpp" | |
86 #include "oops/oop.inline.hpp" | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
87 #include "oops/symbol.hpp" |
1972 | 88 #include "oops/typeArrayKlass.hpp" |
89 #include "oops/typeArrayKlassKlass.hpp" | |
90 #include "oops/typeArrayOop.hpp" | |
91 #include "prims/jvmtiAgentThread.hpp" | |
92 #include "runtime/arguments.hpp" | |
93 #include "runtime/globals.hpp" | |
94 #include "runtime/java.hpp" | |
95 #include "runtime/javaCalls.hpp" | |
96 #include "runtime/perfMemory.hpp" | |
2195
bf8517f4e4d0
6766644: Redefinition of compiled method fails with assertion "Can not load classes with the Compiler thread"
kamg
parents:
2192
diff
changeset
|
97 #include "runtime/serviceThread.hpp" |
1972 | 98 #include "runtime/sharedRuntime.hpp" |
99 #include "runtime/stubRoutines.hpp" | |
100 #include "runtime/virtualspace.hpp" | |
101 #include "runtime/vmStructs.hpp" | |
102 #include "utilities/globalDefinitions.hpp" | |
103 #include "utilities/hashtable.hpp" | |
104 #ifdef TARGET_ARCH_x86 | |
105 # include "vmStructs_x86.hpp" | |
106 #endif | |
107 #ifdef TARGET_ARCH_sparc | |
108 # include "vmStructs_sparc.hpp" | |
109 #endif | |
110 #ifdef TARGET_ARCH_zero | |
111 # include "vmStructs_zero.hpp" | |
112 #endif | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
113 #ifdef TARGET_ARCH_arm |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
114 # include "vmStructs_arm.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
115 #endif |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
116 #ifdef TARGET_ARCH_ppc |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
117 # include "vmStructs_ppc.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
118 #endif |
1972 | 119 #ifdef TARGET_OS_FAMILY_linux |
120 # include "thread_linux.inline.hpp" | |
121 #endif | |
122 #ifdef TARGET_OS_FAMILY_solaris | |
123 # include "thread_solaris.inline.hpp" | |
124 #endif | |
125 #ifdef TARGET_OS_FAMILY_windows | |
126 # include "thread_windows.inline.hpp" | |
127 #endif | |
128 #ifdef TARGET_OS_ARCH_linux_x86 | |
129 # include "vmStructs_linux_x86.hpp" | |
130 #endif | |
131 #ifdef TARGET_OS_ARCH_linux_sparc | |
132 # include "vmStructs_linux_sparc.hpp" | |
133 #endif | |
134 #ifdef TARGET_OS_ARCH_linux_zero | |
135 # include "vmStructs_linux_zero.hpp" | |
136 #endif | |
137 #ifdef TARGET_OS_ARCH_solaris_x86 | |
138 # include "vmStructs_solaris_x86.hpp" | |
139 #endif | |
140 #ifdef TARGET_OS_ARCH_solaris_sparc | |
141 # include "vmStructs_solaris_sparc.hpp" | |
142 #endif | |
143 #ifdef TARGET_OS_ARCH_windows_x86 | |
144 # include "vmStructs_windows_x86.hpp" | |
145 #endif | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
146 #ifdef TARGET_OS_ARCH_linux_arm |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
147 # include "vmStructs_linux_arm.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
148 #endif |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
149 #ifdef TARGET_OS_ARCH_linux_ppc |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
150 # include "vmStructs_linux_ppc.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
151 #endif |
1972 | 152 #ifndef SERIALGC |
153 #include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp" | |
154 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" | |
155 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp" | |
156 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp" | |
157 #include "gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp" | |
158 #include "gc_implementation/parNew/parNewGeneration.hpp" | |
159 #include "gc_implementation/parNew/vmStructs_parNew.hpp" | |
160 #include "gc_implementation/parallelScavenge/asPSOldGen.hpp" | |
161 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp" | |
162 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" | |
163 #include "gc_implementation/parallelScavenge/psOldGen.hpp" | |
164 #include "gc_implementation/parallelScavenge/psPermGen.hpp" | |
165 #include "gc_implementation/parallelScavenge/psVirtualspace.hpp" | |
166 #include "gc_implementation/parallelScavenge/psYoungGen.hpp" | |
167 #include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp" | |
168 #endif | |
169 #ifdef COMPILER2 | |
170 #include "opto/matcher.hpp" | |
171 #ifdef TARGET_ARCH_MODEL_x86_32 | |
172 # include "adfiles/adGlobals_x86_32.hpp" | |
173 #endif | |
174 #ifdef TARGET_ARCH_MODEL_x86_64 | |
175 # include "adfiles/adGlobals_x86_64.hpp" | |
176 #endif | |
177 #ifdef TARGET_ARCH_MODEL_sparc | |
178 # include "adfiles/adGlobals_sparc.hpp" | |
179 #endif | |
180 #ifdef TARGET_ARCH_MODEL_zero | |
181 # include "adfiles/adGlobals_zero.hpp" | |
182 #endif | |
2192
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
183 #ifdef TARGET_ARCH_MODEL_arm |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
184 # include "adfiles/adGlobals_arm.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
185 #endif |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
186 #ifdef TARGET_ARCH_MODEL_ppc |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
187 # include "adfiles/adGlobals_ppc.hpp" |
b92c45f2bc75
7016023: Enable building ARM and PPC from src/closed repository
bobv
parents:
2177
diff
changeset
|
188 #endif |
1972 | 189 #endif |
0 | 190 |
191 // Note: the cross-product of (c1, c2, product, nonproduct, ...), | |
192 // (nonstatic, static), and (unchecked, checked) has not been taken. | |
193 // Only the macros currently needed have been defined. | |
194 | |
195 // A field whose type is not checked is given a null string as the | |
196 // type name, indicating an "opaque" type to the serviceability agent. | |
197 | |
198 // NOTE: there is an interdependency between this file and | |
199 // HotSpotTypeDataBase.java, which parses the type strings. | |
200 | |
201 #ifndef REG_COUNT | |
202 #define REG_COUNT 0 | |
203 #endif | |
204 | |
205 // whole purpose of this function is to work around bug c++/27724 in gcc 4.1.1 | |
206 // with optimization turned on it doesn't affect produced code | |
207 static inline uint64_t cast_uint64_t(size_t x) | |
208 { | |
209 return x; | |
210 } | |
211 | |
212 | |
213 //-------------------------------------------------------------------------------- | |
214 // VM_STRUCTS | |
215 // | |
216 // This list enumerates all of the fields the serviceability agent | |
217 // needs to know about. Be sure to see also the type table below this one. | |
218 // NOTE that there are platform-specific additions to this table in | |
219 // vmStructs_<os>_<cpu>.hpp. | |
220 | |
221 #define VM_STRUCTS(nonstatic_field, \ | |
222 static_field, \ | |
223 unchecked_nonstatic_field, \ | |
224 volatile_nonstatic_field, \ | |
225 nonproduct_nonstatic_field, \ | |
226 c1_nonstatic_field, \ | |
227 c2_nonstatic_field, \ | |
228 unchecked_c1_static_field, \ | |
229 unchecked_c2_static_field, \ | |
230 last_entry) \ | |
231 \ | |
232 /******************************************************************/ \ | |
233 /* OopDesc and Klass hierarchies (NOTE: methodDataOop incomplete) */ \ | |
234 /******************************************************************/ \ | |
235 \ | |
236 volatile_nonstatic_field(oopDesc, _mark, markOop) \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
237 volatile_nonstatic_field(oopDesc, _metadata._klass, wideKlassOop) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
238 volatile_nonstatic_field(oopDesc, _metadata._compressed_klass, narrowOop) \ |
0 | 239 static_field(oopDesc, _bs, BarrierSet*) \ |
240 nonstatic_field(arrayKlass, _dimension, int) \ | |
2119 | 241 volatile_nonstatic_field(arrayKlass, _higher_dimension, klassOop) \ |
242 volatile_nonstatic_field(arrayKlass, _lower_dimension, klassOop) \ | |
0 | 243 nonstatic_field(arrayKlass, _vtable_len, int) \ |
244 nonstatic_field(arrayKlass, _alloc_size, juint) \ | |
245 nonstatic_field(arrayKlass, _component_mirror, oop) \ | |
246 nonstatic_field(compiledICHolderKlass, _alloc_size, juint) \ | |
247 nonstatic_field(compiledICHolderOopDesc, _holder_method, methodOop) \ | |
248 nonstatic_field(compiledICHolderOopDesc, _holder_klass, klassOop) \ | |
249 nonstatic_field(constantPoolOopDesc, _tags, typeArrayOop) \ | |
250 nonstatic_field(constantPoolOopDesc, _cache, constantPoolCacheOop) \ | |
251 nonstatic_field(constantPoolOopDesc, _pool_holder, klassOop) \ | |
1917
f42a2f0c16bb
6996563: 6984311 changes forgot to update vmStructs.cpp for new field _operands
jrose
parents:
1913
diff
changeset
|
252 nonstatic_field(constantPoolOopDesc, _operands, typeArrayOop) \ |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
253 nonstatic_field(constantPoolOopDesc, _length, int) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
254 nonstatic_field(constantPoolCacheOopDesc, _length, int) \ |
0 | 255 nonstatic_field(constantPoolCacheOopDesc, _constant_pool, constantPoolOop) \ |
256 nonstatic_field(instanceKlass, _array_klasses, klassOop) \ | |
257 nonstatic_field(instanceKlass, _methods, objArrayOop) \ | |
258 nonstatic_field(instanceKlass, _method_ordering, typeArrayOop) \ | |
259 nonstatic_field(instanceKlass, _local_interfaces, objArrayOop) \ | |
260 nonstatic_field(instanceKlass, _transitive_interfaces, objArrayOop) \ | |
261 nonstatic_field(instanceKlass, _nof_implementors, int) \ | |
262 nonstatic_field(instanceKlass, _implementors[0], klassOop) \ | |
263 nonstatic_field(instanceKlass, _fields, typeArrayOop) \ | |
264 nonstatic_field(instanceKlass, _constants, constantPoolOop) \ | |
265 nonstatic_field(instanceKlass, _class_loader, oop) \ | |
266 nonstatic_field(instanceKlass, _protection_domain, oop) \ | |
267 nonstatic_field(instanceKlass, _signers, objArrayOop) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
268 nonstatic_field(instanceKlass, _source_file_name, Symbol*) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
269 nonstatic_field(instanceKlass, _source_debug_extension, Symbol*) \ |
0 | 270 nonstatic_field(instanceKlass, _inner_classes, typeArrayOop) \ |
271 nonstatic_field(instanceKlass, _nonstatic_field_size, int) \ | |
272 nonstatic_field(instanceKlass, _static_field_size, int) \ | |
2376
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
273 nonstatic_field(instanceKlass, _static_oop_field_count, int) \ |
0 | 274 nonstatic_field(instanceKlass, _nonstatic_oop_map_size, int) \ |
975 | 275 nonstatic_field(instanceKlass, _is_marked_dependent, bool) \ |
0 | 276 nonstatic_field(instanceKlass, _minor_version, u2) \ |
277 nonstatic_field(instanceKlass, _major_version, u2) \ | |
278 nonstatic_field(instanceKlass, _init_state, instanceKlass::ClassState) \ | |
279 nonstatic_field(instanceKlass, _init_thread, Thread*) \ | |
280 nonstatic_field(instanceKlass, _vtable_len, int) \ | |
281 nonstatic_field(instanceKlass, _itable_len, int) \ | |
282 nonstatic_field(instanceKlass, _reference_type, ReferenceType) \ | |
283 volatile_nonstatic_field(instanceKlass, _oop_map_cache, OopMapCache*) \ | |
284 nonstatic_field(instanceKlass, _jni_ids, JNIid*) \ | |
285 nonstatic_field(instanceKlass, _osr_nmethods_head, nmethod*) \ | |
286 nonstatic_field(instanceKlass, _breakpoints, BreakpointInfo*) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
287 nonstatic_field(instanceKlass, _generic_signature, Symbol*) \ |
0 | 288 nonstatic_field(instanceKlass, _methods_jmethod_ids, jmethodID*) \ |
289 nonstatic_field(instanceKlass, _methods_cached_itable_indices, int*) \ | |
290 volatile_nonstatic_field(instanceKlass, _idnum_allocated_count, u2) \ | |
291 nonstatic_field(instanceKlass, _class_annotations, typeArrayOop) \ | |
292 nonstatic_field(instanceKlass, _fields_annotations, objArrayOop) \ | |
293 nonstatic_field(instanceKlass, _methods_annotations, objArrayOop) \ | |
294 nonstatic_field(instanceKlass, _methods_parameter_annotations, objArrayOop) \ | |
295 nonstatic_field(instanceKlass, _methods_default_annotations, objArrayOop) \ | |
296 nonstatic_field(Klass, _super_check_offset, juint) \ | |
297 nonstatic_field(Klass, _secondary_super_cache, klassOop) \ | |
298 nonstatic_field(Klass, _secondary_supers, objArrayOop) \ | |
299 nonstatic_field(Klass, _primary_supers[0], klassOop) \ | |
300 nonstatic_field(Klass, _java_mirror, oop) \ | |
301 nonstatic_field(Klass, _modifier_flags, jint) \ | |
302 nonstatic_field(Klass, _super, klassOop) \ | |
303 nonstatic_field(Klass, _layout_helper, jint) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
304 nonstatic_field(Klass, _name, Symbol*) \ |
0 | 305 nonstatic_field(Klass, _access_flags, AccessFlags) \ |
306 nonstatic_field(Klass, _subklass, klassOop) \ | |
307 nonstatic_field(Klass, _next_sibling, klassOop) \ | |
308 nonproduct_nonstatic_field(Klass, _verify_count, int) \ | |
309 nonstatic_field(Klass, _alloc_count, juint) \ | |
310 nonstatic_field(klassKlass, _alloc_size, juint) \ | |
311 nonstatic_field(methodKlass, _alloc_size, juint) \ | |
312 nonstatic_field(methodDataOopDesc, _size, int) \ | |
313 nonstatic_field(methodDataOopDesc, _method, methodOop) \ | |
314 nonstatic_field(methodOopDesc, _constMethod, constMethodOop) \ | |
315 nonstatic_field(methodOopDesc, _constants, constantPoolOop) \ | |
316 c2_nonstatic_field(methodOopDesc, _method_data, methodDataOop) \ | |
317 c2_nonstatic_field(methodOopDesc, _interpreter_invocation_count, int) \ | |
318 nonstatic_field(methodOopDesc, _access_flags, AccessFlags) \ | |
319 nonstatic_field(methodOopDesc, _vtable_index, int) \ | |
320 nonstatic_field(methodOopDesc, _method_size, u2) \ | |
321 nonstatic_field(methodOopDesc, _max_stack, u2) \ | |
322 nonstatic_field(methodOopDesc, _max_locals, u2) \ | |
323 nonstatic_field(methodOopDesc, _size_of_parameters, u2) \ | |
324 c2_nonstatic_field(methodOopDesc, _interpreter_throwout_count, u2) \ | |
325 nonstatic_field(methodOopDesc, _number_of_breakpoints, u2) \ | |
326 nonstatic_field(methodOopDesc, _invocation_counter, InvocationCounter) \ | |
327 nonstatic_field(methodOopDesc, _backedge_counter, InvocationCounter) \ | |
328 nonproduct_nonstatic_field(methodOopDesc, _compiled_invocation_count, int) \ | |
329 volatile_nonstatic_field(methodOopDesc, _code, nmethod*) \ | |
330 nonstatic_field(methodOopDesc, _i2i_entry, address) \ | |
331 nonstatic_field(methodOopDesc, _adapter, AdapterHandlerEntry*) \ | |
332 volatile_nonstatic_field(methodOopDesc, _from_compiled_entry, address) \ | |
333 volatile_nonstatic_field(methodOopDesc, _from_interpreted_entry, address) \ | |
334 volatile_nonstatic_field(constMethodOopDesc, _fingerprint, uint64_t) \ | |
335 nonstatic_field(constMethodOopDesc, _method, methodOop) \ | |
336 nonstatic_field(constMethodOopDesc, _stackmap_data, typeArrayOop) \ | |
337 nonstatic_field(constMethodOopDesc, _exception_table, typeArrayOop) \ | |
338 nonstatic_field(constMethodOopDesc, _constMethod_size, int) \ | |
339 nonstatic_field(constMethodOopDesc, _interpreter_kind, jbyte) \ | |
340 nonstatic_field(constMethodOopDesc, _flags, jbyte) \ | |
341 nonstatic_field(constMethodOopDesc, _code_size, u2) \ | |
342 nonstatic_field(constMethodOopDesc, _name_index, u2) \ | |
343 nonstatic_field(constMethodOopDesc, _signature_index, u2) \ | |
344 nonstatic_field(constMethodOopDesc, _method_idnum, u2) \ | |
345 nonstatic_field(constMethodOopDesc, _generic_signature_index, u2) \ | |
346 nonstatic_field(objArrayKlass, _element_klass, klassOop) \ | |
347 nonstatic_field(objArrayKlass, _bottom_klass, klassOop) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
348 volatile_nonstatic_field(Symbol, _refcount, int) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
349 nonstatic_field(Symbol, _identity_hash, int) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
350 nonstatic_field(Symbol, _length, unsigned short) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
351 unchecked_nonstatic_field(Symbol, _body, sizeof(jbyte)) /* NOTE: no type */ \ |
0 | 352 nonstatic_field(typeArrayKlass, _max_length, int) \ |
353 \ | |
354 /***********************/ \ | |
355 /* Constant Pool Cache */ \ | |
356 /***********************/ \ | |
357 \ | |
358 volatile_nonstatic_field(ConstantPoolCacheEntry, _indices, intx) \ | |
359 volatile_nonstatic_field(ConstantPoolCacheEntry, _f1, oop) \ | |
360 volatile_nonstatic_field(ConstantPoolCacheEntry, _f2, intx) \ | |
361 volatile_nonstatic_field(ConstantPoolCacheEntry, _flags, intx) \ | |
362 \ | |
363 /********************************/ \ | |
364 /* MethodOop-related structures */ \ | |
365 /********************************/ \ | |
366 \ | |
367 nonstatic_field(CheckedExceptionElement, class_cp_index, u2) \ | |
368 nonstatic_field(LocalVariableTableElement, start_bci, u2) \ | |
369 nonstatic_field(LocalVariableTableElement, length, u2) \ | |
370 nonstatic_field(LocalVariableTableElement, name_cp_index, u2) \ | |
371 nonstatic_field(LocalVariableTableElement, descriptor_cp_index, u2) \ | |
372 nonstatic_field(LocalVariableTableElement, signature_cp_index, u2) \ | |
373 nonstatic_field(LocalVariableTableElement, slot, u2) \ | |
374 nonstatic_field(BreakpointInfo, _orig_bytecode, Bytecodes::Code) \ | |
375 nonstatic_field(BreakpointInfo, _bci, int) \ | |
376 nonstatic_field(BreakpointInfo, _name_index, u2) \ | |
377 nonstatic_field(BreakpointInfo, _signature_index, u2) \ | |
378 nonstatic_field(BreakpointInfo, _next, BreakpointInfo*) \ | |
379 /***********/ \ | |
380 /* JNI IDs */ \ | |
381 /***********/ \ | |
382 \ | |
383 nonstatic_field(JNIid, _holder, klassOop) \ | |
384 nonstatic_field(JNIid, _next, JNIid*) \ | |
385 nonstatic_field(JNIid, _offset, int) \ | |
386 /************/ \ | |
387 /* Universe */ \ | |
388 /************/ \ | |
389 \ | |
390 static_field(Universe, _boolArrayKlassObj, klassOop) \ | |
391 static_field(Universe, _byteArrayKlassObj, klassOop) \ | |
392 static_field(Universe, _charArrayKlassObj, klassOop) \ | |
393 static_field(Universe, _intArrayKlassObj, klassOop) \ | |
394 static_field(Universe, _shortArrayKlassObj, klassOop) \ | |
395 static_field(Universe, _longArrayKlassObj, klassOop) \ | |
396 static_field(Universe, _singleArrayKlassObj, klassOop) \ | |
397 static_field(Universe, _doubleArrayKlassObj, klassOop) \ | |
398 static_field(Universe, _methodKlassObj, klassOop) \ | |
399 static_field(Universe, _constMethodKlassObj, klassOop) \ | |
400 static_field(Universe, _methodDataKlassObj, klassOop) \ | |
401 static_field(Universe, _klassKlassObj, klassOop) \ | |
402 static_field(Universe, _arrayKlassKlassObj, klassOop) \ | |
403 static_field(Universe, _objArrayKlassKlassObj, klassOop) \ | |
404 static_field(Universe, _typeArrayKlassKlassObj, klassOop) \ | |
405 static_field(Universe, _instanceKlassKlassObj, klassOop) \ | |
406 static_field(Universe, _constantPoolKlassObj, klassOop) \ | |
407 static_field(Universe, _constantPoolCacheKlassObj, klassOop) \ | |
408 static_field(Universe, _compiledICHolderKlassObj, klassOop) \ | |
409 static_field(Universe, _systemObjArrayKlassObj, klassOop) \ | |
410 static_field(Universe, _mirrors[0], oop) \ | |
411 static_field(Universe, _main_thread_group, oop) \ | |
412 static_field(Universe, _system_thread_group, oop) \ | |
413 static_field(Universe, _the_empty_byte_array, typeArrayOop) \ | |
414 static_field(Universe, _the_empty_short_array, typeArrayOop) \ | |
415 static_field(Universe, _the_empty_int_array, typeArrayOop) \ | |
416 static_field(Universe, _the_empty_system_obj_array, objArrayOop) \ | |
417 static_field(Universe, _the_empty_class_klass_array, objArrayOop) \ | |
418 static_field(Universe, _out_of_memory_error_java_heap, oop) \ | |
419 static_field(Universe, _out_of_memory_error_perm_gen, oop) \ | |
420 static_field(Universe, _out_of_memory_error_array_size, oop) \ | |
421 static_field(Universe, _out_of_memory_error_gc_overhead_limit, oop) \ | |
422 static_field(Universe, _null_ptr_exception_instance, oop) \ | |
423 static_field(Universe, _arithmetic_exception_instance, oop) \ | |
424 static_field(Universe, _vm_exception, oop) \ | |
425 static_field(Universe, _collectedHeap, CollectedHeap*) \ | |
426 static_field(Universe, _base_vtable_size, int) \ | |
427 static_field(Universe, _bootstrapping, bool) \ | |
428 static_field(Universe, _fully_initialized, bool) \ | |
429 static_field(Universe, _verify_count, int) \ | |
642
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
365
diff
changeset
|
430 static_field(Universe, _narrow_oop._base, address) \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
365
diff
changeset
|
431 static_field(Universe, _narrow_oop._shift, int) \ |
660978a2a31a
6791178: Specialize for zero as the compressed oop vm heap base
kvn
parents:
365
diff
changeset
|
432 static_field(Universe, _narrow_oop._use_implicit_null_checks, bool) \ |
0 | 433 \ |
434 /**********************************************************************************/ \ | |
435 /* Generation and Space hierarchies */ \ | |
436 /**********************************************************************************/ \ | |
437 \ | |
438 unchecked_nonstatic_field(ageTable, sizes, sizeof(ageTable::sizes)) \ | |
439 \ | |
440 nonstatic_field(BarrierSet, _max_covered_regions, int) \ | |
441 nonstatic_field(BlockOffsetTable, _bottom, HeapWord*) \ | |
442 nonstatic_field(BlockOffsetTable, _end, HeapWord*) \ | |
443 \ | |
444 nonstatic_field(BlockOffsetSharedArray, _reserved, MemRegion) \ | |
445 nonstatic_field(BlockOffsetSharedArray, _end, HeapWord*) \ | |
446 nonstatic_field(BlockOffsetSharedArray, _vs, VirtualSpace) \ | |
447 nonstatic_field(BlockOffsetSharedArray, _offset_array, u_char*) \ | |
448 \ | |
449 nonstatic_field(BlockOffsetArray, _array, BlockOffsetSharedArray*) \ | |
450 nonstatic_field(BlockOffsetArray, _sp, Space*) \ | |
451 nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_threshold, HeapWord*) \ | |
452 nonstatic_field(BlockOffsetArrayContigSpace, _next_offset_index, size_t) \ | |
453 \ | |
454 nonstatic_field(BlockOffsetArrayNonContigSpace, _unallocated_block, HeapWord*) \ | |
455 \ | |
456 nonstatic_field(CardGeneration, _rs, GenRemSet*) \ | |
457 nonstatic_field(CardGeneration, _bts, BlockOffsetSharedArray*) \ | |
458 \ | |
459 nonstatic_field(CardTableModRefBS, _whole_heap, const MemRegion) \ | |
460 nonstatic_field(CardTableModRefBS, _guard_index, const size_t) \ | |
461 nonstatic_field(CardTableModRefBS, _last_valid_index, const size_t) \ | |
462 nonstatic_field(CardTableModRefBS, _page_size, const size_t) \ | |
463 nonstatic_field(CardTableModRefBS, _byte_map_size, const size_t) \ | |
464 nonstatic_field(CardTableModRefBS, _byte_map, jbyte*) \ | |
465 nonstatic_field(CardTableModRefBS, _cur_covered_regions, int) \ | |
466 nonstatic_field(CardTableModRefBS, _covered, MemRegion*) \ | |
467 nonstatic_field(CardTableModRefBS, _committed, MemRegion*) \ | |
468 nonstatic_field(CardTableModRefBS, _guard_region, MemRegion) \ | |
469 nonstatic_field(CardTableModRefBS, byte_map_base, jbyte*) \ | |
470 \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
471 nonstatic_field(CardTableRS, _ct_bs, CardTableModRefBSForCTRS*) \ |
0 | 472 \ |
473 nonstatic_field(CollectedHeap, _reserved, MemRegion) \ | |
474 nonstatic_field(SharedHeap, _perm_gen, PermGen*) \ | |
475 nonstatic_field(CollectedHeap, _barrier_set, BarrierSet*) \ | |
1166 | 476 nonstatic_field(CollectedHeap, _defer_initial_card_mark, bool) \ |
0 | 477 nonstatic_field(CollectedHeap, _is_gc_active, bool) \ |
478 nonstatic_field(CompactibleSpace, _compaction_top, HeapWord*) \ | |
479 nonstatic_field(CompactibleSpace, _first_dead, HeapWord*) \ | |
480 nonstatic_field(CompactibleSpace, _end_of_live, HeapWord*) \ | |
481 \ | |
482 nonstatic_field(CompactingPermGen, _gen, OneContigSpaceCardGeneration*) \ | |
483 \ | |
484 nonstatic_field(ContiguousSpace, _top, HeapWord*) \ | |
485 nonstatic_field(ContiguousSpace, _concurrent_iteration_safe_limit, HeapWord*) \ | |
486 nonstatic_field(ContiguousSpace, _saved_mark_word, HeapWord*) \ | |
487 \ | |
488 nonstatic_field(DefNewGeneration, _next_gen, Generation*) \ | |
489 nonstatic_field(DefNewGeneration, _tenuring_threshold, int) \ | |
490 nonstatic_field(DefNewGeneration, _age_table, ageTable) \ | |
491 nonstatic_field(DefNewGeneration, _eden_space, EdenSpace*) \ | |
492 nonstatic_field(DefNewGeneration, _from_space, ContiguousSpace*) \ | |
493 nonstatic_field(DefNewGeneration, _to_space, ContiguousSpace*) \ | |
494 \ | |
495 nonstatic_field(EdenSpace, _gen, DefNewGeneration*) \ | |
496 \ | |
497 nonstatic_field(Generation, _reserved, MemRegion) \ | |
498 nonstatic_field(Generation, _virtual_space, VirtualSpace) \ | |
499 nonstatic_field(Generation, _level, int) \ | |
500 nonstatic_field(Generation, _stat_record, Generation::StatRecord) \ | |
501 \ | |
502 nonstatic_field(Generation::StatRecord, invocations, int) \ | |
503 nonstatic_field(Generation::StatRecord, accumulated_time, elapsedTimer) \ | |
504 \ | |
505 nonstatic_field(GenerationSpec, _name, Generation::Name) \ | |
506 nonstatic_field(GenerationSpec, _init_size, size_t) \ | |
507 nonstatic_field(GenerationSpec, _max_size, size_t) \ | |
508 \ | |
509 static_field(GenCollectedHeap, _gch, GenCollectedHeap*) \ | |
510 nonstatic_field(GenCollectedHeap, _n_gens, int) \ | |
511 unchecked_nonstatic_field(GenCollectedHeap, _gens, sizeof(GenCollectedHeap::_gens)) /* NOTE: no type */ \ | |
512 nonstatic_field(GenCollectedHeap, _gen_specs, GenerationSpec**) \ | |
513 \ | |
514 nonstatic_field(HeapWord, i, char*) \ | |
515 \ | |
516 nonstatic_field(MemRegion, _start, HeapWord*) \ | |
517 nonstatic_field(MemRegion, _word_size, size_t) \ | |
518 \ | |
519 nonstatic_field(OffsetTableContigSpace, _offsets, BlockOffsetArray) \ | |
520 \ | |
521 nonstatic_field(OneContigSpaceCardGeneration, _min_heap_delta_bytes, size_t) \ | |
522 nonstatic_field(OneContigSpaceCardGeneration, _the_space, ContiguousSpace*) \ | |
523 nonstatic_field(OneContigSpaceCardGeneration, _last_gc, WaterMark) \ | |
524 \ | |
525 nonstatic_field(CompactingPermGenGen, _ro_vs, VirtualSpace) \ | |
526 nonstatic_field(CompactingPermGenGen, _rw_vs, VirtualSpace) \ | |
527 nonstatic_field(CompactingPermGenGen, _md_vs, VirtualSpace) \ | |
528 nonstatic_field(CompactingPermGenGen, _mc_vs, VirtualSpace) \ | |
529 nonstatic_field(CompactingPermGenGen, _ro_space, OffsetTableContigSpace*) \ | |
530 nonstatic_field(CompactingPermGenGen, _rw_space, OffsetTableContigSpace*) \ | |
531 static_field(CompactingPermGenGen, unshared_bottom, HeapWord*) \ | |
532 static_field(CompactingPermGenGen, unshared_end, HeapWord*) \ | |
533 static_field(CompactingPermGenGen, shared_bottom, HeapWord*) \ | |
534 static_field(CompactingPermGenGen, readonly_bottom, HeapWord*) \ | |
535 static_field(CompactingPermGenGen, readonly_end, HeapWord*) \ | |
536 static_field(CompactingPermGenGen, readwrite_bottom, HeapWord*) \ | |
537 static_field(CompactingPermGenGen, readwrite_end, HeapWord*) \ | |
538 static_field(CompactingPermGenGen, miscdata_bottom, HeapWord*) \ | |
539 static_field(CompactingPermGenGen, miscdata_end, HeapWord*) \ | |
540 static_field(CompactingPermGenGen, misccode_bottom, HeapWord*) \ | |
541 static_field(CompactingPermGenGen, misccode_end, HeapWord*) \ | |
542 static_field(CompactingPermGenGen, shared_end, HeapWord*) \ | |
543 \ | |
544 nonstatic_field(PermGen, _capacity_expansion_limit, size_t) \ | |
545 \ | |
546 nonstatic_field(PermanentGenerationSpec, _name, PermGen::Name) \ | |
547 nonstatic_field(PermanentGenerationSpec, _init_size, size_t) \ | |
548 nonstatic_field(PermanentGenerationSpec, _max_size, size_t) \ | |
549 \ | |
550 nonstatic_field(Space, _bottom, HeapWord*) \ | |
551 nonstatic_field(Space, _end, HeapWord*) \ | |
552 \ | |
553 nonstatic_field(TenuredGeneration, _shrink_factor, size_t) \ | |
554 nonstatic_field(TenuredGeneration, _capacity_at_prologue, size_t) \ | |
555 nonstatic_field(ThreadLocalAllocBuffer, _start, HeapWord*) \ | |
556 nonstatic_field(ThreadLocalAllocBuffer, _top, HeapWord*) \ | |
557 nonstatic_field(ThreadLocalAllocBuffer, _end, HeapWord*) \ | |
558 nonstatic_field(ThreadLocalAllocBuffer, _desired_size, size_t) \ | |
559 nonstatic_field(ThreadLocalAllocBuffer, _refill_waste_limit, size_t) \ | |
560 static_field(ThreadLocalAllocBuffer, _target_refills, unsigned) \ | |
561 nonstatic_field(VirtualSpace, _low_boundary, char*) \ | |
562 nonstatic_field(VirtualSpace, _high_boundary, char*) \ | |
563 nonstatic_field(VirtualSpace, _low, char*) \ | |
564 nonstatic_field(VirtualSpace, _high, char*) \ | |
565 nonstatic_field(VirtualSpace, _lower_high, char*) \ | |
566 nonstatic_field(VirtualSpace, _middle_high, char*) \ | |
567 nonstatic_field(VirtualSpace, _upper_high, char*) \ | |
568 nonstatic_field(WaterMark, _point, HeapWord*) \ | |
569 nonstatic_field(WaterMark, _space, Space*) \ | |
570 \ | |
571 /************************/ \ | |
572 /* PerfMemory - jvmstat */ \ | |
573 /************************/ \ | |
574 \ | |
575 nonstatic_field(PerfDataPrologue, magic, jint) \ | |
576 nonstatic_field(PerfDataPrologue, byte_order, jbyte) \ | |
577 nonstatic_field(PerfDataPrologue, major_version, jbyte) \ | |
578 nonstatic_field(PerfDataPrologue, minor_version, jbyte) \ | |
579 nonstatic_field(PerfDataPrologue, accessible, jbyte) \ | |
580 nonstatic_field(PerfDataPrologue, used, jint) \ | |
581 nonstatic_field(PerfDataPrologue, overflow, jint) \ | |
582 nonstatic_field(PerfDataPrologue, mod_time_stamp, jlong) \ | |
583 nonstatic_field(PerfDataPrologue, entry_offset, jint) \ | |
584 nonstatic_field(PerfDataPrologue, num_entries, jint) \ | |
585 \ | |
586 nonstatic_field(PerfDataEntry, entry_length, jint) \ | |
587 nonstatic_field(PerfDataEntry, name_offset, jint) \ | |
588 nonstatic_field(PerfDataEntry, vector_length, jint) \ | |
589 nonstatic_field(PerfDataEntry, data_type, jbyte) \ | |
590 nonstatic_field(PerfDataEntry, flags, jbyte) \ | |
591 nonstatic_field(PerfDataEntry, data_units, jbyte) \ | |
592 nonstatic_field(PerfDataEntry, data_variability, jbyte) \ | |
593 nonstatic_field(PerfDataEntry, data_offset, jint) \ | |
594 \ | |
595 static_field(PerfMemory, _start, char*) \ | |
596 static_field(PerfMemory, _end, char*) \ | |
597 static_field(PerfMemory, _top, char*) \ | |
598 static_field(PerfMemory, _capacity, size_t) \ | |
599 static_field(PerfMemory, _prologue, PerfDataPrologue*) \ | |
600 static_field(PerfMemory, _initialized, jint) \ | |
601 \ | |
602 /***************/ \ | |
603 /* SymbolTable */ \ | |
604 /***************/ \ | |
605 \ | |
606 static_field(SymbolTable, _the_table, SymbolTable*) \ | |
607 \ | |
608 /***************/ \ | |
609 /* StringTable */ \ | |
610 /***************/ \ | |
611 \ | |
612 static_field(StringTable, _the_table, StringTable*) \ | |
613 \ | |
614 /********************/ \ | |
615 /* SystemDictionary */ \ | |
616 /********************/ \ | |
617 \ | |
618 static_field(SystemDictionary, _dictionary, Dictionary*) \ | |
619 static_field(SystemDictionary, _placeholders, PlaceholderTable*) \ | |
620 static_field(SystemDictionary, _shared_dictionary, Dictionary*) \ | |
621 static_field(SystemDictionary, _system_loader_lock_obj, oop) \ | |
622 static_field(SystemDictionary, _loader_constraints, LoaderConstraintTable*) \ | |
1142 | 623 static_field(SystemDictionary, WK_KLASS(Object_klass), klassOop) \ |
624 static_field(SystemDictionary, WK_KLASS(String_klass), klassOop) \ | |
625 static_field(SystemDictionary, WK_KLASS(Class_klass), klassOop) \ | |
626 static_field(SystemDictionary, WK_KLASS(Cloneable_klass), klassOop) \ | |
627 static_field(SystemDictionary, WK_KLASS(ClassLoader_klass), klassOop) \ | |
628 static_field(SystemDictionary, WK_KLASS(Serializable_klass), klassOop) \ | |
629 static_field(SystemDictionary, WK_KLASS(System_klass), klassOop) \ | |
630 static_field(SystemDictionary, WK_KLASS(Throwable_klass), klassOop) \ | |
631 static_field(SystemDictionary, WK_KLASS(ThreadDeath_klass), klassOop) \ | |
632 static_field(SystemDictionary, WK_KLASS(Error_klass), klassOop) \ | |
633 static_field(SystemDictionary, WK_KLASS(Exception_klass), klassOop) \ | |
634 static_field(SystemDictionary, WK_KLASS(RuntimeException_klass), klassOop) \ | |
635 static_field(SystemDictionary, WK_KLASS(ClassNotFoundException_klass), klassOop) \ | |
636 static_field(SystemDictionary, WK_KLASS(NoClassDefFoundError_klass), klassOop) \ | |
637 static_field(SystemDictionary, WK_KLASS(LinkageError_klass), klassOop) \ | |
147 | 638 static_field(SystemDictionary, WK_KLASS(ClassCastException_klass), klassOop) \ |
639 static_field(SystemDictionary, WK_KLASS(ArrayStoreException_klass), klassOop) \ | |
1142 | 640 static_field(SystemDictionary, WK_KLASS(VirtualMachineError_klass), klassOop) \ |
147 | 641 static_field(SystemDictionary, WK_KLASS(OutOfMemoryError_klass), klassOop) \ |
642 static_field(SystemDictionary, WK_KLASS(StackOverflowError_klass), klassOop) \ | |
1142 | 643 static_field(SystemDictionary, WK_KLASS(ProtectionDomain_klass), klassOop) \ |
147 | 644 static_field(SystemDictionary, WK_KLASS(AccessControlContext_klass), klassOop) \ |
1142 | 645 static_field(SystemDictionary, WK_KLASS(Reference_klass), klassOop) \ |
646 static_field(SystemDictionary, WK_KLASS(SoftReference_klass), klassOop) \ | |
647 static_field(SystemDictionary, WK_KLASS(WeakReference_klass), klassOop) \ | |
648 static_field(SystemDictionary, WK_KLASS(FinalReference_klass), klassOop) \ | |
649 static_field(SystemDictionary, WK_KLASS(PhantomReference_klass), klassOop) \ | |
650 static_field(SystemDictionary, WK_KLASS(Finalizer_klass), klassOop) \ | |
651 static_field(SystemDictionary, WK_KLASS(Thread_klass), klassOop) \ | |
652 static_field(SystemDictionary, WK_KLASS(ThreadGroup_klass), klassOop) \ | |
653 static_field(SystemDictionary, WK_KLASS(Properties_klass), klassOop) \ | |
654 static_field(SystemDictionary, WK_KLASS(StringBuffer_klass), klassOop) \ | |
0 | 655 static_field(SystemDictionary, _box_klasses[0], klassOop) \ |
656 static_field(SystemDictionary, _java_system_loader, oop) \ | |
657 \ | |
658 /*******************/ \ | |
659 /* HashtableBucket */ \ | |
660 /*******************/ \ | |
661 \ | |
662 nonstatic_field(HashtableBucket, _entry, BasicHashtableEntry*) \ | |
663 \ | |
664 /******************/ \ | |
665 /* HashtableEntry */ \ | |
666 /******************/ \ | |
667 \ | |
668 nonstatic_field(BasicHashtableEntry, _next, BasicHashtableEntry*) \ | |
669 nonstatic_field(BasicHashtableEntry, _hash, unsigned int) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
670 nonstatic_field(HashtableEntry<intptr_t>, _literal, intptr_t) \ |
0 | 671 \ |
672 /*************/ \ | |
673 /* Hashtable */ \ | |
674 /*************/ \ | |
675 \ | |
676 nonstatic_field(BasicHashtable, _table_size, int) \ | |
677 nonstatic_field(BasicHashtable, _buckets, HashtableBucket*) \ | |
678 nonstatic_field(BasicHashtable, _free_list, BasicHashtableEntry*) \ | |
679 nonstatic_field(BasicHashtable, _first_free_entry, char*) \ | |
680 nonstatic_field(BasicHashtable, _end_block, char*) \ | |
681 nonstatic_field(BasicHashtable, _entry_size, int) \ | |
682 \ | |
683 /*******************/ \ | |
684 /* DictionaryEntry */ \ | |
685 /*******************/ \ | |
686 \ | |
687 nonstatic_field(DictionaryEntry, _loader, oop) \ | |
688 nonstatic_field(DictionaryEntry, _pd_set, ProtectionDomainEntry*) \ | |
689 \ | |
690 /********************/ \ | |
691 \ | |
692 nonstatic_field(PlaceholderEntry, _loader, oop) \ | |
693 \ | |
694 /**************************/ \ | |
695 /* ProctectionDomainEntry */ \ | |
696 /**************************/ \ | |
697 \ | |
698 nonstatic_field(ProtectionDomainEntry, _next, ProtectionDomainEntry*) \ | |
699 nonstatic_field(ProtectionDomainEntry, _protection_domain, oop) \ | |
700 \ | |
701 /*************************/ \ | |
702 /* LoaderConstraintEntry */ \ | |
703 /*************************/ \ | |
704 \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
705 nonstatic_field(LoaderConstraintEntry, _name, Symbol*) \ |
0 | 706 nonstatic_field(LoaderConstraintEntry, _num_loaders, int) \ |
707 nonstatic_field(LoaderConstraintEntry, _max_loaders, int) \ | |
708 nonstatic_field(LoaderConstraintEntry, _loaders, oop*) \ | |
709 \ | |
710 /********************************/ \ | |
711 /* CodeCache (NOTE: incomplete) */ \ | |
712 /********************************/ \ | |
713 \ | |
714 static_field(CodeCache, _heap, CodeHeap*) \ | |
989
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
931
diff
changeset
|
715 static_field(CodeCache, _scavenge_root_nmethods, nmethod*) \ |
0 | 716 \ |
717 /*******************************/ \ | |
718 /* CodeHeap (NOTE: incomplete) */ \ | |
719 /*******************************/ \ | |
720 \ | |
721 nonstatic_field(CodeHeap, _memory, VirtualSpace) \ | |
722 nonstatic_field(CodeHeap, _segmap, VirtualSpace) \ | |
723 nonstatic_field(CodeHeap, _log2_segment_size, int) \ | |
724 nonstatic_field(HeapBlock, _header, HeapBlock::Header) \ | |
725 nonstatic_field(HeapBlock::Header, _length, size_t) \ | |
726 nonstatic_field(HeapBlock::Header, _used, bool) \ | |
727 \ | |
728 /**********************************/ \ | |
729 /* Interpreter (NOTE: incomplete) */ \ | |
730 /**********************************/ \ | |
731 \ | |
732 static_field(AbstractInterpreter, _code, StubQueue*) \ | |
733 \ | |
734 /****************************/ \ | |
735 /* Stubs (NOTE: incomplete) */ \ | |
736 /****************************/ \ | |
737 \ | |
738 nonstatic_field(StubQueue, _stub_buffer, address) \ | |
739 nonstatic_field(StubQueue, _buffer_limit, int) \ | |
740 nonstatic_field(StubQueue, _queue_begin, int) \ | |
741 nonstatic_field(StubQueue, _queue_end, int) \ | |
742 nonstatic_field(StubQueue, _number_of_stubs, int) \ | |
743 nonstatic_field(InterpreterCodelet, _size, int) \ | |
744 nonstatic_field(InterpreterCodelet, _description, const char*) \ | |
745 nonstatic_field(InterpreterCodelet, _bytecode, Bytecodes::Code) \ | |
746 \ | |
747 /***********************************/ \ | |
748 /* StubRoutines (NOTE: incomplete) */ \ | |
749 /***********************************/ \ | |
750 \ | |
751 static_field(StubRoutines, _call_stub_return_address, address) \ | |
752 \ | |
753 /***************************************/ \ | |
754 /* PcDesc and other compiled code info */ \ | |
755 /***************************************/ \ | |
756 \ | |
757 nonstatic_field(PcDesc, _pc_offset, int) \ | |
758 nonstatic_field(PcDesc, _scope_decode_offset, int) \ | |
1040
873ec3787992
6892186: SA does not dump debug info for scalar replaced objects
kvn
parents:
993
diff
changeset
|
759 nonstatic_field(PcDesc, _obj_decode_offset, int) \ |
931
72088be4b386
6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit
cfang
parents:
844
diff
changeset
|
760 nonstatic_field(PcDesc, _flags, PcDesc::PcDescFlags) \ |
0 | 761 \ |
762 /***************************************************/ \ | |
763 /* CodeBlobs (NOTE: incomplete, but only a little) */ \ | |
764 /***************************************************/ \ | |
765 \ | |
766 nonstatic_field(CodeBlob, _name, const char*) \ | |
767 nonstatic_field(CodeBlob, _size, int) \ | |
768 nonstatic_field(CodeBlob, _header_size, int) \ | |
769 nonstatic_field(CodeBlob, _relocation_size, int) \ | |
1748 | 770 nonstatic_field(CodeBlob, _content_offset, int) \ |
771 nonstatic_field(CodeBlob, _code_offset, int) \ | |
0 | 772 nonstatic_field(CodeBlob, _frame_complete_offset, int) \ |
773 nonstatic_field(CodeBlob, _data_offset, int) \ | |
774 nonstatic_field(CodeBlob, _frame_size, int) \ | |
775 nonstatic_field(CodeBlob, _oop_maps, OopMapSet*) \ | |
776 \ | |
777 /**************************************************/ \ | |
778 /* NMethods (NOTE: incomplete, but only a little) */ \ | |
779 /**************************************************/ \ | |
780 \ | |
781 nonstatic_field(nmethod, _method, methodOop) \ | |
782 nonstatic_field(nmethod, _entry_bci, int) \ | |
989
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
931
diff
changeset
|
783 nonstatic_field(nmethod, _osr_link, nmethod*) \ |
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
931
diff
changeset
|
784 nonstatic_field(nmethod, _scavenge_root_link, nmethod*) \ |
148e5441d916
6863023: need non-perm oops in code cache for JSR 292
jrose
parents:
931
diff
changeset
|
785 nonstatic_field(nmethod, _scavenge_root_state, jbyte) \ |
3388
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
786 nonstatic_field(nmethod, _state, unsigned char) \ |
0 | 787 nonstatic_field(nmethod, _exception_offset, int) \ |
788 nonstatic_field(nmethod, _deoptimize_offset, int) \ | |
789 nonstatic_field(nmethod, _orig_pc_offset, int) \ | |
790 nonstatic_field(nmethod, _stub_offset, int) \ | |
1563
1a5913bf5e19
6951083: oops and relocations should part of nmethod not CodeBlob
twisti
parents:
1166
diff
changeset
|
791 nonstatic_field(nmethod, _consts_offset, int) \ |
1a5913bf5e19
6951083: oops and relocations should part of nmethod not CodeBlob
twisti
parents:
1166
diff
changeset
|
792 nonstatic_field(nmethod, _oops_offset, int) \ |
0 | 793 nonstatic_field(nmethod, _scopes_data_offset, int) \ |
794 nonstatic_field(nmethod, _scopes_pcs_offset, int) \ | |
795 nonstatic_field(nmethod, _dependencies_offset, int) \ | |
796 nonstatic_field(nmethod, _handler_table_offset, int) \ | |
797 nonstatic_field(nmethod, _nul_chk_table_offset, int) \ | |
798 nonstatic_field(nmethod, _nmethod_end_offset, int) \ | |
799 nonstatic_field(nmethod, _entry_point, address) \ | |
800 nonstatic_field(nmethod, _verified_entry_point, address) \ | |
801 nonstatic_field(nmethod, _osr_entry_point, address) \ | |
802 nonstatic_field(nmethod, _lock_count, jint) \ | |
803 nonstatic_field(nmethod, _stack_traversal_mark, long) \ | |
3388
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
804 nonstatic_field(nmethod, _compile_id, int) \ |
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
805 nonstatic_field(nmethod, _marked_for_deoptimization, bool) \ |
0 | 806 \ |
807 /********************************/ \ | |
808 /* JavaCalls (NOTE: incomplete) */ \ | |
809 /********************************/ \ | |
810 \ | |
811 nonstatic_field(JavaCallWrapper, _anchor, JavaFrameAnchor) \ | |
812 /********************************/ \ | |
813 /* JavaFrameAnchor (NOTE: incomplete) */ \ | |
814 /********************************/ \ | |
815 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \ | |
816 volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \ | |
817 \ | |
818 /******************************/ \ | |
819 /* Threads (NOTE: incomplete) */ \ | |
820 /******************************/ \ | |
821 \ | |
822 static_field(Threads, _thread_list, JavaThread*) \ | |
823 static_field(Threads, _number_of_threads, int) \ | |
824 static_field(Threads, _number_of_non_daemon_threads, int) \ | |
825 static_field(Threads, _return_code, int) \ | |
826 \ | |
827 volatile_nonstatic_field(Thread, _suspend_flags, uint32_t) \ | |
828 nonstatic_field(Thread, _active_handles, JNIHandleBlock*) \ | |
829 nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \ | |
830 nonstatic_field(Thread, _current_pending_monitor, ObjectMonitor*) \ | |
831 nonstatic_field(Thread, _current_pending_monitor_is_from_java, bool) \ | |
832 nonstatic_field(Thread, _current_waiting_monitor, ObjectMonitor*) \ | |
833 nonstatic_field(NamedThread, _name, char*) \ | |
1119
547f81740344
6361589: Print out stack trace for target thread of GC crash
minqi
parents:
1040
diff
changeset
|
834 nonstatic_field(NamedThread, _processed_thread, JavaThread*) \ |
0 | 835 nonstatic_field(JavaThread, _next, JavaThread*) \ |
836 nonstatic_field(JavaThread, _threadObj, oop) \ | |
837 nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \ | |
838 volatile_nonstatic_field(JavaThread, _thread_state, JavaThreadState) \ | |
839 nonstatic_field(JavaThread, _osthread, OSThread*) \ | |
840 nonstatic_field(JavaThread, _stack_base, address) \ | |
841 nonstatic_field(JavaThread, _stack_size, size_t) \ | |
842 \ | |
843 /************/ \ | |
844 /* OSThread */ \ | |
845 /************/ \ | |
846 \ | |
2386
083f13976b51
6535709: interrupt of wait()ing thread isn't triggerring InterruptedException - test intwait3
dholmes
parents:
2260
diff
changeset
|
847 volatile_nonstatic_field(OSThread, _interrupted, jint) \ |
0 | 848 \ |
849 /************************/ \ | |
850 /* OopMap and OopMapSet */ \ | |
851 /************************/ \ | |
852 \ | |
853 nonstatic_field(OopMap, _pc_offset, int) \ | |
854 nonstatic_field(OopMap, _omv_count, int) \ | |
855 nonstatic_field(OopMap, _omv_data_size, int) \ | |
856 nonstatic_field(OopMap, _omv_data, unsigned char*) \ | |
857 nonstatic_field(OopMap, _write_stream, CompressedWriteStream*) \ | |
858 nonstatic_field(OopMapSet, _om_count, int) \ | |
859 nonstatic_field(OopMapSet, _om_size, int) \ | |
860 nonstatic_field(OopMapSet, _om_data, OopMap**) \ | |
861 \ | |
862 /*********************************/ \ | |
863 /* JNIHandles and JNIHandleBlock */ \ | |
864 /*********************************/ \ | |
865 static_field(JNIHandles, _global_handles, JNIHandleBlock*) \ | |
866 static_field(JNIHandles, _weak_global_handles, JNIHandleBlock*) \ | |
867 static_field(JNIHandles, _deleted_handle, oop) \ | |
868 \ | |
869 unchecked_nonstatic_field(JNIHandleBlock, _handles, JNIHandleBlock::block_size_in_oops * sizeof(Oop)) /* Note: no type */ \ | |
870 nonstatic_field(JNIHandleBlock, _top, int) \ | |
871 nonstatic_field(JNIHandleBlock, _next, JNIHandleBlock*) \ | |
872 \ | |
873 /********************/ \ | |
874 /* CompressedStream */ \ | |
875 /********************/ \ | |
876 \ | |
877 nonstatic_field(CompressedStream, _buffer, u_char*) \ | |
878 nonstatic_field(CompressedStream, _position, int) \ | |
879 \ | |
880 /*********************************/ \ | |
881 /* VMRegImpl (NOTE: incomplete) */ \ | |
882 /*********************************/ \ | |
883 \ | |
884 static_field(VMRegImpl, regName[0], const char*) \ | |
885 static_field(VMRegImpl, stack0, VMReg) \ | |
886 \ | |
887 /*******************************/ \ | |
888 /* Runtime1 (NOTE: incomplete) */ \ | |
889 /*******************************/ \ | |
890 \ | |
891 unchecked_c1_static_field(Runtime1, _blobs, sizeof(Runtime1::_blobs)) /* NOTE: no type */ \ | |
892 \ | |
893 /************/ \ | |
894 /* Monitors */ \ | |
895 /************/ \ | |
896 \ | |
897 volatile_nonstatic_field(ObjectMonitor, _header, markOop) \ | |
898 unchecked_nonstatic_field(ObjectMonitor, _object, sizeof(void *)) /* NOTE: no type */ \ | |
899 unchecked_nonstatic_field(ObjectMonitor, _owner, sizeof(void *)) /* NOTE: no type */ \ | |
900 volatile_nonstatic_field(ObjectMonitor, _count, intptr_t) \ | |
901 volatile_nonstatic_field(ObjectMonitor, _waiters, intptr_t) \ | |
902 volatile_nonstatic_field(ObjectMonitor, _recursions, intptr_t) \ | |
903 nonstatic_field(ObjectMonitor, FreeNext, ObjectMonitor*) \ | |
904 volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \ | |
905 nonstatic_field(BasicObjectLock, _lock, BasicLock) \ | |
906 nonstatic_field(BasicObjectLock, _obj, oop) \ | |
907 static_field(ObjectSynchronizer, gBlockList, ObjectMonitor*) \ | |
908 \ | |
909 /*********************/ \ | |
910 /* Matcher (C2 only) */ \ | |
911 /*********************/ \ | |
912 \ | |
913 unchecked_c2_static_field(Matcher, _regEncode, sizeof(Matcher::_regEncode)) /* NOTE: no type */ \ | |
914 \ | |
915 /*********************/ \ | |
916 /* -XX flags */ \ | |
917 /*********************/ \ | |
918 \ | |
919 nonstatic_field(Flag, type, const char*) \ | |
920 nonstatic_field(Flag, name, const char*) \ | |
921 unchecked_nonstatic_field(Flag, addr, sizeof(void*)) /* NOTE: no type */ \ | |
922 nonstatic_field(Flag, kind, const char*) \ | |
923 static_field(Flag, flags, Flag*) \ | |
924 static_field(Flag, numFlags, size_t) \ | |
925 \ | |
926 /*************************/ \ | |
927 /* JDK / VM version info */ \ | |
928 /*************************/ \ | |
929 \ | |
930 static_field(Abstract_VM_Version, _s_vm_release, const char*) \ | |
931 static_field(Abstract_VM_Version, _s_internal_vm_info_string, const char*) \ | |
932 static_field(Abstract_VM_Version, _vm_major_version, int) \ | |
933 static_field(Abstract_VM_Version, _vm_minor_version, int) \ | |
934 static_field(Abstract_VM_Version, _vm_build_number, int) \ | |
935 \ | |
242 | 936 static_field(JDK_Version, _current, JDK_Version) \ |
937 nonstatic_field(JDK_Version, _partially_initialized, bool) \ | |
938 nonstatic_field(JDK_Version, _major, unsigned char) \ | |
0 | 939 \ |
940 \ | |
941 \ | |
942 /*************/ \ | |
943 /* Arguments */ \ | |
944 /*************/ \ | |
945 \ | |
946 static_field(Arguments, _jvm_flags_array, char**) \ | |
947 static_field(Arguments, _num_jvm_flags, int) \ | |
948 static_field(Arguments, _jvm_args_array, char**) \ | |
949 static_field(Arguments, _num_jvm_args, int) \ | |
950 static_field(Arguments, _java_command, char*) \ | |
951 \ | |
2376
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
952 /*********************************/ \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
953 /* java_lang_Class fields */ \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
954 /*********************************/ \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
955 \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
956 static_field(java_lang_Class, klass_offset, int) \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
957 static_field(java_lang_Class, resolved_constructor_offset, int) \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
958 static_field(java_lang_Class, array_klass_offset, int) \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
959 static_field(java_lang_Class, oop_size_offset, int) \ |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
960 static_field(java_lang_Class, static_oop_field_count_offset, int) \ |
0 | 961 \ |
962 /************************/ \ | |
963 /* Miscellaneous fields */ \ | |
964 /************************/ \ | |
965 \ | |
966 nonstatic_field(AccessFlags, _flags, jint) \ | |
967 nonstatic_field(elapsedTimer, _counter, jlong) \ | |
968 nonstatic_field(elapsedTimer, _active, bool) \ | |
969 nonstatic_field(InvocationCounter, _counter, unsigned int) | |
970 | |
971 /* NOTE that we do not use the last_entry() macro here; it is used */ | |
972 /* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must */ | |
973 /* be present there) */ | |
974 | |
975 //-------------------------------------------------------------------------------- | |
976 // VM_TYPES | |
977 // | |
978 // This list must enumerate at least all of the types in the above | |
979 // list. For the types in the above list, the entry below must have | |
980 // exactly the same spacing since string comparisons are done in the | |
981 // code which verifies the consistency of these tables (in the debug | |
982 // build). | |
983 // | |
984 // In addition to the above types, this list is required to enumerate | |
985 // the JNI's java types, which are used to indicate the size of Java | |
986 // fields in this VM to the SA. Further, oop types are currently | |
987 // distinguished by name (i.e., ends with "oop") over in the SA. | |
988 // | |
989 // The declare_toplevel_type macro should be used to declare types | |
990 // which do not have a superclass. | |
991 // | |
992 // The declare_integer_type and declare_unsigned_integer_type macros | |
993 // are required in order to properly identify C integer types over in | |
994 // the SA. They should be used for any type which is otherwise opaque | |
995 // and which it is necessary to coerce into an integer value. This | |
996 // includes, for example, the type uintptr_t. Note that while they | |
997 // will properly identify the type's size regardless of the platform, | |
998 // since it is does not seem possible to deduce or check signedness at | |
999 // compile time using the pointer comparison tricks, it is currently | |
1000 // required that the given types have the same signedness across all | |
1001 // platforms. | |
1002 // | |
1003 // NOTE that there are platform-specific additions to this table in | |
1004 // vmStructs_<os>_<cpu>.hpp. | |
1005 | |
1006 #define VM_TYPES(declare_type, \ | |
1007 declare_toplevel_type, \ | |
1008 declare_oop_type, \ | |
1009 declare_integer_type, \ | |
1010 declare_unsigned_integer_type, \ | |
1011 declare_c1_toplevel_type, \ | |
1012 declare_c2_type, \ | |
1013 declare_c2_toplevel_type, \ | |
1014 last_entry) \ | |
1015 \ | |
1016 /*************************************************************/ \ | |
1017 /* Java primitive types -- required by the SA implementation */ \ | |
1018 /* in order to determine the size of Java fields in this VM */ \ | |
1019 /* (the implementation looks up these names specifically) */ \ | |
1020 /* NOTE: since we fetch these sizes from the remote VM, we */ \ | |
1021 /* have a bootstrapping sequence during which it is not */ \ | |
1022 /* valid to fetch Java values from the remote process, only */ \ | |
1023 /* C integer values (of known size). NOTE also that we do */ \ | |
1024 /* NOT include "Java unsigned" types like juint here; since */ \ | |
1025 /* Java does not have unsigned primitive types, those can */ \ | |
1026 /* not be mapped directly and are considered to be C integer */ \ | |
1027 /* types in this system (see the "other types" section, */ \ | |
1028 /* below.) */ \ | |
1029 /*************************************************************/ \ | |
1030 \ | |
1031 declare_toplevel_type(jboolean) \ | |
1032 declare_toplevel_type(jbyte) \ | |
1033 declare_toplevel_type(jchar) \ | |
1034 declare_toplevel_type(jdouble) \ | |
1035 declare_toplevel_type(jfloat) \ | |
1036 declare_toplevel_type(jint) \ | |
1037 declare_toplevel_type(jlong) \ | |
1038 declare_toplevel_type(jshort) \ | |
1039 \ | |
1040 /*********************************************************************/ \ | |
1041 /* C integer types. User-defined typedefs (like "size_t" or */ \ | |
1042 /* "intptr_t") are guaranteed to be present with the same names over */ \ | |
1043 /* in the SA's type database. Names like "unsigned short" are not */ \ | |
1044 /* guaranteed to be visible through the SA's type database lookup */ \ | |
1045 /* mechanism, though they will have a Type object created for them */ \ | |
1046 /* and are valid types for Fields. */ \ | |
1047 /*********************************************************************/ \ | |
1048 declare_integer_type(bool) \ | |
1049 declare_integer_type(int) \ | |
1050 declare_integer_type(long) \ | |
1051 declare_integer_type(char) \ | |
1052 declare_unsigned_integer_type(unsigned char) \ | |
1053 declare_unsigned_integer_type(unsigned int) \ | |
1054 declare_unsigned_integer_type(unsigned short) \ | |
1055 declare_unsigned_integer_type(unsigned long) \ | |
1056 /* The compiler thinks this is a different type than */ \ | |
1057 /* unsigned short on Win32 */ \ | |
1058 declare_unsigned_integer_type(u2) \ | |
1059 declare_unsigned_integer_type(unsigned) \ | |
1060 \ | |
1061 /*****************************/ \ | |
1062 /* C primitive pointer types */ \ | |
1063 /*****************************/ \ | |
1064 \ | |
1065 declare_toplevel_type(int*) \ | |
1066 declare_toplevel_type(char*) \ | |
1067 declare_toplevel_type(char**) \ | |
1068 declare_toplevel_type(const char*) \ | |
1069 declare_toplevel_type(u_char*) \ | |
1070 declare_toplevel_type(unsigned char*) \ | |
1071 \ | |
1072 /*******************************************************************/ \ | |
1073 /* Types which it will be handy to have available over in the SA */ \ | |
1074 /* in order to do platform-independent address -> integer coercion */ \ | |
1075 /* (note: these will be looked up by name) */ \ | |
1076 /*******************************************************************/ \ | |
1077 \ | |
1078 declare_unsigned_integer_type(size_t) \ | |
152
c70a245cad3a
6670684: 4/5 SA command universe did not print out CMS space information
dcubed
parents:
0
diff
changeset
|
1079 declare_integer_type(ssize_t) \ |
0 | 1080 declare_unsigned_integer_type(const size_t) \ |
1081 declare_integer_type(intx) \ | |
1082 declare_integer_type(intptr_t) \ | |
1083 declare_unsigned_integer_type(uintx) \ | |
1084 declare_unsigned_integer_type(uintptr_t) \ | |
1085 declare_unsigned_integer_type(uint32_t) \ | |
1086 declare_unsigned_integer_type(uint64_t) \ | |
1087 declare_integer_type(const int) \ | |
1088 \ | |
1089 /*******************************************************************************/ \ | |
1090 /* OopDesc and Klass hierarchies (NOTE: missing methodDataOop-related classes) */ \ | |
1091 /*******************************************************************************/ \ | |
1092 \ | |
1093 declare_toplevel_type(oopDesc) \ | |
1094 declare_toplevel_type(Klass_vtbl) \ | |
1095 declare_type(Klass, Klass_vtbl) \ | |
1096 declare_type(arrayKlass, Klass) \ | |
1097 declare_type(arrayKlassKlass, klassKlass) \ | |
1098 declare_type(arrayOopDesc, oopDesc) \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1099 declare_type(compiledICHolderKlass, Klass) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1100 declare_type(compiledICHolderOopDesc, oopDesc) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1101 declare_type(constantPoolKlass, Klass) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1102 declare_type(constantPoolOopDesc, oopDesc) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1103 declare_type(constantPoolCacheKlass, Klass) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1104 declare_type(constantPoolCacheOopDesc, oopDesc) \ |
0 | 1105 declare_type(instanceKlass, Klass) \ |
1106 declare_type(instanceKlassKlass, klassKlass) \ | |
1107 declare_type(instanceOopDesc, oopDesc) \ | |
2411
63997f575155
7031614: jmap -permstat fails with java.lang.InternalError in sun.jvm.hotspot.oops.OopField.getValue
never
parents:
2388
diff
changeset
|
1108 declare_type(instanceMirrorKlass, instanceKlass) \ |
0 | 1109 declare_type(instanceRefKlass, instanceKlass) \ |
1110 declare_type(klassKlass, Klass) \ | |
1111 declare_type(klassOopDesc, oopDesc) \ | |
1112 declare_type(markOopDesc, oopDesc) \ | |
1113 declare_type(methodDataKlass, Klass) \ | |
1114 declare_type(methodDataOopDesc, oopDesc) \ | |
1115 declare_type(methodKlass, Klass) \ | |
1116 declare_type(constMethodKlass, Klass) \ | |
1117 declare_type(methodOopDesc, oopDesc) \ | |
1118 declare_type(objArrayKlass, arrayKlass) \ | |
1119 declare_type(objArrayKlassKlass, arrayKlassKlass) \ | |
1120 declare_type(objArrayOopDesc, arrayOopDesc) \ | |
1121 declare_type(constMethodOopDesc, oopDesc) \ | |
1122 declare_type(typeArrayKlass, arrayKlass) \ | |
1123 declare_type(typeArrayKlassKlass, arrayKlassKlass) \ | |
1124 declare_type(typeArrayOopDesc, arrayOopDesc) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1125 declare_toplevel_type(Symbol) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1126 declare_toplevel_type(Symbol*) \ |
0 | 1127 \ |
1128 /********/ \ | |
1129 /* Oops */ \ | |
1130 /********/ \ | |
1131 \ | |
1132 declare_oop_type(constantPoolOop) \ | |
1133 declare_oop_type(constantPoolCacheOop) \ | |
1134 declare_oop_type(klassOop) \ | |
1135 declare_oop_type(markOop) \ | |
1136 declare_oop_type(methodOop) \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1137 declare_oop_type(methodDataOop) \ |
0 | 1138 declare_oop_type(objArrayOop) \ |
1139 declare_oop_type(oop) \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1140 declare_oop_type(narrowOop) \ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1141 declare_oop_type(wideKlassOop) \ |
0 | 1142 declare_oop_type(constMethodOop) \ |
1143 declare_oop_type(typeArrayOop) \ | |
1144 \ | |
1145 /*************************************/ \ | |
1146 /* MethodOop-related data structures */ \ | |
1147 /*************************************/ \ | |
1148 \ | |
1149 declare_toplevel_type(CheckedExceptionElement) \ | |
1150 declare_toplevel_type(LocalVariableTableElement) \ | |
1151 \ | |
1152 /******************************************/ \ | |
1153 /* Generation and space hierarchies */ \ | |
1154 /* (needed for run-time type information) */ \ | |
1155 /******************************************/ \ | |
1156 \ | |
1157 declare_toplevel_type(CollectedHeap) \ | |
1158 declare_type(SharedHeap, CollectedHeap) \ | |
1159 declare_type(GenCollectedHeap, SharedHeap) \ | |
1160 declare_toplevel_type(Generation) \ | |
1161 declare_type(DefNewGeneration, Generation) \ | |
1162 declare_type(CardGeneration, Generation) \ | |
1163 declare_type(OneContigSpaceCardGeneration, CardGeneration) \ | |
1164 declare_type(TenuredGeneration, OneContigSpaceCardGeneration) \ | |
1165 declare_type(CompactingPermGenGen, OneContigSpaceCardGeneration) \ | |
1166 declare_toplevel_type(Space) \ | |
1167 declare_toplevel_type(BitMap) \ | |
1168 declare_type(CompactibleSpace, Space) \ | |
1169 declare_type(ContiguousSpace, CompactibleSpace) \ | |
1170 declare_type(EdenSpace, ContiguousSpace) \ | |
1171 declare_type(OffsetTableContigSpace, ContiguousSpace) \ | |
1172 declare_type(TenuredSpace, OffsetTableContigSpace) \ | |
1173 declare_type(ContigPermSpace, OffsetTableContigSpace) \ | |
1174 declare_toplevel_type(PermGen) \ | |
1175 declare_type(CompactingPermGen, PermGen) \ | |
1176 declare_toplevel_type(BarrierSet) \ | |
1177 declare_type(ModRefBarrierSet, BarrierSet) \ | |
1178 declare_type(CardTableModRefBS, ModRefBarrierSet) \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
1179 declare_type(CardTableModRefBSForCTRS, CardTableModRefBS) \ |
0 | 1180 declare_toplevel_type(GenRemSet) \ |
1181 declare_type(CardTableRS, GenRemSet) \ | |
1182 declare_toplevel_type(BlockOffsetSharedArray) \ | |
1183 declare_toplevel_type(BlockOffsetTable) \ | |
1184 declare_type(BlockOffsetArray, BlockOffsetTable) \ | |
1185 declare_type(BlockOffsetArrayContigSpace, BlockOffsetArray) \ | |
1186 declare_type(BlockOffsetArrayNonContigSpace, BlockOffsetArray) \ | |
1187 \ | |
1188 /* Miscellaneous other GC types */ \ | |
1189 \ | |
1190 declare_toplevel_type(ageTable) \ | |
1191 declare_toplevel_type(Generation::StatRecord) \ | |
1192 declare_toplevel_type(GenerationSpec) \ | |
1193 declare_toplevel_type(HeapWord) \ | |
1194 declare_toplevel_type(MemRegion) \ | |
1195 declare_toplevel_type(const MemRegion) \ | |
1196 declare_toplevel_type(PermanentGenerationSpec) \ | |
1197 declare_toplevel_type(ThreadLocalAllocBuffer) \ | |
1198 declare_toplevel_type(VirtualSpace) \ | |
1199 declare_toplevel_type(WaterMark) \ | |
1200 \ | |
1201 /* Pointers to Garbage Collection types */ \ | |
1202 \ | |
1203 declare_toplevel_type(BarrierSet*) \ | |
1204 declare_toplevel_type(BlockOffsetSharedArray*) \ | |
1205 declare_toplevel_type(GenRemSet*) \ | |
1206 declare_toplevel_type(CardTableRS*) \ | |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
1207 declare_toplevel_type(CardTableModRefBS*) \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
1208 declare_toplevel_type(CardTableModRefBS**) \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
1209 declare_toplevel_type(CardTableModRefBSForCTRS*) \ |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
147
diff
changeset
|
1210 declare_toplevel_type(CardTableModRefBSForCTRS**) \ |
0 | 1211 declare_toplevel_type(CollectedHeap*) \ |
1212 declare_toplevel_type(ContiguousSpace*) \ | |
1213 declare_toplevel_type(DefNewGeneration*) \ | |
1214 declare_toplevel_type(EdenSpace*) \ | |
1215 declare_toplevel_type(GenCollectedHeap*) \ | |
1216 declare_toplevel_type(Generation*) \ | |
1217 declare_toplevel_type(GenerationSpec**) \ | |
1218 declare_toplevel_type(HeapWord*) \ | |
1219 declare_toplevel_type(MemRegion*) \ | |
1220 declare_toplevel_type(OffsetTableContigSpace*) \ | |
1221 declare_toplevel_type(OneContigSpaceCardGeneration*) \ | |
1222 declare_toplevel_type(PermGen*) \ | |
1223 declare_toplevel_type(Space*) \ | |
1224 declare_toplevel_type(ThreadLocalAllocBuffer*) \ | |
1225 \ | |
1226 /************************/ \ | |
1227 /* PerfMemory - jvmstat */ \ | |
1228 /************************/ \ | |
1229 \ | |
1230 declare_toplevel_type(PerfDataPrologue) \ | |
1231 declare_toplevel_type(PerfDataPrologue*) \ | |
1232 declare_toplevel_type(PerfDataEntry) \ | |
1233 declare_toplevel_type(PerfMemory) \ | |
1234 \ | |
1235 /*********************************/ \ | |
1236 /* SymbolTable, SystemDictionary */ \ | |
1237 /*********************************/ \ | |
1238 \ | |
1239 declare_toplevel_type(BasicHashtable) \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1240 declare_type(Hashtable<intptr_t>, BasicHashtable) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1241 declare_type(SymbolTable, Hashtable<Symbol*>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1242 declare_type(StringTable, Hashtable<oop>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1243 declare_type(LoaderConstraintTable, Hashtable<klassOop>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1244 declare_type(TwoOopHashtable<klassOop>, Hashtable<klassOop>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1245 declare_type(Dictionary, TwoOopHashtable<klassOop>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1246 declare_type(PlaceholderTable, TwoOopHashtable<Symbol*>) \ |
0 | 1247 declare_toplevel_type(BasicHashtableEntry) \ |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1248 declare_type(HashtableEntry<intptr_t>, BasicHashtableEntry) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1249 declare_type(DictionaryEntry, HashtableEntry<klassOop>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1250 declare_type(PlaceholderEntry, HashtableEntry<Symbol*>) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1251 declare_type(LoaderConstraintEntry, HashtableEntry<klassOop>) \ |
0 | 1252 declare_toplevel_type(HashtableBucket) \ |
1253 declare_toplevel_type(SystemDictionary) \ | |
1254 declare_toplevel_type(ProtectionDomainEntry) \ | |
1255 \ | |
1256 /***********************************************************/ \ | |
1257 /* Thread hierarchy (needed for run-time type information) */ \ | |
1258 /***********************************************************/ \ | |
1259 \ | |
1260 declare_toplevel_type(Threads) \ | |
1261 declare_toplevel_type(ThreadShadow) \ | |
1262 declare_type(Thread, ThreadShadow) \ | |
1263 declare_type(NamedThread, Thread) \ | |
1264 declare_type(WatcherThread, Thread) \ | |
1265 declare_type(JavaThread, Thread) \ | |
1266 declare_type(JvmtiAgentThread, JavaThread) \ | |
2195
bf8517f4e4d0
6766644: Redefinition of compiled method fails with assertion "Can not load classes with the Compiler thread"
kamg
parents:
2192
diff
changeset
|
1267 declare_type(ServiceThread, JavaThread) \ |
0 | 1268 declare_type(CompilerThread, JavaThread) \ |
1269 declare_toplevel_type(OSThread) \ | |
1270 declare_toplevel_type(JavaFrameAnchor) \ | |
1271 \ | |
1272 /***************/ \ | |
1273 /* Interpreter */ \ | |
1274 /***************/ \ | |
1275 \ | |
1276 declare_toplevel_type(AbstractInterpreter) \ | |
1277 \ | |
1278 /*********/ \ | |
1279 /* Stubs */ \ | |
1280 /*********/ \ | |
1281 \ | |
1282 declare_toplevel_type(StubQueue) \ | |
1283 declare_toplevel_type(StubRoutines) \ | |
1284 declare_toplevel_type(Stub) \ | |
1285 declare_type(InterpreterCodelet, Stub) \ | |
1286 \ | |
1287 /*************/ \ | |
1288 /* JavaCalls */ \ | |
1289 /*************/ \ | |
1290 \ | |
1291 declare_toplevel_type(JavaCallWrapper) \ | |
1292 \ | |
1293 /*************/ \ | |
1294 /* CodeCache */ \ | |
1295 /*************/ \ | |
1296 \ | |
1297 declare_toplevel_type(CodeCache) \ | |
1298 \ | |
1299 /************/ \ | |
1300 /* CodeHeap */ \ | |
1301 /************/ \ | |
1302 \ | |
1303 declare_toplevel_type(CodeHeap) \ | |
1304 declare_toplevel_type(CodeHeap*) \ | |
1305 declare_toplevel_type(HeapBlock) \ | |
1306 declare_toplevel_type(HeapBlock::Header) \ | |
1307 declare_type(FreeBlock, HeapBlock) \ | |
1308 \ | |
1309 /*************************************************************/ \ | |
1310 /* CodeBlob hierarchy (needed for run-time type information) */ \ | |
1311 /*************************************************************/ \ | |
1312 \ | |
1313 declare_toplevel_type(CodeBlob) \ | |
1314 declare_type(BufferBlob, CodeBlob) \ | |
3388
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
1315 declare_type(AdapterBlob, BufferBlob) \ |
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
1316 declare_type(nmethod, CodeBlob) \ |
0 | 1317 declare_type(RuntimeStub, CodeBlob) \ |
1318 declare_type(SingletonBlob, CodeBlob) \ | |
1319 declare_type(SafepointBlob, SingletonBlob) \ | |
1320 declare_type(DeoptimizationBlob, SingletonBlob) \ | |
3388
a80577f854f9
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp
never
parents:
2411
diff
changeset
|
1321 declare_type(RicochetBlob, SingletonBlob) \ |
0 | 1322 declare_c2_type(ExceptionBlob, SingletonBlob) \ |
1323 declare_c2_type(UncommonTrapBlob, CodeBlob) \ | |
1324 \ | |
1325 /***************************************/ \ | |
1326 /* PcDesc and other compiled code info */ \ | |
1327 /***************************************/ \ | |
1328 \ | |
1329 declare_toplevel_type(PcDesc) \ | |
931
72088be4b386
6873116: Modify reexecute implementation to use pcDesc to record the reexecute bit
cfang
parents:
844
diff
changeset
|
1330 declare_integer_type(PcDesc::PcDescFlags) \ |
0 | 1331 \ |
1332 /************************/ \ | |
1333 /* OopMap and OopMapSet */ \ | |
1334 /************************/ \ | |
1335 \ | |
1336 declare_toplevel_type(OopMap) \ | |
1337 declare_toplevel_type(OopMapSet) \ | |
1338 \ | |
1339 /********************/ \ | |
1340 /* CompressedStream */ \ | |
1341 /********************/ \ | |
1342 \ | |
1343 declare_toplevel_type(CompressedStream) \ | |
1344 \ | |
1345 /**************/ \ | |
1346 /* VMRegImpl */ \ | |
1347 /**************/ \ | |
1348 \ | |
1349 declare_toplevel_type(VMRegImpl) \ | |
1350 \ | |
1351 /*********************************/ \ | |
1352 /* JNIHandles and JNIHandleBlock */ \ | |
1353 /*********************************/ \ | |
1354 \ | |
1355 declare_toplevel_type(JNIHandles) \ | |
1356 declare_toplevel_type(JNIHandleBlock) \ | |
1357 \ | |
1358 /**********************/ \ | |
1359 /* Runtime1 (C1 only) */ \ | |
1360 /**********************/ \ | |
1361 \ | |
1362 declare_c1_toplevel_type(Runtime1) \ | |
1363 \ | |
1364 /************/ \ | |
1365 /* Monitors */ \ | |
1366 /************/ \ | |
1367 \ | |
1368 declare_toplevel_type(ObjectMonitor) \ | |
1369 declare_toplevel_type(ObjectSynchronizer) \ | |
1370 declare_toplevel_type(BasicLock) \ | |
1371 declare_toplevel_type(BasicObjectLock) \ | |
1372 \ | |
1373 /*********************/ \ | |
1374 /* Matcher (C2 only) */ \ | |
1375 /*********************/ \ | |
1376 \ | |
1377 /* NOTE: this is not really a toplevel type, but we only need */ \ | |
1378 /* this one -- FIXME later if necessary */ \ | |
1379 declare_c2_toplevel_type(Matcher) \ | |
1380 \ | |
1381 /*********************/ \ | |
1382 /* Adapter Blob Entries */ \ | |
1383 /*********************/ \ | |
1384 declare_toplevel_type(AdapterHandlerEntry) \ | |
1385 declare_toplevel_type(AdapterHandlerEntry*) \ | |
1386 \ | |
1387 /********************/ \ | |
1388 /* -XX flags */ \ | |
1389 /********************/ \ | |
1390 \ | |
1391 declare_toplevel_type(Flag) \ | |
1392 declare_toplevel_type(Flag*) \ | |
1393 \ | |
1394 /********************/ \ | |
1395 /* JDK/VM version */ \ | |
1396 /********************/ \ | |
1397 \ | |
1398 declare_toplevel_type(Abstract_VM_Version) \ | |
1399 declare_toplevel_type(JDK_Version) \ | |
1400 \ | |
1401 /*************/ \ | |
1402 /* Arguments */ \ | |
1403 /*************/ \ | |
1404 \ | |
1405 declare_toplevel_type(Arguments) \ | |
1406 \ | |
1407 /***************/ \ | |
1408 /* Other types */ \ | |
1409 /***************/ \ | |
1410 \ | |
1411 /* all enum types */ \ | |
1412 \ | |
1413 declare_integer_type(Bytecodes::Code) \ | |
1414 declare_integer_type(Generation::Name) \ | |
1415 declare_integer_type(instanceKlass::ClassState) \ | |
1416 declare_integer_type(JavaThreadState) \ | |
1417 declare_integer_type(Location::Type) \ | |
1418 declare_integer_type(Location::Where) \ | |
1419 declare_integer_type(PermGen::Name) \ | |
1420 \ | |
1421 declare_integer_type(AccessFlags) /* FIXME: wrong type (not integer) */\ | |
1422 declare_toplevel_type(address) /* FIXME: should this be an integer type? */\ | |
1423 declare_toplevel_type(BreakpointInfo) \ | |
1424 declare_toplevel_type(BreakpointInfo*) \ | |
1425 declare_toplevel_type(CodeBlob*) \ | |
1426 declare_toplevel_type(CompressedWriteStream*) \ | |
1427 declare_toplevel_type(ConstantPoolCacheEntry) \ | |
1428 declare_toplevel_type(elapsedTimer) \ | |
1429 declare_toplevel_type(intptr_t*) \ | |
1430 declare_unsigned_integer_type(InvocationCounter) /* FIXME: wrong type (not integer) */ \ | |
1431 declare_toplevel_type(JavaThread*) \ | |
2376
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2260
diff
changeset
|
1432 declare_toplevel_type(java_lang_Class) \ |
0 | 1433 declare_toplevel_type(jbyte*) \ |
1434 declare_toplevel_type(jbyte**) \ | |
1435 declare_toplevel_type(jint*) \ | |
1436 declare_toplevel_type(jniIdMapBase*) \ | |
1437 declare_unsigned_integer_type(juint) \ | |
1438 declare_unsigned_integer_type(julong) \ | |
1439 declare_toplevel_type(JNIHandleBlock*) \ | |
1440 declare_toplevel_type(JNIid) \ | |
1441 declare_toplevel_type(JNIid*) \ | |
1442 declare_toplevel_type(jmethodID*) \ | |
1443 declare_toplevel_type(Mutex*) \ | |
1444 declare_toplevel_type(nmethod*) \ | |
1445 declare_toplevel_type(ObjectMonitor*) \ | |
1446 declare_toplevel_type(oop*) \ | |
1447 declare_toplevel_type(OopMap**) \ | |
1448 declare_toplevel_type(OopMapCache*) \ | |
1449 declare_toplevel_type(OopMapSet*) \ | |
1450 declare_toplevel_type(VMReg) \ | |
1451 declare_toplevel_type(OSThread*) \ | |
1452 declare_integer_type(ReferenceType) \ | |
1453 declare_toplevel_type(StubQueue*) \ | |
1454 declare_toplevel_type(Thread*) \ | |
1455 declare_toplevel_type(Universe) | |
1456 | |
1457 /* NOTE that we do not use the last_entry() macro here; it is used */ | |
1458 /* in vmStructs_<os>_<cpu>.hpp's VM_TYPES_OS_CPU macro (and must be */ | |
1459 /* present there) */ | |
1460 | |
1461 //-------------------------------------------------------------------------------- | |
1462 // VM_INT_CONSTANTS | |
1463 // | |
1464 // This table contains integer constants required over in the | |
1465 // serviceability agent. The "declare_constant" macro is used for all | |
1466 // enums, etc., while "declare_preprocessor_constant" must be used for | |
1467 // all #defined constants. | |
1468 | |
1469 #define VM_INT_CONSTANTS(declare_constant, \ | |
1470 declare_preprocessor_constant, \ | |
1471 declare_c1_constant, \ | |
1472 declare_c2_constant, \ | |
1473 declare_c2_preprocessor_constant, \ | |
1474 last_entry) \ | |
1475 \ | |
1476 /******************/ \ | |
1477 /* Useful globals */ \ | |
1478 /******************/ \ | |
1479 \ | |
1480 declare_constant(UseTLAB) \ | |
1481 \ | |
1482 /**************/ \ | |
1483 /* Stack bias */ \ | |
1484 /**************/ \ | |
1485 \ | |
1486 declare_preprocessor_constant("STACK_BIAS", STACK_BIAS) \ | |
1487 \ | |
1488 /****************/ \ | |
1489 /* Object sizes */ \ | |
1490 /****************/ \ | |
1491 \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1492 declare_constant(oopSize) \ |
0 | 1493 declare_constant(LogBytesPerWord) \ |
1494 declare_constant(BytesPerLong) \ | |
1495 \ | |
1496 /********************************************/ \ | |
1497 /* Generation and Space Hierarchy Constants */ \ | |
1498 /********************************************/ \ | |
1499 \ | |
1500 declare_constant(ageTable::table_size) \ | |
1501 \ | |
1502 declare_constant(BarrierSet::ModRef) \ | |
1503 declare_constant(BarrierSet::CardTableModRef) \ | |
1504 declare_constant(BarrierSet::Other) \ | |
1505 \ | |
1506 declare_constant(BlockOffsetSharedArray::LogN) \ | |
1507 declare_constant(BlockOffsetSharedArray::LogN_words) \ | |
1508 declare_constant(BlockOffsetSharedArray::N_bytes) \ | |
1509 declare_constant(BlockOffsetSharedArray::N_words) \ | |
1510 \ | |
1511 declare_constant(BlockOffsetArray::N_words) \ | |
1512 \ | |
1513 declare_constant(CardTableModRefBS::clean_card) \ | |
1514 declare_constant(CardTableModRefBS::last_card) \ | |
1515 declare_constant(CardTableModRefBS::dirty_card) \ | |
1516 declare_constant(CardTableModRefBS::Precise) \ | |
1517 declare_constant(CardTableModRefBS::ObjHeadPreciseArray) \ | |
1518 declare_constant(CardTableModRefBS::card_shift) \ | |
1519 declare_constant(CardTableModRefBS::card_size) \ | |
1520 declare_constant(CardTableModRefBS::card_size_in_words) \ | |
1521 \ | |
1522 declare_constant(CardTableRS::youngergen_card) \ | |
1523 \ | |
1524 declare_constant(CollectedHeap::Abstract) \ | |
1525 declare_constant(CollectedHeap::SharedHeap) \ | |
1526 declare_constant(CollectedHeap::GenCollectedHeap) \ | |
1527 \ | |
1528 declare_constant(GenCollectedHeap::max_gens) \ | |
1529 \ | |
1530 /* constants from Generation::Name enum */ \ | |
1531 \ | |
1532 declare_constant(Generation::DefNew) \ | |
1533 declare_constant(Generation::MarkSweepCompact) \ | |
1534 declare_constant(Generation::Other) \ | |
1535 \ | |
1536 declare_constant(Generation::LogOfGenGrain) \ | |
1537 declare_constant(Generation::GenGrain) \ | |
1538 \ | |
1539 declare_constant(HeapWordSize) \ | |
1540 declare_constant(LogHeapWordSize) \ | |
1541 \ | |
1542 /* constants from PermGen::Name enum */ \ | |
1543 \ | |
1544 declare_constant(PermGen::MarkSweepCompact) \ | |
1545 declare_constant(PermGen::MarkSweep) \ | |
1546 \ | |
1547 /************************/ \ | |
1548 /* PerfMemory - jvmstat */ \ | |
1549 /************************/ \ | |
1550 \ | |
1551 declare_preprocessor_constant("PERFDATA_MAJOR_VERSION", PERFDATA_MAJOR_VERSION) \ | |
1552 declare_preprocessor_constant("PERFDATA_MINOR_VERSION", PERFDATA_MINOR_VERSION) \ | |
1553 declare_preprocessor_constant("PERFDATA_BIG_ENDIAN", PERFDATA_BIG_ENDIAN) \ | |
1554 declare_preprocessor_constant("PERFDATA_LITTLE_ENDIAN", PERFDATA_LITTLE_ENDIAN) \ | |
1555 \ | |
1556 /***************/ \ | |
1557 /* SymbolTable */ \ | |
1558 /***************/ \ | |
1559 \ | |
1560 declare_constant(SymbolTable::symbol_table_size) \ | |
1561 \ | |
1562 /********************/ \ | |
1563 /* SystemDictionary */ \ | |
1564 /********************/ \ | |
1565 \ | |
1566 declare_constant(SystemDictionary::_loader_constraint_size) \ | |
1567 declare_constant(SystemDictionary::_nof_buckets) \ | |
1568 \ | |
1569 /***********************************/ \ | |
1570 /* LoaderConstraintTable constants */ \ | |
1571 /***********************************/ \ | |
1572 \ | |
1573 declare_constant(LoaderConstraintTable::_loader_constraint_size) \ | |
1574 declare_constant(LoaderConstraintTable::_nof_buckets) \ | |
1575 \ | |
1576 /************************************************************/ \ | |
1577 /* HotSpot specific JVM_ACC constants from global anon enum */ \ | |
1578 /************************************************************/ \ | |
1579 \ | |
1580 declare_constant(JVM_ACC_WRITTEN_FLAGS) \ | |
1581 declare_constant(JVM_ACC_MONITOR_MATCH) \ | |
1582 declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \ | |
1583 declare_constant(JVM_ACC_HAS_LOOPS) \ | |
1584 declare_constant(JVM_ACC_LOOPS_FLAG_INIT) \ | |
1585 declare_constant(JVM_ACC_QUEUED) \ | |
1586 declare_constant(JVM_ACC_NOT_OSR_COMPILABLE) \ | |
1587 declare_constant(JVM_ACC_HAS_LINE_NUMBER_TABLE) \ | |
1588 declare_constant(JVM_ACC_HAS_CHECKED_EXCEPTIONS) \ | |
1589 declare_constant(JVM_ACC_HAS_JSRS) \ | |
1590 declare_constant(JVM_ACC_IS_OLD) \ | |
1591 declare_constant(JVM_ACC_IS_OBSOLETE) \ | |
1592 declare_constant(JVM_ACC_IS_PREFIXED_NATIVE) \ | |
1593 declare_constant(JVM_ACC_HAS_MIRANDA_METHODS) \ | |
1594 declare_constant(JVM_ACC_HAS_VANILLA_CONSTRUCTOR) \ | |
1595 declare_constant(JVM_ACC_HAS_FINALIZER) \ | |
1596 declare_constant(JVM_ACC_IS_CLONEABLE) \ | |
1597 declare_constant(JVM_ACC_HAS_LOCAL_VARIABLE_TABLE) \ | |
1598 declare_constant(JVM_ACC_PROMOTED_FLAGS) \ | |
1599 declare_constant(JVM_ACC_FIELD_ACCESS_WATCHED) \ | |
1600 declare_constant(JVM_ACC_FIELD_MODIFICATION_WATCHED) \ | |
1601 \ | |
1602 /*****************************/ \ | |
1603 /* Thread::SuspendFlags enum */ \ | |
1604 /*****************************/ \ | |
1605 \ | |
1606 declare_constant(Thread::_external_suspend) \ | |
1607 declare_constant(Thread::_ext_suspended) \ | |
1608 declare_constant(Thread::_has_async_exception) \ | |
1609 \ | |
1610 /*******************/ \ | |
1611 /* JavaThreadState */ \ | |
1612 /*******************/ \ | |
1613 \ | |
1614 declare_constant(_thread_uninitialized) \ | |
1615 declare_constant(_thread_new) \ | |
1616 declare_constant(_thread_new_trans) \ | |
1617 declare_constant(_thread_in_native) \ | |
1618 declare_constant(_thread_in_native_trans) \ | |
1619 declare_constant(_thread_in_vm) \ | |
1620 declare_constant(_thread_in_vm_trans) \ | |
1621 declare_constant(_thread_in_Java) \ | |
1622 declare_constant(_thread_in_Java_trans) \ | |
1623 declare_constant(_thread_blocked) \ | |
1624 declare_constant(_thread_blocked_trans) \ | |
1625 \ | |
1626 /******************************/ \ | |
1627 /* Klass misc. enum constants */ \ | |
1628 /******************************/ \ | |
1629 \ | |
1630 declare_constant(Klass::_primary_super_limit) \ | |
1631 declare_constant(Klass::_lh_instance_slow_path_bit) \ | |
1632 declare_constant(Klass::_lh_log2_element_size_shift) \ | |
1633 declare_constant(Klass::_lh_element_type_shift) \ | |
1634 declare_constant(Klass::_lh_header_size_shift) \ | |
1635 declare_constant(Klass::_lh_array_tag_shift) \ | |
1636 declare_constant(Klass::_lh_array_tag_type_value) \ | |
1637 declare_constant(Klass::_lh_array_tag_obj_value) \ | |
1638 \ | |
1639 /********************************/ \ | |
1640 /* constMethodOopDesc anon-enum */ \ | |
1641 /********************************/ \ | |
1642 \ | |
1643 declare_constant(constMethodOopDesc::_has_linenumber_table) \ | |
1644 declare_constant(constMethodOopDesc::_has_checked_exceptions) \ | |
1645 declare_constant(constMethodOopDesc::_has_localvariable_table) \ | |
1646 \ | |
1647 /*************************************/ \ | |
1648 /* instanceKlass FieldOffset enum */ \ | |
1649 /*************************************/ \ | |
1650 \ | |
1651 declare_constant(instanceKlass::access_flags_offset) \ | |
1652 declare_constant(instanceKlass::name_index_offset) \ | |
1653 declare_constant(instanceKlass::signature_index_offset) \ | |
1654 declare_constant(instanceKlass::initval_index_offset) \ | |
1655 declare_constant(instanceKlass::low_offset) \ | |
1656 declare_constant(instanceKlass::high_offset) \ | |
1657 declare_constant(instanceKlass::generic_signature_offset) \ | |
1658 declare_constant(instanceKlass::next_offset) \ | |
1659 declare_constant(instanceKlass::implementors_limit) \ | |
1660 \ | |
1661 /************************************************/ \ | |
1662 /* instanceKlass InnerClassAttributeOffset enum */ \ | |
1663 /************************************************/ \ | |
1664 \ | |
1665 declare_constant(instanceKlass::inner_class_inner_class_info_offset) \ | |
1666 declare_constant(instanceKlass::inner_class_outer_class_info_offset) \ | |
1667 declare_constant(instanceKlass::inner_class_inner_name_offset) \ | |
1668 declare_constant(instanceKlass::inner_class_access_flags_offset) \ | |
1669 declare_constant(instanceKlass::inner_class_next_offset) \ | |
1670 \ | |
1671 /*********************************/ \ | |
1672 /* instanceKlass ClassState enum */ \ | |
1673 /*********************************/ \ | |
1674 \ | |
1675 declare_constant(instanceKlass::unparsable_by_gc) \ | |
1676 declare_constant(instanceKlass::allocated) \ | |
1677 declare_constant(instanceKlass::loaded) \ | |
1678 declare_constant(instanceKlass::linked) \ | |
1679 declare_constant(instanceKlass::being_initialized) \ | |
1680 declare_constant(instanceKlass::fully_initialized) \ | |
1681 declare_constant(instanceKlass::initialization_error) \ | |
1682 \ | |
1683 /*********************************/ \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1684 /* Symbol* - symbol max length */ \ |
0 | 1685 /*********************************/ \ |
1686 \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
1687 declare_constant(Symbol::max_symbol_length) \ |
0 | 1688 \ |
1913
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1689 /*************************************************/ \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1690 /* constantPoolOop layout enum for InvokeDynamic */ \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1691 /*************************************************/ \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1692 \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1693 declare_constant(constantPoolOopDesc::_indy_bsm_offset) \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1694 declare_constant(constantPoolOopDesc::_indy_argc_offset) \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1695 declare_constant(constantPoolOopDesc::_indy_argv_offset) \ |
3b2dea75431e
6984311: JSR 292 needs optional bootstrap method parameters
jrose
parents:
1748
diff
changeset
|
1696 \ |
0 | 1697 /*********************************************/ \ |
1698 /* ConstantPoolCacheEntry FlagBitValues enum */ \ | |
1699 /*********************************************/ \ | |
1700 \ | |
1701 declare_constant(ConstantPoolCacheEntry::hotSwapBit) \ | |
1702 declare_constant(ConstantPoolCacheEntry::methodInterface) \ | |
1703 declare_constant(ConstantPoolCacheEntry::volatileField) \ | |
1704 declare_constant(ConstantPoolCacheEntry::vfinalMethod) \ | |
1705 declare_constant(ConstantPoolCacheEntry::finalField) \ | |
1706 \ | |
1707 /******************************************/ \ | |
1708 /* ConstantPoolCacheEntry FlagValues enum */ \ | |
1709 /******************************************/ \ | |
1710 \ | |
1711 declare_constant(ConstantPoolCacheEntry::tosBits) \ | |
1712 \ | |
1713 /***************************************/ \ | |
1714 /* java_lang_Thread::ThreadStatus enum */ \ | |
1715 /***************************************/ \ | |
1716 \ | |
1717 declare_constant(java_lang_Thread::NEW) \ | |
1718 declare_constant(java_lang_Thread::RUNNABLE) \ | |
1719 declare_constant(java_lang_Thread::SLEEPING) \ | |
1720 declare_constant(java_lang_Thread::IN_OBJECT_WAIT) \ | |
1721 declare_constant(java_lang_Thread::IN_OBJECT_WAIT_TIMED) \ | |
1722 declare_constant(java_lang_Thread::PARKED) \ | |
1723 declare_constant(java_lang_Thread::PARKED_TIMED) \ | |
1724 declare_constant(java_lang_Thread::BLOCKED_ON_MONITOR_ENTER) \ | |
1725 declare_constant(java_lang_Thread::TERMINATED) \ | |
1726 \ | |
1727 /******************************/ \ | |
1728 /* Debug info */ \ | |
1729 /******************************/ \ | |
1730 \ | |
1731 declare_constant(Location::OFFSET_MASK) \ | |
1732 declare_constant(Location::OFFSET_SHIFT) \ | |
1733 declare_constant(Location::TYPE_MASK) \ | |
1734 declare_constant(Location::TYPE_SHIFT) \ | |
1735 declare_constant(Location::WHERE_MASK) \ | |
1736 declare_constant(Location::WHERE_SHIFT) \ | |
1737 \ | |
1738 /* constants from Location::Type enum */ \ | |
1739 \ | |
1740 declare_constant(Location::normal) \ | |
1741 declare_constant(Location::oop) \ | |
331
cecd8eb4e0ca
6706829: Compressed Oops: add debug info for narrow oops
kvn
parents:
304
diff
changeset
|
1742 declare_constant(Location::narrowoop) \ |
0 | 1743 declare_constant(Location::int_in_long) \ |
1744 declare_constant(Location::lng) \ | |
1745 declare_constant(Location::float_in_dbl) \ | |
1746 declare_constant(Location::dbl) \ | |
1747 declare_constant(Location::addr) \ | |
1748 declare_constant(Location::invalid) \ | |
1749 \ | |
1750 /* constants from Location::Where enum */ \ | |
1751 \ | |
1752 declare_constant(Location::on_stack) \ | |
1753 declare_constant(Location::in_register) \ | |
1754 \ | |
1755 /*********************/ \ | |
1756 /* Matcher (C2 only) */ \ | |
1757 /*********************/ \ | |
1758 \ | |
1759 declare_c2_preprocessor_constant("Matcher::interpreter_frame_pointer_reg", Matcher::interpreter_frame_pointer_reg()) \ | |
1760 \ | |
1761 /*********************************************/ \ | |
1762 /* MethodCompilation (globalDefinitions.hpp) */ \ | |
1763 /*********************************************/ \ | |
1764 \ | |
1765 declare_constant(InvocationEntryBci) \ | |
1766 declare_constant(InvalidOSREntryBci) \ | |
1767 \ | |
1768 /***************/ \ | |
1769 /* OopMapValue */ \ | |
1770 /***************/ \ | |
1771 \ | |
1772 declare_constant(OopMapValue::type_bits) \ | |
1773 declare_constant(OopMapValue::register_bits) \ | |
1774 declare_constant(OopMapValue::type_shift) \ | |
1775 declare_constant(OopMapValue::register_shift) \ | |
1776 declare_constant(OopMapValue::type_mask) \ | |
1777 declare_constant(OopMapValue::type_mask_in_place) \ | |
1778 declare_constant(OopMapValue::register_mask) \ | |
1779 declare_constant(OopMapValue::register_mask_in_place) \ | |
1780 declare_constant(OopMapValue::unused_value) \ | |
1781 declare_constant(OopMapValue::oop_value) \ | |
1782 declare_constant(OopMapValue::value_value) \ | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
0
diff
changeset
|
1783 declare_constant(OopMapValue::narrowoop_value) \ |
0 | 1784 declare_constant(OopMapValue::callee_saved_value) \ |
1785 declare_constant(OopMapValue::derived_oop_value) \ | |
1786 \ | |
1787 /******************/ \ | |
1788 /* JNIHandleBlock */ \ | |
1789 /******************/ \ | |
1790 \ | |
1791 declare_constant(JNIHandleBlock::block_size_in_oops) \ | |
1792 \ | |
1793 /**********************/ \ | |
1794 /* ObjectSynchronizer */ \ | |
1795 /**********************/ \ | |
1796 \ | |
1797 declare_constant(ObjectSynchronizer::_BLOCKSIZE) \ | |
1798 \ | |
1799 /********************************/ \ | |
1800 /* Calling convention constants */ \ | |
1801 /********************************/ \ | |
1802 \ | |
1803 declare_constant(RegisterImpl::number_of_registers) \ | |
1804 declare_constant(ConcreteRegisterImpl::number_of_registers) \ | |
1805 declare_preprocessor_constant("REG_COUNT", REG_COUNT) \ | |
1806 declare_c2_preprocessor_constant("SAVED_ON_ENTRY_REG_COUNT", SAVED_ON_ENTRY_REG_COUNT) \ | |
1807 declare_c2_preprocessor_constant("C_SAVED_ON_ENTRY_REG_COUNT", C_SAVED_ON_ENTRY_REG_COUNT) | |
1808 | |
1809 /* NOTE that we do not use the last_entry() macro here; it is used */ | |
1810 /* in vmStructs_<os>_<cpu>.hpp's VM_INT_CONSTANTS_OS_CPU macro (and */ | |
1811 /* must be present there) */ | |
1812 | |
1813 //-------------------------------------------------------------------------------- | |
1814 // VM_LONG_CONSTANTS | |
1815 // | |
1816 // This table contains long constants required over in the | |
1817 // serviceability agent. The "declare_constant" macro is used for all | |
1818 // enums, etc., while "declare_preprocessor_constant" must be used for | |
1819 // all #defined constants. | |
1820 | |
1821 #define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant, last_entry) \ | |
1822 \ | |
1823 /*********************/ \ | |
1824 /* MarkOop constants */ \ | |
1825 /*********************/ \ | |
1826 \ | |
1827 /* Note: some of these are declared as long constants just for */ \ | |
1828 /* consistency. The mask constants are the only ones requiring */ \ | |
1829 /* 64 bits (on 64-bit platforms). */ \ | |
1830 \ | |
1831 declare_constant(markOopDesc::age_bits) \ | |
1832 declare_constant(markOopDesc::lock_bits) \ | |
1833 declare_constant(markOopDesc::biased_lock_bits) \ | |
1834 declare_constant(markOopDesc::max_hash_bits) \ | |
1835 declare_constant(markOopDesc::hash_bits) \ | |
1836 \ | |
1837 declare_constant(markOopDesc::lock_shift) \ | |
1838 declare_constant(markOopDesc::biased_lock_shift) \ | |
1839 declare_constant(markOopDesc::age_shift) \ | |
1840 declare_constant(markOopDesc::hash_shift) \ | |
1841 \ | |
1842 declare_constant(markOopDesc::lock_mask) \ | |
1843 declare_constant(markOopDesc::lock_mask_in_place) \ | |
1844 declare_constant(markOopDesc::biased_lock_mask) \ | |
1845 declare_constant(markOopDesc::biased_lock_mask_in_place) \ | |
1846 declare_constant(markOopDesc::biased_lock_bit_in_place) \ | |
1847 declare_constant(markOopDesc::age_mask) \ | |
1848 declare_constant(markOopDesc::age_mask_in_place) \ | |
1849 declare_constant(markOopDesc::hash_mask) \ | |
1850 declare_constant(markOopDesc::hash_mask_in_place) \ | |
1851 declare_constant(markOopDesc::biased_lock_alignment) \ | |
1852 \ | |
1853 declare_constant(markOopDesc::locked_value) \ | |
1854 declare_constant(markOopDesc::unlocked_value) \ | |
1855 declare_constant(markOopDesc::monitor_value) \ | |
1856 declare_constant(markOopDesc::marked_value) \ | |
1857 declare_constant(markOopDesc::biased_lock_pattern) \ | |
1858 \ | |
1859 declare_constant(markOopDesc::no_hash) \ | |
1860 declare_constant(markOopDesc::no_hash_in_place) \ | |
1861 declare_constant(markOopDesc::no_lock_in_place) \ | |
187 | 1862 declare_constant(markOopDesc::max_age) \ |
1863 \ | |
1864 /* Constants in markOop used by CMS. */ \ | |
1865 declare_constant(markOopDesc::cms_shift) \ | |
1866 declare_constant(markOopDesc::cms_mask) \ | |
1867 declare_constant(markOopDesc::size_shift) \ | |
0 | 1868 |
1869 /* NOTE that we do not use the last_entry() macro here; it is used */ | |
1870 /* in vmStructs_<os>_<cpu>.hpp's VM_LONG_CONSTANTS_OS_CPU macro (and */ | |
1871 /* must be present there) */ | |
1872 | |
1873 | |
1874 //-------------------------------------------------------------------------------- | |
1875 // Macros operating on the above lists | |
1876 //-------------------------------------------------------------------------------- | |
1877 | |
1878 // This utility macro quotes the passed string | |
1879 #define QUOTE(x) #x | |
1880 | |
1881 //-------------------------------------------------------------------------------- | |
1882 // VMStructEntry macros | |
1883 // | |
1884 | |
1885 // This macro generates a VMStructEntry line for a nonstatic field | |
1886 #define GENERATE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ | |
1887 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL }, | |
1888 | |
1889 // This macro generates a VMStructEntry line for a static field | |
1890 #define GENERATE_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ | |
1891 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, &typeName::fieldName }, | |
1892 | |
1893 // This macro generates a VMStructEntry line for an unchecked | |
1894 // nonstatic field, in which the size of the type is also specified. | |
1895 // The type string is given as NULL, indicating an "opaque" type. | |
1896 #define GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \ | |
1897 { QUOTE(typeName), QUOTE(fieldName), NULL, 0, cast_uint64_t(offset_of(typeName, fieldName)), NULL }, | |
1898 | |
1899 // This macro generates a VMStructEntry line for an unchecked | |
1900 // static field, in which the size of the type is also specified. | |
1901 // The type string is given as NULL, indicating an "opaque" type. | |
1902 #define GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, size) \ | |
1903 { QUOTE(typeName), QUOTE(fieldName), NULL, 1, 0, (void*) &typeName::fieldName }, | |
1904 | |
1905 // This macro generates the sentinel value indicating the end of the list | |
1906 #define GENERATE_VM_STRUCT_LAST_ENTRY() \ | |
1907 { NULL, NULL, NULL, 0, 0, NULL } | |
1908 | |
1909 // This macro checks the type of a VMStructEntry by comparing pointer types | |
1910 #define CHECK_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ | |
1911 {typeName *dummyObj = NULL; type* dummy = &dummyObj->fieldName; } | |
1912 | |
1913 // This macro checks the type of a volatile VMStructEntry by comparing pointer types | |
1914 #define CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ | |
1915 {typedef type dummyvtype; typeName *dummyObj = NULL; volatile dummyvtype* dummy = &dummyObj->fieldName; } | |
1916 | |
1917 // This macro checks the type of a VMStructEntry by comparing pointer types | |
1918 #define CHECK_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ | |
1919 {type* dummy = &typeName::fieldName; } | |
1920 | |
1921 // This macro ensures the type of a field and its containing type are | |
1922 // present in the type table. The assertion string is shorter than | |
1923 // preferable because (incredibly) of a bug in Solstice NFS client | |
1924 // which seems to prevent very long lines from compiling. This assertion | |
1925 // means that an entry in VMStructs::localHotSpotVMStructs[] was not | |
1926 // found in VMStructs::localHotSpotVMTypes[]. | |
1927 #define ENSURE_FIELD_TYPE_PRESENT(typeName, fieldName, type) \ | |
1928 { assert(findType(QUOTE(typeName)) != 0, "type \"" QUOTE(typeName) "\" not found in type table"); \ | |
1929 assert(findType(QUOTE(type)) != 0, "type \"" QUOTE(type) "\" not found in type table"); } | |
1930 | |
1931 // This is a no-op macro for unchecked fields | |
1932 #define CHECK_NO_OP(a, b, c) | |
1933 | |
1934 // This is a no-op macro for the sentinel value | |
1935 #define CHECK_SENTINEL() | |
1936 | |
1937 // | |
1938 // Build-specific macros: | |
1939 // | |
1940 | |
1941 // Generate and check a nonstatic field in non-product builds | |
1942 #ifndef PRODUCT | |
1943 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1944 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1945 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) | |
1946 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1947 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1948 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) | |
1949 #else | |
1950 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1951 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1952 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) | |
1953 # define GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1954 # define CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1955 # define ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT(a, b, c) | |
1956 #endif /* PRODUCT */ | |
1957 | |
1958 // Generate and check a nonstatic field in C1 builds | |
1959 #ifdef COMPILER1 | |
1960 # define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1961 # define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1962 # define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) | |
1963 #else | |
1964 # define GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1965 # define CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1966 # define ENSURE_C1_FIELD_TYPE_PRESENT(a, b, c) | |
1967 #endif /* COMPILER1 */ | |
1968 // Generate and check a nonstatic field in C2 builds | |
1969 #ifdef COMPILER2 | |
1970 # define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1971 # define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) CHECK_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1972 # define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c) ENSURE_FIELD_TYPE_PRESENT(a, b, c) | |
1973 #else | |
1974 # define GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1975 # define CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY(a, b, c) | |
1976 # define ENSURE_C2_FIELD_TYPE_PRESENT(a, b, c) | |
1977 #endif /* COMPILER2 */ | |
1978 | |
1979 // Generate but do not check a static field in C1 builds | |
1980 #ifdef COMPILER1 | |
1981 # define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) | |
1982 #else | |
1983 # define GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) | |
1984 #endif /* COMPILER1 */ | |
1985 | |
1986 // Generate but do not check a static field in C2 builds | |
1987 #ifdef COMPILER2 | |
1988 # define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) GENERATE_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) | |
1989 #else | |
1990 # define GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY(a, b, c) | |
1991 #endif /* COMPILER2 */ | |
1992 | |
1993 //-------------------------------------------------------------------------------- | |
1994 // VMTypeEntry macros | |
1995 // | |
1996 | |
1997 #define GENERATE_VM_TYPE_ENTRY(type, superclass) \ | |
1998 { QUOTE(type), QUOTE(superclass), 0, 0, 0, sizeof(type) }, | |
1999 | |
2000 #define GENERATE_TOPLEVEL_VM_TYPE_ENTRY(type) \ | |
2001 { QUOTE(type), NULL, 0, 0, 0, sizeof(type) }, | |
2002 | |
2003 #define GENERATE_OOP_VM_TYPE_ENTRY(type) \ | |
2004 { QUOTE(type), NULL, 1, 0, 0, sizeof(type) }, | |
2005 | |
2006 #define GENERATE_INTEGER_VM_TYPE_ENTRY(type) \ | |
2007 { QUOTE(type), NULL, 0, 1, 0, sizeof(type) }, | |
2008 | |
2009 #define GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY(type) \ | |
2010 { QUOTE(type), NULL, 0, 1, 1, sizeof(type) }, | |
2011 | |
2012 #define GENERATE_VM_TYPE_LAST_ENTRY() \ | |
2013 { NULL, NULL, 0, 0, 0, 0 } | |
2014 | |
2015 #define CHECK_VM_TYPE_ENTRY(type, superclass) \ | |
2016 { type* dummyObj = NULL; superclass* dummySuperObj = dummyObj; } | |
2017 | |
2018 #define CHECK_VM_TYPE_NO_OP(a) | |
2019 #define CHECK_SINGLE_ARG_VM_TYPE_NO_OP(a) | |
2020 | |
2021 // | |
2022 // Build-specific macros: | |
2023 // | |
2024 | |
2025 #ifdef COMPILER1 | |
2026 # define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2027 # define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2028 #else | |
2029 # define GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2030 # define CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2031 #endif /* COMPILER1 */ | |
2032 | |
2033 #ifdef COMPILER2 | |
2034 # define GENERATE_C2_VM_TYPE_ENTRY(a, b) GENERATE_VM_TYPE_ENTRY(a, b) | |
2035 # define CHECK_C2_VM_TYPE_ENTRY(a, b) CHECK_VM_TYPE_ENTRY(a, b) | |
2036 # define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a) GENERATE_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2037 # define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2038 #else | |
2039 # define GENERATE_C2_VM_TYPE_ENTRY(a, b) | |
2040 # define CHECK_C2_VM_TYPE_ENTRY(a, b) | |
2041 # define GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2042 # define CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY(a) | |
2043 #endif /* COMPILER2 */ | |
2044 | |
2045 | |
2046 //-------------------------------------------------------------------------------- | |
2047 // VMIntConstantEntry macros | |
2048 // | |
2049 | |
2050 #define GENERATE_VM_INT_CONSTANT_ENTRY(name) \ | |
2051 { QUOTE(name), (int32_t) name }, | |
2052 | |
2053 #define GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) \ | |
2054 { name, (int32_t) value }, | |
2055 | |
2056 // This macro generates the sentinel value indicating the end of the list | |
2057 #define GENERATE_VM_INT_CONSTANT_LAST_ENTRY() \ | |
2058 { NULL, 0 } | |
2059 | |
2060 | |
2061 // Generate an int constant for a C1 build | |
2062 #ifdef COMPILER1 | |
2063 # define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name) | |
2064 #else | |
2065 # define GENERATE_C1_VM_INT_CONSTANT_ENTRY(name) | |
2066 #endif /* COMPILER1 */ | |
2067 | |
2068 // Generate an int constant for a C2 build | |
2069 #ifdef COMPILER2 | |
2070 # define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name) | |
2071 # define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) | |
2072 #else | |
2073 # define GENERATE_C2_VM_INT_CONSTANT_ENTRY(name) | |
2074 # define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) | |
2075 #endif /* COMPILER1 */ | |
2076 | |
2077 //-------------------------------------------------------------------------------- | |
2078 // VMLongConstantEntry macros | |
2079 // | |
2080 | |
2081 #define GENERATE_VM_LONG_CONSTANT_ENTRY(name) \ | |
2082 { QUOTE(name), cast_uint64_t(name) }, | |
2083 | |
2084 #define GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) \ | |
2085 { name, cast_uint64_t(value) }, | |
2086 | |
2087 // This macro generates the sentinel value indicating the end of the list | |
2088 #define GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() \ | |
2089 { NULL, 0 } | |
2090 | |
2091 // Generate a long constant for a C1 build | |
2092 #ifdef COMPILER1 | |
2093 # define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name) | |
2094 #else | |
2095 # define GENERATE_C1_VM_LONG_CONSTANT_ENTRY(name) | |
2096 #endif /* COMPILER1 */ | |
2097 | |
2098 // Generate a long constant for a C2 build | |
2099 #ifdef COMPILER2 | |
2100 # define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name) GENERATE_VM_LONG_CONSTANT_ENTRY(name) | |
2101 # define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) | |
2102 #else | |
2103 # define GENERATE_C2_VM_LONG_CONSTANT_ENTRY(name) | |
2104 # define GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY(name, value) | |
2105 #endif /* COMPILER1 */ | |
2106 | |
2107 // | |
2108 // Instantiation of VMStructEntries, VMTypeEntries and VMIntConstantEntries | |
2109 // | |
2110 | |
2111 // These initializers are allowed to access private fields in classes | |
2112 // as long as class VMStructs is a friend | |
2113 VMStructEntry VMStructs::localHotSpotVMStructs[] = { | |
2114 | |
2115 VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2116 GENERATE_STATIC_VM_STRUCT_ENTRY, \ | |
2117 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2118 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2119 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2120 GENERATE_C1_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2121 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2122 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2123 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2124 GENERATE_VM_STRUCT_LAST_ENTRY) | |
2125 | |
2126 #ifndef SERIALGC | |
2127 VM_STRUCTS_PARALLELGC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2128 GENERATE_STATIC_VM_STRUCT_ENTRY) | |
2129 | |
2130 VM_STRUCTS_CMS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
187 | 2131 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ |
0 | 2132 GENERATE_STATIC_VM_STRUCT_ENTRY) |
2133 #endif // SERIALGC | |
2134 | |
2135 VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2136 GENERATE_STATIC_VM_STRUCT_ENTRY, \ | |
2137 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2138 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2139 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2140 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2141 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2142 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2143 GENERATE_VM_STRUCT_LAST_ENTRY) | |
2144 | |
2145 VM_STRUCTS_OS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2146 GENERATE_STATIC_VM_STRUCT_ENTRY, \ | |
2147 GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2148 GENERATE_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2149 GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2150 GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, \ | |
2151 GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2152 GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY, \ | |
2153 GENERATE_VM_STRUCT_LAST_ENTRY) | |
2154 }; | |
2155 | |
2156 VMTypeEntry VMStructs::localHotSpotVMTypes[] = { | |
2157 | |
2158 VM_TYPES(GENERATE_VM_TYPE_ENTRY, | |
2159 GENERATE_TOPLEVEL_VM_TYPE_ENTRY, | |
2160 GENERATE_OOP_VM_TYPE_ENTRY, | |
2161 GENERATE_INTEGER_VM_TYPE_ENTRY, | |
2162 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, | |
2163 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2164 GENERATE_C2_VM_TYPE_ENTRY, | |
2165 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2166 GENERATE_VM_TYPE_LAST_ENTRY) | |
2167 | |
2168 #ifndef SERIALGC | |
2169 VM_TYPES_PARALLELGC(GENERATE_VM_TYPE_ENTRY, | |
2170 GENERATE_TOPLEVEL_VM_TYPE_ENTRY) | |
2171 | |
2172 VM_TYPES_CMS(GENERATE_VM_TYPE_ENTRY, | |
2173 GENERATE_TOPLEVEL_VM_TYPE_ENTRY) | |
2174 | |
2175 VM_TYPES_PARNEW(GENERATE_VM_TYPE_ENTRY) | |
2176 #endif // SERIALGC | |
2177 | |
2178 VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY, | |
2179 GENERATE_TOPLEVEL_VM_TYPE_ENTRY, | |
2180 GENERATE_OOP_VM_TYPE_ENTRY, | |
2181 GENERATE_INTEGER_VM_TYPE_ENTRY, | |
2182 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, | |
2183 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2184 GENERATE_C2_VM_TYPE_ENTRY, | |
2185 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2186 GENERATE_VM_TYPE_LAST_ENTRY) | |
2187 | |
2188 VM_TYPES_OS_CPU(GENERATE_VM_TYPE_ENTRY, | |
2189 GENERATE_TOPLEVEL_VM_TYPE_ENTRY, | |
2190 GENERATE_OOP_VM_TYPE_ENTRY, | |
2191 GENERATE_INTEGER_VM_TYPE_ENTRY, | |
2192 GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, | |
2193 GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2194 GENERATE_C2_VM_TYPE_ENTRY, | |
2195 GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2196 GENERATE_VM_TYPE_LAST_ENTRY) | |
2197 }; | |
2198 | |
2199 VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = { | |
2200 | |
2201 VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY, | |
2202 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2203 GENERATE_C1_VM_INT_CONSTANT_ENTRY, | |
2204 GENERATE_C2_VM_INT_CONSTANT_ENTRY, | |
2205 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2206 GENERATE_VM_INT_CONSTANT_LAST_ENTRY) | |
2207 | |
2208 #ifndef SERIALGC | |
2209 VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY) | |
2210 | |
2211 VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY) | |
2212 #endif // SERIALGC | |
2213 | |
2214 VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY, | |
2215 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2216 GENERATE_C1_VM_INT_CONSTANT_ENTRY, | |
2217 GENERATE_C2_VM_INT_CONSTANT_ENTRY, | |
2218 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2219 GENERATE_VM_INT_CONSTANT_LAST_ENTRY) | |
2220 | |
2221 VM_INT_CONSTANTS_OS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY, | |
2222 GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2223 GENERATE_C1_VM_INT_CONSTANT_ENTRY, | |
2224 GENERATE_C2_VM_INT_CONSTANT_ENTRY, | |
2225 GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, | |
2226 GENERATE_VM_INT_CONSTANT_LAST_ENTRY) | |
2227 }; | |
2228 | |
2229 VMLongConstantEntry VMStructs::localHotSpotVMLongConstants[] = { | |
2230 | |
2231 VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY, | |
2232 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2233 GENERATE_C1_VM_LONG_CONSTANT_ENTRY, | |
2234 GENERATE_C2_VM_LONG_CONSTANT_ENTRY, | |
2235 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2236 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY) | |
2237 | |
2238 VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY, | |
2239 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2240 GENERATE_C1_VM_LONG_CONSTANT_ENTRY, | |
2241 GENERATE_C2_VM_LONG_CONSTANT_ENTRY, | |
2242 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2243 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY) | |
2244 | |
2245 VM_LONG_CONSTANTS_OS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY, | |
2246 GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2247 GENERATE_C1_VM_LONG_CONSTANT_ENTRY, | |
2248 GENERATE_C2_VM_LONG_CONSTANT_ENTRY, | |
2249 GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, | |
2250 GENERATE_VM_LONG_CONSTANT_LAST_ENTRY) | |
2251 }; | |
2252 | |
2253 // This is used both to check the types of referenced fields and, in | |
2254 // debug builds, to ensure that all of the field types are present. | |
2255 void | |
2256 VMStructs::init() { | |
2257 VM_STRUCTS(CHECK_NONSTATIC_VM_STRUCT_ENTRY, | |
2258 CHECK_STATIC_VM_STRUCT_ENTRY, | |
2259 CHECK_NO_OP, | |
2260 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, | |
2261 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, | |
2262 CHECK_C1_NONSTATIC_VM_STRUCT_ENTRY, | |
2263 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, | |
2264 CHECK_NO_OP, | |
2265 CHECK_NO_OP, | |
2266 CHECK_SENTINEL); | |
2267 | |
2268 #ifndef SERIALGC | |
2269 VM_STRUCTS_PARALLELGC(CHECK_NONSTATIC_VM_STRUCT_ENTRY, | |
2270 CHECK_STATIC_VM_STRUCT_ENTRY); | |
2271 | |
2272 VM_STRUCTS_CMS(CHECK_NONSTATIC_VM_STRUCT_ENTRY, | |
187 | 2273 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, |
0 | 2274 CHECK_STATIC_VM_STRUCT_ENTRY); |
2275 #endif // SERIALGC | |
2276 | |
2277 VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY, | |
2278 CHECK_STATIC_VM_STRUCT_ENTRY, | |
2279 CHECK_NO_OP, | |
2280 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, | |
2281 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, | |
2282 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, | |
2283 CHECK_NO_OP, | |
2284 CHECK_NO_OP, | |
2285 CHECK_SENTINEL); | |
2286 | |
2287 VM_STRUCTS_OS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY, | |
2288 CHECK_STATIC_VM_STRUCT_ENTRY, | |
2289 CHECK_NO_OP, | |
2290 CHECK_VOLATILE_NONSTATIC_VM_STRUCT_ENTRY, | |
2291 CHECK_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, | |
2292 CHECK_C2_NONSTATIC_VM_STRUCT_ENTRY, | |
2293 CHECK_NO_OP, | |
2294 CHECK_NO_OP, | |
2295 CHECK_SENTINEL); | |
2296 | |
2297 VM_TYPES(CHECK_VM_TYPE_ENTRY, | |
2298 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2299 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2300 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2301 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2302 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2303 CHECK_C2_VM_TYPE_ENTRY, | |
2304 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2305 CHECK_SENTINEL); | |
2306 | |
2307 #ifndef SERIALGC | |
2308 VM_TYPES_PARALLELGC(CHECK_VM_TYPE_ENTRY, | |
2309 CHECK_SINGLE_ARG_VM_TYPE_NO_OP); | |
2310 | |
2311 VM_TYPES_CMS(CHECK_VM_TYPE_ENTRY, | |
2312 CHECK_SINGLE_ARG_VM_TYPE_NO_OP); | |
2313 | |
2314 VM_TYPES_PARNEW(CHECK_VM_TYPE_ENTRY) | |
2315 #endif // SERIALGC | |
2316 | |
2317 VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY, | |
2318 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2319 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2320 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2321 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2322 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2323 CHECK_C2_VM_TYPE_ENTRY, | |
2324 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2325 CHECK_SENTINEL); | |
2326 | |
2327 VM_TYPES_OS_CPU(CHECK_VM_TYPE_ENTRY, | |
2328 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2329 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2330 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2331 CHECK_SINGLE_ARG_VM_TYPE_NO_OP, | |
2332 CHECK_C1_TOPLEVEL_VM_TYPE_ENTRY, | |
2333 CHECK_C2_VM_TYPE_ENTRY, | |
2334 CHECK_C2_TOPLEVEL_VM_TYPE_ENTRY, | |
2335 CHECK_SENTINEL); | |
2336 | |
2337 // | |
2338 // Split VM_STRUCTS() invocation into two parts to allow MS VC++ 6.0 | |
2339 // to build with the source mounted over SNC3.2. Symptom was that | |
2340 // debug build failed with an internal compiler error. Has been seen | |
2341 // mounting sources from Solaris 2.6 and 2.7 hosts, but so far not | |
2342 // 2.8 hosts. Appears to occur because line is too long. | |
2343 // | |
2344 // If an assertion failure is triggered here it means that an entry | |
2345 // in VMStructs::localHotSpotVMStructs[] was not found in | |
2346 // VMStructs::localHotSpotVMTypes[]. (The assertion itself had to be | |
2347 // made less descriptive because of this above bug -- see the | |
2348 // definition of ENSURE_FIELD_TYPE_PRESENT.) | |
2349 // | |
2350 // NOTE: taken out because this was just not working on everyone's | |
2351 // Solstice NFS setup. If everyone switches to local workspaces on | |
2352 // Win32, we can put this back in. | |
2353 #ifndef _WINDOWS | |
2354 debug_only(VM_STRUCTS(ENSURE_FIELD_TYPE_PRESENT, \ | |
2355 CHECK_NO_OP, \ | |
2356 CHECK_NO_OP, \ | |
2357 CHECK_NO_OP, \ | |
2358 CHECK_NO_OP, \ | |
2359 CHECK_NO_OP, \ | |
2360 CHECK_NO_OP, \ | |
2361 CHECK_NO_OP, \ | |
2362 CHECK_NO_OP, \ | |
2363 CHECK_SENTINEL)); | |
2364 debug_only(VM_STRUCTS(CHECK_NO_OP, \ | |
2365 ENSURE_FIELD_TYPE_PRESENT, \ | |
2366 CHECK_NO_OP, \ | |
2367 ENSURE_FIELD_TYPE_PRESENT, \ | |
2368 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \ | |
2369 ENSURE_C1_FIELD_TYPE_PRESENT, \ | |
2370 ENSURE_C2_FIELD_TYPE_PRESENT, \ | |
2371 CHECK_NO_OP, \ | |
2372 CHECK_NO_OP, \ | |
2373 CHECK_SENTINEL)); | |
2374 #ifndef SERIALGC | |
2375 debug_only(VM_STRUCTS_PARALLELGC(ENSURE_FIELD_TYPE_PRESENT, \ | |
2376 ENSURE_FIELD_TYPE_PRESENT)); | |
2377 debug_only(VM_STRUCTS_CMS(ENSURE_FIELD_TYPE_PRESENT, \ | |
187 | 2378 ENSURE_FIELD_TYPE_PRESENT, \ |
0 | 2379 ENSURE_FIELD_TYPE_PRESENT)); |
2380 #endif // SERIALGC | |
2381 debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT, \ | |
2382 ENSURE_FIELD_TYPE_PRESENT, \ | |
2383 CHECK_NO_OP, \ | |
2384 ENSURE_FIELD_TYPE_PRESENT, \ | |
2385 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \ | |
2386 ENSURE_C2_FIELD_TYPE_PRESENT, \ | |
2387 CHECK_NO_OP, \ | |
2388 CHECK_NO_OP, \ | |
2389 CHECK_SENTINEL)); | |
2390 debug_only(VM_STRUCTS_OS_CPU(ENSURE_FIELD_TYPE_PRESENT, \ | |
2391 ENSURE_FIELD_TYPE_PRESENT, \ | |
2392 CHECK_NO_OP, \ | |
2393 ENSURE_FIELD_TYPE_PRESENT, \ | |
2394 ENSURE_NONPRODUCT_FIELD_TYPE_PRESENT, \ | |
2395 ENSURE_C2_FIELD_TYPE_PRESENT, \ | |
2396 CHECK_NO_OP, \ | |
2397 CHECK_NO_OP, \ | |
2398 CHECK_SENTINEL)); | |
2399 #endif | |
2400 } | |
2401 | |
2402 extern "C" { | |
2403 | |
2404 // see comments on cast_uint64_t at the top of this file | |
2405 #define ASSIGN_CONST_TO_64BIT_VAR(var, expr) \ | |
2406 JNIEXPORT uint64_t var = cast_uint64_t(expr); | |
2407 #define ASSIGN_OFFSET_TO_64BIT_VAR(var, type, field) \ | |
2408 ASSIGN_CONST_TO_64BIT_VAR(var, offset_of(type, field)) | |
2409 #define ASSIGN_STRIDE_TO_64BIT_VAR(var, array) \ | |
2410 ASSIGN_CONST_TO_64BIT_VAR(var, (char*)&array[1] - (char*)&array[0]) | |
2411 | |
2412 JNIEXPORT VMStructEntry* gHotSpotVMStructs = VMStructs::localHotSpotVMStructs; | |
2413 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeNameOffset, VMStructEntry, typeName); | |
2414 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryFieldNameOffset, VMStructEntry, fieldName); | |
2415 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryTypeStringOffset, VMStructEntry, typeString); | |
2416 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryIsStaticOffset, VMStructEntry, isStatic); | |
2417 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryOffsetOffset, VMStructEntry, offset); | |
2418 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMStructEntryAddressOffset, VMStructEntry, address); | |
2419 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMStructEntryArrayStride, gHotSpotVMStructs); | |
2420 JNIEXPORT VMTypeEntry* gHotSpotVMTypes = VMStructs::localHotSpotVMTypes; | |
2421 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryTypeNameOffset, VMTypeEntry, typeName); | |
2422 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySuperclassNameOffset, VMTypeEntry, superclassName); | |
2423 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsOopTypeOffset, VMTypeEntry, isOopType); | |
2424 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsIntegerTypeOffset, VMTypeEntry, isIntegerType); | |
2425 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntryIsUnsignedOffset, VMTypeEntry, isUnsigned); | |
2426 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMTypeEntrySizeOffset, VMTypeEntry, size); | |
2427 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMTypeEntryArrayStride,gHotSpotVMTypes); | |
2428 JNIEXPORT VMIntConstantEntry* gHotSpotVMIntConstants = VMStructs::localHotSpotVMIntConstants; | |
2429 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryNameOffset, VMIntConstantEntry, name); | |
2430 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMIntConstantEntryValueOffset, VMIntConstantEntry, value); | |
2431 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMIntConstantEntryArrayStride, gHotSpotVMIntConstants); | |
2432 JNIEXPORT VMLongConstantEntry* gHotSpotVMLongConstants = VMStructs::localHotSpotVMLongConstants; | |
2433 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryNameOffset, VMLongConstantEntry, name); | |
2434 ASSIGN_OFFSET_TO_64BIT_VAR(gHotSpotVMLongConstantEntryValueOffset, VMLongConstantEntry, value); | |
2435 ASSIGN_STRIDE_TO_64BIT_VAR(gHotSpotVMLongConstantEntryArrayStride, gHotSpotVMLongConstants); | |
2436 } | |
2437 | |
2438 #ifdef ASSERT | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2439 static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool isRecurse) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2440 { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2441 VMTypeEntry* types = origtypes; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2442 while (types->typeName != NULL) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2443 if (!strcmp(typeName, types->typeName)) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2444 return 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2445 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2446 ++types; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2447 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2448 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2449 size_t len = strlen(typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2450 if (typeName[len-1] == '*') { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2451 char * s = new char[len]; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2452 strncpy(s, typeName, len - 1); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2453 s[len-1] = '\0'; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2454 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2455 if (recursiveFindType(origtypes, s, true) == 1) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2456 delete s; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2457 return 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2458 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2459 delete s; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2460 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2461 if (strstr(typeName, "GrowableArray<") == typeName) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2462 const char * start = typeName + strlen("GrowableArray<"); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2463 const char * end = strrchr(typeName, '>'); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2464 int len = end - start + 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2465 char * s = new char[len]; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2466 strncpy(s, start, len - 1); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2467 s[len-1] = '\0'; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2468 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2469 if (recursiveFindType(origtypes, s, true) == 1) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2470 delete s; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2471 return 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2472 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2473 delete s; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2474 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2475 if (strstr(typeName, "const ") == typeName) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2476 const char * s = typeName + strlen("const "); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2477 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2478 if (recursiveFindType(origtypes, s, true) == 1) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2479 return 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2480 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2481 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2482 if (strstr(typeName, " const") == typeName + len - 6) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2483 char * s = strdup(typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2484 s[len - 6] = '\0'; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2485 // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2486 if (recursiveFindType(origtypes, s, true) == 1) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2487 return 1; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2488 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2489 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2490 if (!isRecurse) { |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2491 tty->print_cr("type \"%s\" not found", typeName); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2492 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2493 return 2; |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2494 } |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2495 |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2496 |
0 | 2497 int |
2498 VMStructs::findType(const char* typeName) { | |
2499 VMTypeEntry* types = gHotSpotVMTypes; | |
2500 | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2119
diff
changeset
|
2501 return recursiveFindType(types, typeName, false); |
0 | 2502 } |
2503 #endif | |
2504 | |
2505 void vmStructs_init() { | |
2506 debug_only(VMStructs::init()); | |
2507 } |