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