| 1 | /* |
| 2 | * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. |
| 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 | * |
| 19 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| 20 | * or visit www.oracle.com if you need additional information or have any |
| 21 | * questions. |
| 22 | * |
| 23 | */ |
| 24 | |
| 25 | #include "precompiled.hpp" |
| 26 | #include "compiler/compileBroker.hpp" |
| 27 | #include "gc/shared/collectedHeap.hpp" |
| 28 | #include "jvmci/jvmciCodeInstaller.hpp" |
| 29 | #include "jvmci/jvmciCompilerToVM.hpp" |
| 30 | #include "jvmci/jvmciRuntime.hpp" |
| 31 | #include "jvmci/vmStructs_compiler_runtime.hpp" |
| 32 | #include "jvmci/vmStructs_jvmci.hpp" |
| 33 | #include "oops/objArrayKlass.hpp" |
| 34 | #include "runtime/deoptimization.hpp" |
| 35 | #include "runtime/sharedRuntime.hpp" |
| 36 | #if INCLUDE_G1GC |
| 37 | #include "gc/g1/g1CardTable.hpp" |
| 38 | #include "gc/g1/heapRegion.hpp" |
| 39 | #include "gc/g1/g1ThreadLocalData.hpp" |
| 40 | #endif |
| 41 | |
| 42 | #define VM_STRUCTS(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field) \ |
| 43 | static_field(CompilerToVM::Data, Klass_vtable_start_offset, int) \ |
| 44 | static_field(CompilerToVM::Data, Klass_vtable_length_offset, int) \ |
| 45 | \ |
| 46 | static_field(CompilerToVM::Data, Method_extra_stack_entries, int) \ |
| 47 | \ |
| 48 | static_field(CompilerToVM::Data, SharedRuntime_ic_miss_stub, address) \ |
| 49 | static_field(CompilerToVM::Data, SharedRuntime_handle_wrong_method_stub, address) \ |
| 50 | static_field(CompilerToVM::Data, SharedRuntime_deopt_blob_unpack, address) \ |
| 51 | static_field(CompilerToVM::Data, SharedRuntime_deopt_blob_uncommon_trap, address) \ |
| 52 | \ |
| 53 | static_field(CompilerToVM::Data, ThreadLocalAllocBuffer_alignment_reserve, size_t) \ |
| 54 | \ |
| 55 | static_field(CompilerToVM::Data, Universe_collectedHeap, CollectedHeap*) \ |
| 56 | static_field(CompilerToVM::Data, Universe_base_vtable_size, int) \ |
| 57 | static_field(CompilerToVM::Data, Universe_narrow_oop_base, address) \ |
| 58 | static_field(CompilerToVM::Data, Universe_narrow_oop_shift, int) \ |
| 59 | static_field(CompilerToVM::Data, Universe_narrow_klass_base, address) \ |
| 60 | static_field(CompilerToVM::Data, Universe_narrow_klass_shift, int) \ |
| 61 | static_field(CompilerToVM::Data, Universe_non_oop_bits, void*) \ |
| 62 | static_field(CompilerToVM::Data, Universe_verify_oop_mask, uintptr_t) \ |
| 63 | static_field(CompilerToVM::Data, Universe_verify_oop_bits, uintptr_t) \ |
| 64 | \ |
| 65 | static_field(CompilerToVM::Data, _supports_inline_contig_alloc, bool) \ |
| 66 | static_field(CompilerToVM::Data, _heap_end_addr, HeapWord**) \ |
| 67 | static_field(CompilerToVM::Data, _heap_top_addr, HeapWord* volatile*) \ |
| 68 | \ |
| 69 | static_field(CompilerToVM::Data, _max_oop_map_stack_offset, int) \ |
| 70 | static_field(CompilerToVM::Data, _fields_annotations_base_offset, int) \ |
| 71 | \ |
| 72 | static_field(CompilerToVM::Data, cardtable_start_address, jbyte*) \ |
| 73 | static_field(CompilerToVM::Data, cardtable_shift, int) \ |
| 74 | \ |
| 75 | static_field(CompilerToVM::Data, vm_page_size, int) \ |
| 76 | \ |
| 77 | static_field(CompilerToVM::Data, sizeof_vtableEntry, int) \ |
| 78 | static_field(CompilerToVM::Data, sizeof_ExceptionTableElement, int) \ |
| 79 | static_field(CompilerToVM::Data, sizeof_LocalVariableTableElement, int) \ |
| 80 | static_field(CompilerToVM::Data, sizeof_ConstantPool, int) \ |
| 81 | static_field(CompilerToVM::Data, sizeof_narrowKlass, int) \ |
| 82 | static_field(CompilerToVM::Data, sizeof_arrayOopDesc, int) \ |
| 83 | static_field(CompilerToVM::Data, sizeof_BasicLock, int) \ |
| 84 | \ |
| 85 | static_field(CompilerToVM::Data, dsin, address) \ |
| 86 | static_field(CompilerToVM::Data, dcos, address) \ |
| 87 | static_field(CompilerToVM::Data, dtan, address) \ |
| 88 | static_field(CompilerToVM::Data, dexp, address) \ |
| 89 | static_field(CompilerToVM::Data, dlog, address) \ |
| 90 | static_field(CompilerToVM::Data, dlog10, address) \ |
| 91 | static_field(CompilerToVM::Data, dpow, address) \ |
| 92 | \ |
| 93 | static_field(CompilerToVM::Data, symbol_init, address) \ |
| 94 | static_field(CompilerToVM::Data, symbol_clinit, address) \ |
| 95 | \ |
| 96 | static_field(Abstract_VM_Version, _features, uint64_t) \ |
| 97 | \ |
| 98 | nonstatic_field(Annotations, _fields_annotations, Array<AnnotationArray*>*) \ |
| 99 | \ |
| 100 | nonstatic_field(Array<int>, _length, int) \ |
| 101 | unchecked_nonstatic_field(Array<u1>, _data, sizeof(u1)) \ |
| 102 | unchecked_nonstatic_field(Array<u2>, _data, sizeof(u2)) \ |
| 103 | nonstatic_field(Array<Klass*>, _length, int) \ |
| 104 | nonstatic_field(Array<Klass*>, _data[0], Klass*) \ |
| 105 | \ |
| 106 | volatile_nonstatic_field(BasicLock, _displaced_header, markOop) \ |
| 107 | \ |
| 108 | static_field(CodeCache, _low_bound, address) \ |
| 109 | static_field(CodeCache, _high_bound, address) \ |
| 110 | \ |
| 111 | nonstatic_field(CollectedHeap, _total_collections, unsigned int) \ |
| 112 | \ |
| 113 | nonstatic_field(CompileTask, _num_inlined_bytecodes, int) \ |
| 114 | \ |
| 115 | nonstatic_field(ConstantPool, _tags, Array<u1>*) \ |
| 116 | nonstatic_field(ConstantPool, _pool_holder, InstanceKlass*) \ |
| 117 | nonstatic_field(ConstantPool, _length, int) \ |
| 118 | nonstatic_field(ConstantPool, _flags, int) \ |
| 119 | \ |
| 120 | nonstatic_field(ConstMethod, _constants, ConstantPool*) \ |
| 121 | nonstatic_field(ConstMethod, _flags, u2) \ |
| 122 | nonstatic_field(ConstMethod, _code_size, u2) \ |
| 123 | nonstatic_field(ConstMethod, _name_index, u2) \ |
| 124 | nonstatic_field(ConstMethod, _signature_index, u2) \ |
| 125 | nonstatic_field(ConstMethod, _method_idnum, u2) \ |
| 126 | nonstatic_field(ConstMethod, _max_stack, u2) \ |
| 127 | nonstatic_field(ConstMethod, _max_locals, u2) \ |
| 128 | \ |
| 129 | nonstatic_field(DataLayout, _header._struct._tag, u1) \ |
| 130 | nonstatic_field(DataLayout, _header._struct._flags, u1) \ |
| 131 | nonstatic_field(DataLayout, _header._struct._bci, u2) \ |
| 132 | nonstatic_field(DataLayout, _header._struct._traps, u4) \ |
| 133 | nonstatic_field(DataLayout, _cells[0], intptr_t) \ |
| 134 | \ |
| 135 | nonstatic_field(Deoptimization::UnrollBlock, _size_of_deoptimized_frame, int) \ |
| 136 | nonstatic_field(Deoptimization::UnrollBlock, _caller_adjustment, int) \ |
| 137 | nonstatic_field(Deoptimization::UnrollBlock, _number_of_frames, int) \ |
| 138 | nonstatic_field(Deoptimization::UnrollBlock, _total_frame_sizes, int) \ |
| 139 | nonstatic_field(Deoptimization::UnrollBlock, _frame_sizes, intptr_t*) \ |
| 140 | nonstatic_field(Deoptimization::UnrollBlock, _frame_pcs, address*) \ |
| 141 | nonstatic_field(Deoptimization::UnrollBlock, _initial_info, intptr_t) \ |
| 142 | nonstatic_field(Deoptimization::UnrollBlock, _unpack_kind, int) \ |
| 143 | \ |
| 144 | nonstatic_field(ExceptionTableElement, start_pc, u2) \ |
| 145 | nonstatic_field(ExceptionTableElement, end_pc, u2) \ |
| 146 | nonstatic_field(ExceptionTableElement, handler_pc, u2) \ |
| 147 | nonstatic_field(ExceptionTableElement, catch_type_index, u2) \ |
| 148 | \ |
| 149 | nonstatic_field(JVMFlag, _type, const char*) \ |
| 150 | nonstatic_field(JVMFlag, _name, const char*) \ |
| 151 | unchecked_nonstatic_field(JVMFlag, _addr, sizeof(void*)) \ |
| 152 | nonstatic_field(JVMFlag, _flags, JVMFlag::Flags) \ |
| 153 | static_field(JVMFlag, flags, JVMFlag*) \ |
| 154 | \ |
| 155 | nonstatic_field(InstanceKlass, _fields, Array<u2>*) \ |
| 156 | nonstatic_field(InstanceKlass, _constants, ConstantPool*) \ |
| 157 | nonstatic_field(InstanceKlass, _source_file_name_index, u2) \ |
| 158 | nonstatic_field(InstanceKlass, _init_state, u1) \ |
| 159 | nonstatic_field(InstanceKlass, _misc_flags, u2) \ |
| 160 | nonstatic_field(InstanceKlass, _annotations, Annotations*) \ |
| 161 | \ |
| 162 | volatile_nonstatic_field(JavaFrameAnchor, _last_Java_sp, intptr_t*) \ |
| 163 | volatile_nonstatic_field(JavaFrameAnchor, _last_Java_pc, address) \ |
| 164 | \ |
| 165 | nonstatic_field(JVMCICompileState, _jvmti_can_hotswap_or_post_breakpoint, jbyte) \ |
| 166 | nonstatic_field(JVMCICompileState, _jvmti_can_access_local_variables, jbyte) \ |
| 167 | nonstatic_field(JVMCICompileState, _jvmti_can_post_on_exceptions, jbyte) \ |
| 168 | nonstatic_field(JVMCICompileState, _jvmti_can_pop_frame, jbyte) \ |
| 169 | \ |
| 170 | nonstatic_field(JavaThread, _threadObj, oop) \ |
| 171 | nonstatic_field(JavaThread, _anchor, JavaFrameAnchor) \ |
| 172 | nonstatic_field(JavaThread, _vm_result, oop) \ |
| 173 | volatile_nonstatic_field(JavaThread, _exception_oop, oop) \ |
| 174 | volatile_nonstatic_field(JavaThread, _exception_pc, address) \ |
| 175 | volatile_nonstatic_field(JavaThread, _is_method_handle_return, int) \ |
| 176 | nonstatic_field(JavaThread, _osthread, OSThread*) \ |
| 177 | nonstatic_field(JavaThread, _pending_deoptimization, int) \ |
| 178 | nonstatic_field(JavaThread, _pending_failed_speculation, jlong) \ |
| 179 | nonstatic_field(JavaThread, _pending_transfer_to_interpreter, bool) \ |
| 180 | nonstatic_field(JavaThread, _jvmci_counters, jlong*) \ |
| 181 | nonstatic_field(JavaThread, _should_post_on_exceptions_flag, int) \ |
| 182 | nonstatic_field(JavaThread, _reserved_stack_activation, address) \ |
| 183 | \ |
| 184 | static_field(java_lang_Class, _klass_offset, int) \ |
| 185 | static_field(java_lang_Class, _array_klass_offset, int) \ |
| 186 | \ |
| 187 | nonstatic_field(InvocationCounter, _counter, unsigned int) \ |
| 188 | \ |
| 189 | nonstatic_field(Klass, _secondary_super_cache, Klass*) \ |
| 190 | nonstatic_field(Klass, _secondary_supers, Array<Klass*>*) \ |
| 191 | nonstatic_field(Klass, _super, Klass*) \ |
| 192 | nonstatic_field(Klass, _super_check_offset, juint) \ |
| 193 | nonstatic_field(Klass, _subklass, Klass*) \ |
| 194 | nonstatic_field(Klass, _layout_helper, jint) \ |
| 195 | nonstatic_field(Klass, _name, Symbol*) \ |
| 196 | nonstatic_field(Klass, _prototype_header, markOop) \ |
| 197 | nonstatic_field(Klass, _next_sibling, Klass*) \ |
| 198 | nonstatic_field(Klass, _java_mirror, OopHandle) \ |
| 199 | nonstatic_field(Klass, _modifier_flags, jint) \ |
| 200 | nonstatic_field(Klass, _access_flags, AccessFlags) \ |
| 201 | nonstatic_field(Klass, _class_loader_data, ClassLoaderData*) \ |
| 202 | \ |
| 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 | \ |
| 210 | nonstatic_field(Method, _constMethod, ConstMethod*) \ |
| 211 | nonstatic_field(Method, _method_data, MethodData*) \ |
| 212 | nonstatic_field(Method, _method_counters, MethodCounters*) \ |
| 213 | nonstatic_field(Method, _access_flags, AccessFlags) \ |
| 214 | nonstatic_field(Method, _vtable_index, int) \ |
| 215 | nonstatic_field(Method, _intrinsic_id, u2) \ |
| 216 | nonstatic_field(Method, _flags, u2) \ |
| 217 | volatile_nonstatic_field(Method, _code, CompiledMethod*) \ |
| 218 | volatile_nonstatic_field(Method, _from_compiled_entry, address) \ |
| 219 | \ |
| 220 | nonstatic_field(MethodCounters, _nmethod_age, int) \ |
| 221 | nonstatic_field(MethodCounters, _interpreter_invocation_limit, int) \ |
| 222 | nonstatic_field(MethodCounters, _interpreter_backward_branch_limit, int) \ |
| 223 | nonstatic_field(MethodCounters, _interpreter_profile_limit, int) \ |
| 224 | nonstatic_field(MethodCounters, _invoke_mask, int) \ |
| 225 | nonstatic_field(MethodCounters, _backedge_mask, int) \ |
| 226 | nonstatic_field(MethodCounters, _interpreter_invocation_count, int) \ |
| 227 | nonstatic_field(MethodCounters, _interpreter_throwout_count, u2) \ |
| 228 | JVMTI_ONLY(nonstatic_field(MethodCounters, _number_of_breakpoints, u2)) \ |
| 229 | nonstatic_field(MethodCounters, _invocation_counter, InvocationCounter) \ |
| 230 | nonstatic_field(MethodCounters, _backedge_counter, InvocationCounter) \ |
| 231 | \ |
| 232 | nonstatic_field(MethodData, _size, int) \ |
| 233 | nonstatic_field(MethodData, _method, Method*) \ |
| 234 | nonstatic_field(MethodData, _data_size, int) \ |
| 235 | nonstatic_field(MethodData, _data[0], intptr_t) \ |
| 236 | nonstatic_field(MethodData, _parameters_type_data_di, int) \ |
| 237 | nonstatic_field(MethodData, _nof_decompiles, uint) \ |
| 238 | nonstatic_field(MethodData, _nof_overflow_recompiles, uint) \ |
| 239 | nonstatic_field(MethodData, _nof_overflow_traps, uint) \ |
| 240 | nonstatic_field(MethodData, _trap_hist._array[0], u1) \ |
| 241 | nonstatic_field(MethodData, _eflags, intx) \ |
| 242 | nonstatic_field(MethodData, _arg_local, intx) \ |
| 243 | nonstatic_field(MethodData, _arg_stack, intx) \ |
| 244 | nonstatic_field(MethodData, _arg_returned, intx) \ |
| 245 | nonstatic_field(MethodData, _tenure_traps, uint) \ |
| 246 | nonstatic_field(MethodData, _invoke_mask, int) \ |
| 247 | nonstatic_field(MethodData, _backedge_mask, int) \ |
| 248 | nonstatic_field(MethodData, _jvmci_ir_size, int) \ |
| 249 | \ |
| 250 | nonstatic_field(nmethod, _verified_entry_point, address) \ |
| 251 | nonstatic_field(nmethod, _comp_level, int) \ |
| 252 | \ |
| 253 | nonstatic_field(ObjArrayKlass, _element_klass, Klass*) \ |
| 254 | \ |
| 255 | volatile_nonstatic_field(ObjectMonitor, _cxq, ObjectWaiter*) \ |
| 256 | volatile_nonstatic_field(ObjectMonitor, _EntryList, ObjectWaiter*) \ |
| 257 | volatile_nonstatic_field(ObjectMonitor, _succ, Thread*) \ |
| 258 | \ |
| 259 | volatile_nonstatic_field(oopDesc, _mark, markOop) \ |
| 260 | volatile_nonstatic_field(oopDesc, _metadata._klass, Klass*) \ |
| 261 | \ |
| 262 | static_field(os, _polling_page, address) \ |
| 263 | \ |
| 264 | volatile_nonstatic_field(OSThread, _interrupted, jint) \ |
| 265 | \ |
| 266 | static_field(StubRoutines, _verify_oop_count, jint) \ |
| 267 | \ |
| 268 | static_field(StubRoutines, _throw_delayed_StackOverflowError_entry, address) \ |
| 269 | \ |
| 270 | static_field(StubRoutines, _jbyte_arraycopy, address) \ |
| 271 | static_field(StubRoutines, _jshort_arraycopy, address) \ |
| 272 | static_field(StubRoutines, _jint_arraycopy, address) \ |
| 273 | static_field(StubRoutines, _jlong_arraycopy, address) \ |
| 274 | static_field(StubRoutines, _oop_arraycopy, address) \ |
| 275 | static_field(StubRoutines, _oop_arraycopy_uninit, address) \ |
| 276 | static_field(StubRoutines, _jbyte_disjoint_arraycopy, address) \ |
| 277 | static_field(StubRoutines, _jshort_disjoint_arraycopy, address) \ |
| 278 | static_field(StubRoutines, _jint_disjoint_arraycopy, address) \ |
| 279 | static_field(StubRoutines, _jlong_disjoint_arraycopy, address) \ |
| 280 | static_field(StubRoutines, _oop_disjoint_arraycopy, address) \ |
| 281 | static_field(StubRoutines, _oop_disjoint_arraycopy_uninit, address) \ |
| 282 | static_field(StubRoutines, _arrayof_jbyte_arraycopy, address) \ |
| 283 | static_field(StubRoutines, _arrayof_jshort_arraycopy, address) \ |
| 284 | static_field(StubRoutines, _arrayof_jint_arraycopy, address) \ |
| 285 | static_field(StubRoutines, _arrayof_jlong_arraycopy, address) \ |
| 286 | static_field(StubRoutines, _arrayof_oop_arraycopy, address) \ |
| 287 | static_field(StubRoutines, _arrayof_oop_arraycopy_uninit, address) \ |
| 288 | static_field(StubRoutines, _arrayof_jbyte_disjoint_arraycopy, address) \ |
| 289 | static_field(StubRoutines, _arrayof_jshort_disjoint_arraycopy, address) \ |
| 290 | static_field(StubRoutines, _arrayof_jint_disjoint_arraycopy, address) \ |
| 291 | static_field(StubRoutines, _arrayof_jlong_disjoint_arraycopy, address) \ |
| 292 | static_field(StubRoutines, _arrayof_oop_disjoint_arraycopy, address) \ |
| 293 | static_field(StubRoutines, _arrayof_oop_disjoint_arraycopy_uninit, address) \ |
| 294 | static_field(StubRoutines, _checkcast_arraycopy, address) \ |
| 295 | static_field(StubRoutines, _checkcast_arraycopy_uninit, address) \ |
| 296 | static_field(StubRoutines, _unsafe_arraycopy, address) \ |
| 297 | static_field(StubRoutines, _generic_arraycopy, address) \ |
| 298 | \ |
| 299 | static_field(StubRoutines, _aescrypt_encryptBlock, address) \ |
| 300 | static_field(StubRoutines, _aescrypt_decryptBlock, address) \ |
| 301 | static_field(StubRoutines, _cipherBlockChaining_encryptAESCrypt, address) \ |
| 302 | static_field(StubRoutines, _cipherBlockChaining_decryptAESCrypt, address) \ |
| 303 | static_field(StubRoutines, _counterMode_AESCrypt, address) \ |
| 304 | static_field(StubRoutines, _base64_encodeBlock, address) \ |
| 305 | static_field(StubRoutines, _ghash_processBlocks, address) \ |
| 306 | static_field(StubRoutines, _sha1_implCompress, address) \ |
| 307 | static_field(StubRoutines, _sha1_implCompressMB, address) \ |
| 308 | static_field(StubRoutines, _sha256_implCompress, address) \ |
| 309 | static_field(StubRoutines, _sha256_implCompressMB, address) \ |
| 310 | static_field(StubRoutines, _sha512_implCompress, address) \ |
| 311 | static_field(StubRoutines, _sha512_implCompressMB, address) \ |
| 312 | static_field(StubRoutines, _updateBytesCRC32, address) \ |
| 313 | static_field(StubRoutines, _crc_table_adr, address) \ |
| 314 | static_field(StubRoutines, _crc32c_table_addr, address) \ |
| 315 | static_field(StubRoutines, _updateBytesCRC32C, address) \ |
| 316 | static_field(StubRoutines, _updateBytesAdler32, address) \ |
| 317 | static_field(StubRoutines, _multiplyToLen, address) \ |
| 318 | static_field(StubRoutines, _squareToLen, address) \ |
| 319 | static_field(StubRoutines, _mulAdd, address) \ |
| 320 | static_field(StubRoutines, _montgomeryMultiply, address) \ |
| 321 | static_field(StubRoutines, _montgomerySquare, address) \ |
| 322 | static_field(StubRoutines, _vectorizedMismatch, address) \ |
| 323 | \ |
| 324 | nonstatic_field(Thread, _tlab, ThreadLocalAllocBuffer) \ |
| 325 | nonstatic_field(Thread, _allocated_bytes, jlong) \ |
| 326 | nonstatic_field(Thread, _polling_page, address) \ |
| 327 | \ |
| 328 | nonstatic_field(ThreadLocalAllocBuffer, _start, HeapWord*) \ |
| 329 | nonstatic_field(ThreadLocalAllocBuffer, _top, HeapWord*) \ |
| 330 | nonstatic_field(ThreadLocalAllocBuffer, _end, HeapWord*) \ |
| 331 | nonstatic_field(ThreadLocalAllocBuffer, _pf_top, HeapWord*) \ |
| 332 | nonstatic_field(ThreadLocalAllocBuffer, _desired_size, size_t) \ |
| 333 | nonstatic_field(ThreadLocalAllocBuffer, _refill_waste_limit, size_t) \ |
| 334 | nonstatic_field(ThreadLocalAllocBuffer, _number_of_refills, unsigned) \ |
| 335 | nonstatic_field(ThreadLocalAllocBuffer, _fast_refill_waste, unsigned) \ |
| 336 | nonstatic_field(ThreadLocalAllocBuffer, _slow_allocations, unsigned) \ |
| 337 | \ |
| 338 | nonstatic_field(ThreadShadow, _pending_exception, oop) \ |
| 339 | \ |
| 340 | static_field(vmSymbols, _symbols[0], Symbol*) \ |
| 341 | \ |
| 342 | nonstatic_field(vtableEntry, _method, Method*) \ |
| 343 | |
| 344 | #define VM_TYPES(declare_type, declare_toplevel_type, declare_integer_type, declare_unsigned_integer_type) \ |
| 345 | declare_integer_type(bool) \ |
| 346 | declare_unsigned_integer_type(size_t) \ |
| 347 | declare_integer_type(intx) \ |
| 348 | declare_unsigned_integer_type(uintx) \ |
| 349 | \ |
| 350 | declare_toplevel_type(BasicLock) \ |
| 351 | declare_toplevel_type(CompilerToVM) \ |
| 352 | declare_toplevel_type(ExceptionTableElement) \ |
| 353 | declare_toplevel_type(JVMFlag) \ |
| 354 | declare_toplevel_type(JVMFlag*) \ |
| 355 | declare_toplevel_type(InvocationCounter) \ |
| 356 | declare_toplevel_type(JVMCICompileState) \ |
| 357 | declare_toplevel_type(JVMCIEnv) \ |
| 358 | declare_toplevel_type(LocalVariableTableElement) \ |
| 359 | declare_toplevel_type(narrowKlass) \ |
| 360 | declare_toplevel_type(ObjectWaiter) \ |
| 361 | declare_toplevel_type(Symbol*) \ |
| 362 | declare_toplevel_type(vtableEntry) \ |
| 363 | \ |
| 364 | declare_toplevel_type(oopDesc) \ |
| 365 | declare_type(arrayOopDesc, oopDesc) \ |
| 366 | \ |
| 367 | declare_toplevel_type(MetaspaceObj) \ |
| 368 | declare_type(Metadata, MetaspaceObj) \ |
| 369 | declare_type(Klass, Metadata) \ |
| 370 | declare_type(InstanceKlass, Klass) \ |
| 371 | declare_type(ConstantPool, Metadata) \ |
| 372 | |
| 373 | #define VM_INT_CONSTANTS(declare_constant, declare_constant_with_value, declare_preprocessor_constant) \ |
| 374 | declare_preprocessor_constant("ASSERT", DEBUG_ONLY(1) NOT_DEBUG(0)) \ |
| 375 | declare_preprocessor_constant("FIELDINFO_TAG_SIZE", FIELDINFO_TAG_SIZE) \ |
| 376 | declare_preprocessor_constant("STACK_BIAS", STACK_BIAS) \ |
| 377 | \ |
| 378 | declare_constant(CompLevel_none) \ |
| 379 | declare_constant(CompLevel_simple) \ |
| 380 | declare_constant(CompLevel_limited_profile) \ |
| 381 | declare_constant(CompLevel_full_profile) \ |
| 382 | declare_constant(CompLevel_full_optimization) \ |
| 383 | declare_constant(HeapWordSize) \ |
| 384 | declare_constant(InvocationEntryBci) \ |
| 385 | declare_constant(LogKlassAlignmentInBytes) \ |
| 386 | \ |
| 387 | declare_constant(JVM_ACC_WRITTEN_FLAGS) \ |
| 388 | declare_constant(JVM_ACC_MONITOR_MATCH) \ |
| 389 | declare_constant(JVM_ACC_HAS_MONITOR_BYTECODES) \ |
| 390 | declare_constant(JVM_ACC_HAS_FINALIZER) \ |
| 391 | declare_constant(JVM_ACC_IS_CLONEABLE_FAST) \ |
| 392 | declare_constant(JVM_ACC_FIELD_INTERNAL) \ |
| 393 | declare_constant(JVM_ACC_FIELD_STABLE) \ |
| 394 | declare_constant(JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE) \ |
| 395 | declare_preprocessor_constant("JVM_ACC_VARARGS", JVM_ACC_VARARGS) \ |
| 396 | declare_preprocessor_constant("JVM_ACC_BRIDGE", JVM_ACC_BRIDGE) \ |
| 397 | declare_preprocessor_constant("JVM_ACC_ANNOTATION", JVM_ACC_ANNOTATION) \ |
| 398 | declare_preprocessor_constant("JVM_ACC_ENUM", JVM_ACC_ENUM) \ |
| 399 | declare_preprocessor_constant("JVM_ACC_SYNTHETIC", JVM_ACC_SYNTHETIC) \ |
| 400 | declare_preprocessor_constant("JVM_ACC_INTERFACE", JVM_ACC_INTERFACE) \ |
| 401 | \ |
| 402 | declare_constant(JVM_CONSTANT_Utf8) \ |
| 403 | declare_constant(JVM_CONSTANT_Unicode) \ |
| 404 | declare_constant(JVM_CONSTANT_Integer) \ |
| 405 | declare_constant(JVM_CONSTANT_Float) \ |
| 406 | declare_constant(JVM_CONSTANT_Long) \ |
| 407 | declare_constant(JVM_CONSTANT_Double) \ |
| 408 | declare_constant(JVM_CONSTANT_Class) \ |
| 409 | declare_constant(JVM_CONSTANT_String) \ |
| 410 | declare_constant(JVM_CONSTANT_Fieldref) \ |
| 411 | declare_constant(JVM_CONSTANT_Methodref) \ |
| 412 | declare_constant(JVM_CONSTANT_InterfaceMethodref) \ |
| 413 | declare_constant(JVM_CONSTANT_NameAndType) \ |
| 414 | declare_constant(JVM_CONSTANT_MethodHandle) \ |
| 415 | declare_constant(JVM_CONSTANT_MethodType) \ |
| 416 | declare_constant(JVM_CONSTANT_InvokeDynamic) \ |
| 417 | declare_constant(JVM_CONSTANT_Module) \ |
| 418 | declare_constant(JVM_CONSTANT_Package) \ |
| 419 | declare_constant(JVM_CONSTANT_ExternalMax) \ |
| 420 | \ |
| 421 | declare_constant(JVM_CONSTANT_Invalid) \ |
| 422 | declare_constant(JVM_CONSTANT_InternalMin) \ |
| 423 | declare_constant(JVM_CONSTANT_UnresolvedClass) \ |
| 424 | declare_constant(JVM_CONSTANT_ClassIndex) \ |
| 425 | declare_constant(JVM_CONSTANT_StringIndex) \ |
| 426 | declare_constant(JVM_CONSTANT_UnresolvedClassInError) \ |
| 427 | declare_constant(JVM_CONSTANT_MethodHandleInError) \ |
| 428 | declare_constant(JVM_CONSTANT_MethodTypeInError) \ |
| 429 | declare_constant(JVM_CONSTANT_DynamicInError) \ |
| 430 | declare_constant(JVM_CONSTANT_InternalMax) \ |
| 431 | \ |
| 432 | declare_constant(ArrayData::array_len_off_set) \ |
| 433 | declare_constant(ArrayData::array_start_off_set) \ |
| 434 | \ |
| 435 | declare_constant(BitData::exception_seen_flag) \ |
| 436 | declare_constant(BitData::null_seen_flag) \ |
| 437 | declare_constant(BranchData::not_taken_off_set) \ |
| 438 | \ |
| 439 | declare_constant_with_value("CardTable::dirty_card", CardTable::dirty_card_val()) \ |
| 440 | \ |
| 441 | declare_constant(CodeInstaller::VERIFIED_ENTRY) \ |
| 442 | declare_constant(CodeInstaller::UNVERIFIED_ENTRY) \ |
| 443 | declare_constant(CodeInstaller::OSR_ENTRY) \ |
| 444 | declare_constant(CodeInstaller::EXCEPTION_HANDLER_ENTRY) \ |
| 445 | declare_constant(CodeInstaller::DEOPT_HANDLER_ENTRY) \ |
| 446 | declare_constant(CodeInstaller::INVOKEINTERFACE) \ |
| 447 | declare_constant(CodeInstaller::INVOKEVIRTUAL) \ |
| 448 | declare_constant(CodeInstaller::INVOKESTATIC) \ |
| 449 | declare_constant(CodeInstaller::INVOKESPECIAL) \ |
| 450 | declare_constant(CodeInstaller::INLINE_INVOKE) \ |
| 451 | declare_constant(CodeInstaller::POLL_NEAR) \ |
| 452 | declare_constant(CodeInstaller::POLL_RETURN_NEAR) \ |
| 453 | declare_constant(CodeInstaller::POLL_FAR) \ |
| 454 | declare_constant(CodeInstaller::POLL_RETURN_FAR) \ |
| 455 | declare_constant(CodeInstaller::CARD_TABLE_SHIFT) \ |
| 456 | declare_constant(CodeInstaller::CARD_TABLE_ADDRESS) \ |
| 457 | declare_constant(CodeInstaller::HEAP_TOP_ADDRESS) \ |
| 458 | declare_constant(CodeInstaller::HEAP_END_ADDRESS) \ |
| 459 | declare_constant(CodeInstaller::NARROW_KLASS_BASE_ADDRESS) \ |
| 460 | declare_constant(CodeInstaller::NARROW_OOP_BASE_ADDRESS) \ |
| 461 | declare_constant(CodeInstaller::CRC_TABLE_ADDRESS) \ |
| 462 | declare_constant(CodeInstaller::LOG_OF_HEAP_REGION_GRAIN_BYTES) \ |
| 463 | declare_constant(CodeInstaller::INLINE_CONTIGUOUS_ALLOCATION_SUPPORTED) \ |
| 464 | declare_constant(CodeInstaller::INVOKE_INVALID) \ |
| 465 | \ |
| 466 | declare_constant(ConstantPool::CPCACHE_INDEX_TAG) \ |
| 467 | declare_constant(ConstantPool::_has_dynamic_constant) \ |
| 468 | \ |
| 469 | declare_constant(ConstMethod::_has_linenumber_table) \ |
| 470 | declare_constant(ConstMethod::_has_localvariable_table) \ |
| 471 | declare_constant(ConstMethod::_has_exception_table) \ |
| 472 | declare_constant(ConstMethod::_has_method_annotations) \ |
| 473 | declare_constant(ConstMethod::_has_parameter_annotations) \ |
| 474 | \ |
| 475 | declare_constant(CounterData::count_off) \ |
| 476 | \ |
| 477 | declare_constant(DataLayout::cell_size) \ |
| 478 | declare_constant(DataLayout::no_tag) \ |
| 479 | declare_constant(DataLayout::bit_data_tag) \ |
| 480 | declare_constant(DataLayout::counter_data_tag) \ |
| 481 | declare_constant(DataLayout::jump_data_tag) \ |
| 482 | declare_constant(DataLayout::receiver_type_data_tag) \ |
| 483 | declare_constant(DataLayout::virtual_call_data_tag) \ |
| 484 | declare_constant(DataLayout::ret_data_tag) \ |
| 485 | declare_constant(DataLayout::branch_data_tag) \ |
| 486 | declare_constant(DataLayout::multi_branch_data_tag) \ |
| 487 | declare_constant(DataLayout::arg_info_data_tag) \ |
| 488 | declare_constant(DataLayout::call_type_data_tag) \ |
| 489 | declare_constant(DataLayout::virtual_call_type_data_tag) \ |
| 490 | declare_constant(DataLayout::parameters_type_data_tag) \ |
| 491 | declare_constant(DataLayout::speculative_trap_data_tag) \ |
| 492 | \ |
| 493 | declare_constant(Deoptimization::Unpack_deopt) \ |
| 494 | declare_constant(Deoptimization::Unpack_exception) \ |
| 495 | declare_constant(Deoptimization::Unpack_uncommon_trap) \ |
| 496 | declare_constant(Deoptimization::Unpack_reexecute) \ |
| 497 | \ |
| 498 | declare_constant(Deoptimization::_action_bits) \ |
| 499 | declare_constant(Deoptimization::_reason_bits) \ |
| 500 | declare_constant(Deoptimization::_debug_id_bits) \ |
| 501 | declare_constant(Deoptimization::_action_shift) \ |
| 502 | declare_constant(Deoptimization::_reason_shift) \ |
| 503 | declare_constant(Deoptimization::_debug_id_shift) \ |
| 504 | \ |
| 505 | declare_constant(Deoptimization::Action_none) \ |
| 506 | declare_constant(Deoptimization::Action_maybe_recompile) \ |
| 507 | declare_constant(Deoptimization::Action_reinterpret) \ |
| 508 | declare_constant(Deoptimization::Action_make_not_entrant) \ |
| 509 | declare_constant(Deoptimization::Action_make_not_compilable) \ |
| 510 | \ |
| 511 | declare_constant(Deoptimization::Reason_none) \ |
| 512 | declare_constant(Deoptimization::Reason_null_check) \ |
| 513 | declare_constant(Deoptimization::Reason_range_check) \ |
| 514 | declare_constant(Deoptimization::Reason_class_check) \ |
| 515 | declare_constant(Deoptimization::Reason_array_check) \ |
| 516 | declare_constant(Deoptimization::Reason_unreached0) \ |
| 517 | declare_constant(Deoptimization::Reason_constraint) \ |
| 518 | declare_constant(Deoptimization::Reason_div0_check) \ |
| 519 | declare_constant(Deoptimization::Reason_loop_limit_check) \ |
| 520 | declare_constant(Deoptimization::Reason_type_checked_inlining) \ |
| 521 | declare_constant(Deoptimization::Reason_optimized_type_check) \ |
| 522 | declare_constant(Deoptimization::Reason_aliasing) \ |
| 523 | declare_constant(Deoptimization::Reason_transfer_to_interpreter) \ |
| 524 | declare_constant(Deoptimization::Reason_not_compiled_exception_handler) \ |
| 525 | declare_constant(Deoptimization::Reason_unresolved) \ |
| 526 | declare_constant(Deoptimization::Reason_jsr_mismatch) \ |
| 527 | declare_constant(Deoptimization::Reason_LIMIT) \ |
| 528 | \ |
| 529 | declare_constant(FieldInfo::access_flags_offset) \ |
| 530 | declare_constant(FieldInfo::name_index_offset) \ |
| 531 | declare_constant(FieldInfo::signature_index_offset) \ |
| 532 | declare_constant(FieldInfo::initval_index_offset) \ |
| 533 | declare_constant(FieldInfo::low_packed_offset) \ |
| 534 | declare_constant(FieldInfo::high_packed_offset) \ |
| 535 | declare_constant(FieldInfo::field_slots) \ |
| 536 | \ |
| 537 | declare_constant(InstanceKlass::linked) \ |
| 538 | declare_constant(InstanceKlass::fully_initialized) \ |
| 539 | declare_constant(InstanceKlass::_misc_is_unsafe_anonymous) \ |
| 540 | \ |
| 541 | declare_constant(JumpData::taken_off_set) \ |
| 542 | declare_constant(JumpData::displacement_off_set) \ |
| 543 | \ |
| 544 | declare_preprocessor_constant("JVMCIEnv::ok", JVMCI::ok) \ |
| 545 | declare_preprocessor_constant("JVMCIEnv::dependencies_failed", JVMCI::dependencies_failed) \ |
| 546 | declare_preprocessor_constant("JVMCIEnv::dependencies_invalid", JVMCI::dependencies_invalid) \ |
| 547 | declare_preprocessor_constant("JVMCIEnv::cache_full", JVMCI::cache_full) \ |
| 548 | declare_preprocessor_constant("JVMCIEnv::code_too_large", JVMCI::code_too_large) \ |
| 549 | declare_constant(JVMCIRuntime::none) \ |
| 550 | declare_constant(JVMCIRuntime::by_holder) \ |
| 551 | declare_constant(JVMCIRuntime::by_full_signature) \ |
| 552 | \ |
| 553 | declare_constant(Klass::_lh_neutral_value) \ |
| 554 | declare_constant(Klass::_lh_instance_slow_path_bit) \ |
| 555 | declare_constant(Klass::_lh_log2_element_size_shift) \ |
| 556 | declare_constant(Klass::_lh_log2_element_size_mask) \ |
| 557 | declare_constant(Klass::_lh_element_type_shift) \ |
| 558 | declare_constant(Klass::_lh_element_type_mask) \ |
| 559 | declare_constant(Klass::_lh_header_size_shift) \ |
| 560 | declare_constant(Klass::_lh_header_size_mask) \ |
| 561 | declare_constant(Klass::_lh_array_tag_shift) \ |
| 562 | declare_constant(Klass::_lh_array_tag_type_value) \ |
| 563 | declare_constant(Klass::_lh_array_tag_obj_value) \ |
| 564 | \ |
| 565 | declare_constant(markOopDesc::no_hash) \ |
| 566 | \ |
| 567 | declare_constant(Method::_caller_sensitive) \ |
| 568 | declare_constant(Method::_force_inline) \ |
| 569 | declare_constant(Method::_dont_inline) \ |
| 570 | declare_constant(Method::_hidden) \ |
| 571 | declare_constant(Method::_intrinsic_candidate) \ |
| 572 | declare_constant(Method::_reserved_stack_access) \ |
| 573 | \ |
| 574 | declare_constant(Method::nonvirtual_vtable_index) \ |
| 575 | declare_constant(Method::invalid_vtable_index) \ |
| 576 | \ |
| 577 | declare_constant(MultiBranchData::per_case_cell_count) \ |
| 578 | \ |
| 579 | declare_constant(ReceiverTypeData::nonprofiled_count_off_set) \ |
| 580 | declare_constant(ReceiverTypeData::receiver_type_row_cell_count) \ |
| 581 | declare_constant(ReceiverTypeData::receiver0_offset) \ |
| 582 | declare_constant(ReceiverTypeData::count0_offset) \ |
| 583 | \ |
| 584 | declare_constant(vmIntrinsics::_invokeBasic) \ |
| 585 | declare_constant(vmIntrinsics::_linkToVirtual) \ |
| 586 | declare_constant(vmIntrinsics::_linkToStatic) \ |
| 587 | declare_constant(vmIntrinsics::_linkToSpecial) \ |
| 588 | declare_constant(vmIntrinsics::_linkToInterface) \ |
| 589 | \ |
| 590 | declare_constant(vmSymbols::FIRST_SID) \ |
| 591 | declare_constant(vmSymbols::SID_LIMIT) \ |
| 592 | |
| 593 | #define VM_LONG_CONSTANTS(declare_constant, declare_preprocessor_constant) \ |
| 594 | declare_constant(InvocationCounter::count_increment) \ |
| 595 | declare_constant(InvocationCounter::count_shift) \ |
| 596 | \ |
| 597 | declare_constant(markOopDesc::hash_shift) \ |
| 598 | \ |
| 599 | declare_constant(markOopDesc::biased_lock_mask_in_place) \ |
| 600 | declare_constant(markOopDesc::age_mask_in_place) \ |
| 601 | declare_constant(markOopDesc::epoch_mask_in_place) \ |
| 602 | declare_constant(markOopDesc::hash_mask) \ |
| 603 | declare_constant(markOopDesc::hash_mask_in_place) \ |
| 604 | \ |
| 605 | declare_constant(markOopDesc::unlocked_value) \ |
| 606 | declare_constant(markOopDesc::biased_lock_pattern) \ |
| 607 | \ |
| 608 | declare_constant(markOopDesc::no_hash_in_place) \ |
| 609 | declare_constant(markOopDesc::no_lock_in_place) \ |
| 610 | |
| 611 | #define VM_ADDRESSES(declare_address, declare_preprocessor_address, declare_function) \ |
| 612 | declare_function(SharedRuntime::register_finalizer) \ |
| 613 | declare_function(SharedRuntime::exception_handler_for_return_address) \ |
| 614 | declare_function(SharedRuntime::OSR_migration_end) \ |
| 615 | declare_function(SharedRuntime::enable_stack_reserved_zone) \ |
| 616 | declare_function(SharedRuntime::frem) \ |
| 617 | declare_function(SharedRuntime::drem) \ |
| 618 | \ |
| 619 | declare_function(os::dll_load) \ |
| 620 | declare_function(os::dll_lookup) \ |
| 621 | declare_function(os::javaTimeMillis) \ |
| 622 | declare_function(os::javaTimeNanos) \ |
| 623 | \ |
| 624 | declare_function(Deoptimization::fetch_unroll_info) \ |
| 625 | declare_function(Deoptimization::uncommon_trap) \ |
| 626 | declare_function(Deoptimization::unpack_frames) \ |
| 627 | \ |
| 628 | declare_function(JVMCIRuntime::new_instance) \ |
| 629 | declare_function(JVMCIRuntime::new_array) \ |
| 630 | declare_function(JVMCIRuntime::new_multi_array) \ |
| 631 | declare_function(JVMCIRuntime::dynamic_new_array) \ |
| 632 | declare_function(JVMCIRuntime::dynamic_new_instance) \ |
| 633 | \ |
| 634 | declare_function(JVMCIRuntime::new_instance_or_null) \ |
| 635 | declare_function(JVMCIRuntime::new_array_or_null) \ |
| 636 | declare_function(JVMCIRuntime::new_multi_array_or_null) \ |
| 637 | declare_function(JVMCIRuntime::dynamic_new_array_or_null) \ |
| 638 | declare_function(JVMCIRuntime::dynamic_new_instance_or_null) \ |
| 639 | \ |
| 640 | declare_function(JVMCIRuntime::thread_is_interrupted) \ |
| 641 | declare_function(JVMCIRuntime::vm_message) \ |
| 642 | declare_function(JVMCIRuntime::identity_hash_code) \ |
| 643 | declare_function(JVMCIRuntime::exception_handler_for_pc) \ |
| 644 | declare_function(JVMCIRuntime::monitorenter) \ |
| 645 | declare_function(JVMCIRuntime::monitorexit) \ |
| 646 | declare_function(JVMCIRuntime::object_notify) \ |
| 647 | declare_function(JVMCIRuntime::object_notifyAll) \ |
| 648 | declare_function(JVMCIRuntime::throw_and_post_jvmti_exception) \ |
| 649 | declare_function(JVMCIRuntime::throw_klass_external_name_exception) \ |
| 650 | declare_function(JVMCIRuntime::throw_class_cast_exception) \ |
| 651 | declare_function(JVMCIRuntime::log_primitive) \ |
| 652 | declare_function(JVMCIRuntime::log_object) \ |
| 653 | declare_function(JVMCIRuntime::log_printf) \ |
| 654 | declare_function(JVMCIRuntime::vm_error) \ |
| 655 | declare_function(JVMCIRuntime::load_and_clear_exception) \ |
| 656 | G1GC_ONLY(declare_function(JVMCIRuntime::write_barrier_pre)) \ |
| 657 | G1GC_ONLY(declare_function(JVMCIRuntime::write_barrier_post)) \ |
| 658 | declare_function(JVMCIRuntime::validate_object) \ |
| 659 | \ |
| 660 | declare_function(JVMCIRuntime::test_deoptimize_call_int) |
| 661 | |
| 662 | |
| 663 | #if INCLUDE_G1GC |
| 664 | |
| 665 | #define VM_STRUCTS_JVMCI_G1GC(nonstatic_field, static_field) \ |
| 666 | static_field(HeapRegion, LogOfHRGrainBytes, int) |
| 667 | |
| 668 | #define VM_INT_CONSTANTS_JVMCI_G1GC(declare_constant, declare_constant_with_value, declare_preprocessor_constant) \ |
| 669 | declare_constant_with_value("G1CardTable::g1_young_gen", G1CardTable::g1_young_card_val()) \ |
| 670 | declare_constant_with_value("G1ThreadLocalData::satb_mark_queue_active_offset", in_bytes(G1ThreadLocalData::satb_mark_queue_active_offset())) \ |
| 671 | declare_constant_with_value("G1ThreadLocalData::satb_mark_queue_index_offset", in_bytes(G1ThreadLocalData::satb_mark_queue_index_offset())) \ |
| 672 | declare_constant_with_value("G1ThreadLocalData::satb_mark_queue_buffer_offset", in_bytes(G1ThreadLocalData::satb_mark_queue_buffer_offset())) \ |
| 673 | declare_constant_with_value("G1ThreadLocalData::dirty_card_queue_index_offset", in_bytes(G1ThreadLocalData::dirty_card_queue_index_offset())) \ |
| 674 | declare_constant_with_value("G1ThreadLocalData::dirty_card_queue_buffer_offset", in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset())) |
| 675 | |
| 676 | #endif // INCLUDE_G1GC |
| 677 | |
| 678 | |
| 679 | #ifdef LINUX |
| 680 | |
| 681 | #define VM_ADDRESSES_OS(declare_address, declare_preprocessor_address, declare_function) \ |
| 682 | declare_preprocessor_address("RTLD_DEFAULT", RTLD_DEFAULT) |
| 683 | |
| 684 | #endif |
| 685 | |
| 686 | |
| 687 | #ifdef BSD |
| 688 | |
| 689 | #define VM_ADDRESSES_OS(declare_address, declare_preprocessor_address, declare_function) \ |
| 690 | declare_preprocessor_address("RTLD_DEFAULT", RTLD_DEFAULT) |
| 691 | |
| 692 | #endif |
| 693 | |
| 694 | // AARCH64 is defined in closed port, too. TARGET_ARCH_aarch64 is not. |
| 695 | #ifdef TARGET_ARCH_aarch64 |
| 696 | |
| 697 | #define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \ |
| 698 | volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*) |
| 699 | |
| 700 | #define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \ |
| 701 | declare_constant(VM_Version::CPU_FP) \ |
| 702 | declare_constant(VM_Version::CPU_ASIMD) \ |
| 703 | declare_constant(VM_Version::CPU_EVTSTRM) \ |
| 704 | declare_constant(VM_Version::CPU_AES) \ |
| 705 | declare_constant(VM_Version::CPU_PMULL) \ |
| 706 | declare_constant(VM_Version::CPU_SHA1) \ |
| 707 | declare_constant(VM_Version::CPU_SHA2) \ |
| 708 | declare_constant(VM_Version::CPU_CRC32) \ |
| 709 | declare_constant(VM_Version::CPU_LSE) \ |
| 710 | declare_constant(VM_Version::CPU_STXR_PREFETCH) \ |
| 711 | declare_constant(VM_Version::CPU_A53MAC) \ |
| 712 | declare_constant(VM_Version::CPU_DMB_ATOMICS) |
| 713 | |
| 714 | #endif |
| 715 | |
| 716 | |
| 717 | #ifdef X86 |
| 718 | |
| 719 | #define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \ |
| 720 | volatile_nonstatic_field(JavaFrameAnchor, _last_Java_fp, intptr_t*) |
| 721 | |
| 722 | #define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \ |
| 723 | LP64_ONLY(declare_constant(frame::arg_reg_save_area_bytes)) \ |
| 724 | declare_constant(frame::interpreter_frame_sender_sp_offset) \ |
| 725 | declare_constant(frame::interpreter_frame_last_sp_offset) \ |
| 726 | declare_constant(VM_Version::CPU_CX8) \ |
| 727 | declare_constant(VM_Version::CPU_CMOV) \ |
| 728 | declare_constant(VM_Version::CPU_FXSR) \ |
| 729 | declare_constant(VM_Version::CPU_HT) \ |
| 730 | declare_constant(VM_Version::CPU_MMX) \ |
| 731 | declare_constant(VM_Version::CPU_3DNOW_PREFETCH) \ |
| 732 | declare_constant(VM_Version::CPU_SSE) \ |
| 733 | declare_constant(VM_Version::CPU_SSE2) \ |
| 734 | declare_constant(VM_Version::CPU_SSE3) \ |
| 735 | declare_constant(VM_Version::CPU_SSSE3) \ |
| 736 | declare_constant(VM_Version::CPU_SSE4A) \ |
| 737 | declare_constant(VM_Version::CPU_SSE4_1) \ |
| 738 | declare_constant(VM_Version::CPU_SSE4_2) \ |
| 739 | declare_constant(VM_Version::CPU_POPCNT) \ |
| 740 | declare_constant(VM_Version::CPU_LZCNT) \ |
| 741 | declare_constant(VM_Version::CPU_TSC) \ |
| 742 | declare_constant(VM_Version::CPU_TSCINV) \ |
| 743 | declare_constant(VM_Version::CPU_AVX) \ |
| 744 | declare_constant(VM_Version::CPU_AVX2) \ |
| 745 | declare_constant(VM_Version::CPU_AES) \ |
| 746 | declare_constant(VM_Version::CPU_ERMS) \ |
| 747 | declare_constant(VM_Version::CPU_CLMUL) \ |
| 748 | declare_constant(VM_Version::CPU_BMI1) \ |
| 749 | declare_constant(VM_Version::CPU_BMI2) \ |
| 750 | declare_constant(VM_Version::CPU_RTM) \ |
| 751 | declare_constant(VM_Version::CPU_ADX) \ |
| 752 | declare_constant(VM_Version::CPU_AVX512F) \ |
| 753 | declare_constant(VM_Version::CPU_AVX512DQ) \ |
| 754 | declare_constant(VM_Version::CPU_AVX512PF) \ |
| 755 | declare_constant(VM_Version::CPU_AVX512ER) \ |
| 756 | declare_constant(VM_Version::CPU_AVX512CD) |
| 757 | |
| 758 | #define VM_LONG_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \ |
| 759 | declare_preprocessor_constant("VM_Version::CPU_AVX512BW", CPU_AVX512BW) \ |
| 760 | declare_preprocessor_constant("VM_Version::CPU_AVX512VL", CPU_AVX512VL) \ |
| 761 | declare_preprocessor_constant("VM_Version::CPU_SHA", CPU_SHA) \ |
| 762 | declare_preprocessor_constant("VM_Version::CPU_FMA", CPU_FMA) \ |
| 763 | declare_preprocessor_constant("VM_Version::CPU_VZEROUPPER", CPU_VZEROUPPER) |
| 764 | |
| 765 | #endif |
| 766 | |
| 767 | |
| 768 | #ifdef SPARC |
| 769 | |
| 770 | #define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) \ |
| 771 | volatile_nonstatic_field(JavaFrameAnchor, _flags, int) |
| 772 | |
| 773 | #define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) \ |
| 774 | declare_constant(VM_Version::ISA_V9) \ |
| 775 | declare_constant(VM_Version::ISA_POPC) \ |
| 776 | declare_constant(VM_Version::ISA_VIS1) \ |
| 777 | declare_constant(VM_Version::ISA_VIS2) \ |
| 778 | declare_constant(VM_Version::ISA_BLK_INIT) \ |
| 779 | declare_constant(VM_Version::ISA_FMAF) \ |
| 780 | declare_constant(VM_Version::ISA_VIS3) \ |
| 781 | declare_constant(VM_Version::ISA_HPC) \ |
| 782 | declare_constant(VM_Version::ISA_IMA) \ |
| 783 | declare_constant(VM_Version::ISA_AES) \ |
| 784 | declare_constant(VM_Version::ISA_DES) \ |
| 785 | declare_constant(VM_Version::ISA_KASUMI) \ |
| 786 | declare_constant(VM_Version::ISA_CAMELLIA) \ |
| 787 | declare_constant(VM_Version::ISA_MD5) \ |
| 788 | declare_constant(VM_Version::ISA_SHA1) \ |
| 789 | declare_constant(VM_Version::ISA_SHA256) \ |
| 790 | declare_constant(VM_Version::ISA_SHA512) \ |
| 791 | declare_constant(VM_Version::ISA_MPMUL) \ |
| 792 | declare_constant(VM_Version::ISA_MONT) \ |
| 793 | declare_constant(VM_Version::ISA_PAUSE) \ |
| 794 | declare_constant(VM_Version::ISA_CBCOND) \ |
| 795 | declare_constant(VM_Version::ISA_CRC32C) \ |
| 796 | declare_constant(VM_Version::ISA_VIS3B) \ |
| 797 | declare_constant(VM_Version::ISA_ADI) \ |
| 798 | declare_constant(VM_Version::ISA_SPARC5) \ |
| 799 | declare_constant(VM_Version::ISA_MWAIT) \ |
| 800 | declare_constant(VM_Version::ISA_XMPMUL) \ |
| 801 | declare_constant(VM_Version::ISA_XMONT) \ |
| 802 | declare_constant(VM_Version::ISA_PAUSE_NSEC) \ |
| 803 | declare_constant(VM_Version::ISA_VAMASK) \ |
| 804 | declare_constant(VM_Version::ISA_SPARC6) \ |
| 805 | declare_constant(VM_Version::ISA_DICTUNP) \ |
| 806 | declare_constant(VM_Version::ISA_FPCMPSHL) \ |
| 807 | declare_constant(VM_Version::ISA_RLE) \ |
| 808 | declare_constant(VM_Version::ISA_SHA3) \ |
| 809 | declare_constant(VM_Version::ISA_VIS3C) \ |
| 810 | declare_constant(VM_Version::ISA_SPARC5B) \ |
| 811 | declare_constant(VM_Version::ISA_MME) \ |
| 812 | declare_constant(VM_Version::CPU_FAST_IDIV) \ |
| 813 | declare_constant(VM_Version::CPU_FAST_RDPC) \ |
| 814 | declare_constant(VM_Version::CPU_FAST_BIS) \ |
| 815 | declare_constant(VM_Version::CPU_FAST_LD) \ |
| 816 | declare_constant(VM_Version::CPU_FAST_CMOVE) \ |
| 817 | declare_constant(VM_Version::CPU_FAST_IND_BR) \ |
| 818 | declare_constant(VM_Version::CPU_BLK_ZEROING) |
| 819 | #endif |
| 820 | |
| 821 | |
| 822 | /* |
| 823 | * Dummy defines for architectures that don't use these. |
| 824 | */ |
| 825 | #ifndef VM_STRUCTS_CPU |
| 826 | #define VM_STRUCTS_CPU(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) |
| 827 | #endif |
| 828 | |
| 829 | #ifndef VM_TYPES_CPU |
| 830 | #define VM_TYPES_CPU(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) |
| 831 | #endif |
| 832 | |
| 833 | #ifndef VM_INT_CONSTANTS_CPU |
| 834 | #define VM_INT_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) |
| 835 | #endif |
| 836 | |
| 837 | #ifndef VM_LONG_CONSTANTS_CPU |
| 838 | #define VM_LONG_CONSTANTS_CPU(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) |
| 839 | #endif |
| 840 | |
| 841 | #ifndef VM_STRUCTS_OS |
| 842 | #define VM_STRUCTS_OS(nonstatic_field, static_field, unchecked_nonstatic_field, volatile_nonstatic_field, nonproduct_nonstatic_field, c2_nonstatic_field, unchecked_c1_static_field, unchecked_c2_static_field) |
| 843 | #endif |
| 844 | |
| 845 | #ifndef VM_TYPES_OS |
| 846 | #define VM_TYPES_OS(declare_type, declare_toplevel_type, declare_oop_type, declare_integer_type, declare_unsigned_integer_type, declare_c1_toplevel_type, declare_c2_type, declare_c2_toplevel_type) |
| 847 | #endif |
| 848 | |
| 849 | #ifndef VM_INT_CONSTANTS_OS |
| 850 | #define VM_INT_CONSTANTS_OS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) |
| 851 | #endif |
| 852 | |
| 853 | #ifndef VM_LONG_CONSTANTS_OS |
| 854 | #define VM_LONG_CONSTANTS_OS(declare_constant, declare_preprocessor_constant, declare_c1_constant, declare_c2_constant, declare_c2_preprocessor_constant) |
| 855 | #endif |
| 856 | |
| 857 | #ifndef VM_ADDRESSES_OS |
| 858 | #define VM_ADDRESSES_OS(declare_address, declare_preprocessor_address, declare_function) |
| 859 | #endif |
| 860 | |
| 861 | |
| 862 | // |
| 863 | // Instantiation of VMStructEntries, VMTypeEntries and VMIntConstantEntries |
| 864 | // |
| 865 | |
| 866 | // These initializers are allowed to access private fields in classes |
| 867 | // as long as class VMStructs is a friend |
| 868 | VMStructEntry JVMCIVMStructs::localHotSpotVMStructs[] = { |
| 869 | VM_STRUCTS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 870 | GENERATE_STATIC_VM_STRUCT_ENTRY, |
| 871 | GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, |
| 872 | GENERATE_NONSTATIC_VM_STRUCT_ENTRY) |
| 873 | |
| 874 | VM_STRUCTS_OS(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 875 | GENERATE_STATIC_VM_STRUCT_ENTRY, |
| 876 | GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, |
| 877 | GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 878 | GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, |
| 879 | GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, |
| 880 | GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, |
| 881 | GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY) |
| 882 | |
| 883 | VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 884 | GENERATE_STATIC_VM_STRUCT_ENTRY, |
| 885 | GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY, |
| 886 | GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 887 | GENERATE_NONPRODUCT_NONSTATIC_VM_STRUCT_ENTRY, |
| 888 | GENERATE_C2_NONSTATIC_VM_STRUCT_ENTRY, |
| 889 | GENERATE_C1_UNCHECKED_STATIC_VM_STRUCT_ENTRY, |
| 890 | GENERATE_C2_UNCHECKED_STATIC_VM_STRUCT_ENTRY) |
| 891 | |
| 892 | #if INCLUDE_G1GC |
| 893 | VM_STRUCTS_JVMCI_G1GC(GENERATE_NONSTATIC_VM_STRUCT_ENTRY, |
| 894 | GENERATE_STATIC_VM_STRUCT_ENTRY) |
| 895 | #endif |
| 896 | |
| 897 | GENERATE_VM_STRUCT_LAST_ENTRY() |
| 898 | }; |
| 899 | |
| 900 | VMTypeEntry JVMCIVMStructs::localHotSpotVMTypes[] = { |
| 901 | VM_TYPES(GENERATE_VM_TYPE_ENTRY, |
| 902 | GENERATE_TOPLEVEL_VM_TYPE_ENTRY, |
| 903 | GENERATE_INTEGER_VM_TYPE_ENTRY, |
| 904 | GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY) |
| 905 | |
| 906 | VM_TYPES_OS(GENERATE_VM_TYPE_ENTRY, |
| 907 | GENERATE_TOPLEVEL_VM_TYPE_ENTRY, |
| 908 | GENERATE_OOP_VM_TYPE_ENTRY, |
| 909 | GENERATE_INTEGER_VM_TYPE_ENTRY, |
| 910 | GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, |
| 911 | GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, |
| 912 | GENERATE_C2_VM_TYPE_ENTRY, |
| 913 | GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY) |
| 914 | |
| 915 | VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY, |
| 916 | GENERATE_TOPLEVEL_VM_TYPE_ENTRY, |
| 917 | GENERATE_OOP_VM_TYPE_ENTRY, |
| 918 | GENERATE_INTEGER_VM_TYPE_ENTRY, |
| 919 | GENERATE_UNSIGNED_INTEGER_VM_TYPE_ENTRY, |
| 920 | GENERATE_C1_TOPLEVEL_VM_TYPE_ENTRY, |
| 921 | GENERATE_C2_VM_TYPE_ENTRY, |
| 922 | GENERATE_C2_TOPLEVEL_VM_TYPE_ENTRY) |
| 923 | |
| 924 | GENERATE_VM_TYPE_LAST_ENTRY() |
| 925 | }; |
| 926 | |
| 927 | VMIntConstantEntry JVMCIVMStructs::localHotSpotVMIntConstants[] = { |
| 928 | VM_INT_CONSTANTS(GENERATE_VM_INT_CONSTANT_ENTRY, |
| 929 | GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY, |
| 930 | GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) |
| 931 | |
| 932 | VM_INT_CONSTANTS_OS(GENERATE_VM_INT_CONSTANT_ENTRY, |
| 933 | GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, |
| 934 | GENERATE_C1_VM_INT_CONSTANT_ENTRY, |
| 935 | GENERATE_C2_VM_INT_CONSTANT_ENTRY, |
| 936 | GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) |
| 937 | |
| 938 | VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY, |
| 939 | GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, |
| 940 | GENERATE_C1_VM_INT_CONSTANT_ENTRY, |
| 941 | GENERATE_C2_VM_INT_CONSTANT_ENTRY, |
| 942 | GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) |
| 943 | |
| 944 | #if INCLUDE_G1GC |
| 945 | VM_INT_CONSTANTS_JVMCI_G1GC(GENERATE_VM_INT_CONSTANT_ENTRY, |
| 946 | GENERATE_VM_INT_CONSTANT_WITH_VALUE_ENTRY, |
| 947 | GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) |
| 948 | #endif |
| 949 | |
| 950 | GENERATE_VM_INT_CONSTANT_LAST_ENTRY() |
| 951 | }; |
| 952 | |
| 953 | VMLongConstantEntry JVMCIVMStructs::localHotSpotVMLongConstants[] = { |
| 954 | VM_LONG_CONSTANTS(GENERATE_VM_LONG_CONSTANT_ENTRY, |
| 955 | GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) |
| 956 | |
| 957 | VM_LONG_CONSTANTS_OS(GENERATE_VM_LONG_CONSTANT_ENTRY, |
| 958 | GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, |
| 959 | GENERATE_C1_VM_LONG_CONSTANT_ENTRY, |
| 960 | GENERATE_C2_VM_LONG_CONSTANT_ENTRY, |
| 961 | GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) |
| 962 | |
| 963 | VM_LONG_CONSTANTS_CPU(GENERATE_VM_LONG_CONSTANT_ENTRY, |
| 964 | GENERATE_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY, |
| 965 | GENERATE_C1_VM_LONG_CONSTANT_ENTRY, |
| 966 | GENERATE_C2_VM_LONG_CONSTANT_ENTRY, |
| 967 | GENERATE_C2_PREPROCESSOR_VM_LONG_CONSTANT_ENTRY) |
| 968 | |
| 969 | GENERATE_VM_LONG_CONSTANT_LAST_ENTRY() |
| 970 | }; |
| 971 | |
| 972 | VMAddressEntry JVMCIVMStructs::localHotSpotVMAddresses[] = { |
| 973 | VM_ADDRESSES(GENERATE_VM_ADDRESS_ENTRY, |
| 974 | GENERATE_PREPROCESSOR_VM_ADDRESS_ENTRY, |
| 975 | GENERATE_VM_FUNCTION_ENTRY) |
| 976 | VM_ADDRESSES_COMPILER_RUNTIME(GENERATE_VM_ADDRESS_ENTRY, |
| 977 | GENERATE_PREPROCESSOR_VM_ADDRESS_ENTRY, |
| 978 | GENERATE_VM_FUNCTION_ENTRY) |
| 979 | VM_ADDRESSES_OS(GENERATE_VM_ADDRESS_ENTRY, |
| 980 | GENERATE_PREPROCESSOR_VM_ADDRESS_ENTRY, |
| 981 | GENERATE_VM_FUNCTION_ENTRY) |
| 982 | |
| 983 | GENERATE_VM_ADDRESS_LAST_ENTRY() |
| 984 | }; |
| 985 | |
| 986 | int JVMCIVMStructs::localHotSpotVMStructs_count() { |
| 987 | // Ignore sentinel entry at the end |
| 988 | return (sizeof(localHotSpotVMStructs) / sizeof(VMStructEntry)) - 1; |
| 989 | } |
| 990 | int JVMCIVMStructs::localHotSpotVMTypes_count() { |
| 991 | // Ignore sentinel entry at the end |
| 992 | return (sizeof(localHotSpotVMTypes) / sizeof(VMTypeEntry)) - 1; |
| 993 | } |
| 994 | int JVMCIVMStructs::localHotSpotVMIntConstants_count() { |
| 995 | // Ignore sentinel entry at the end |
| 996 | return (sizeof(localHotSpotVMIntConstants) / sizeof(VMIntConstantEntry)) - 1; |
| 997 | } |
| 998 | int JVMCIVMStructs::localHotSpotVMLongConstants_count() { |
| 999 | // Ignore sentinel entry at the end |
| 1000 | return (sizeof(localHotSpotVMLongConstants) / sizeof(VMLongConstantEntry)) - 1; |
| 1001 | } |
| 1002 | int JVMCIVMStructs::localHotSpotVMAddresses_count() { |
| 1003 | // Ignore sentinel entry at the end |
| 1004 | return (sizeof(localHotSpotVMAddresses) / sizeof(VMAddressEntry)) - 1; |
| 1005 | } |
| 1006 | |
| 1007 | extern "C" { |
| 1008 | JNIEXPORT VMStructEntry* jvmciHotSpotVMStructs = JVMCIVMStructs::localHotSpotVMStructs; |
| 1009 | JNIEXPORT VMTypeEntry* jvmciHotSpotVMTypes = JVMCIVMStructs::localHotSpotVMTypes; |
| 1010 | JNIEXPORT VMIntConstantEntry* jvmciHotSpotVMIntConstants = JVMCIVMStructs::localHotSpotVMIntConstants; |
| 1011 | JNIEXPORT VMLongConstantEntry* jvmciHotSpotVMLongConstants = JVMCIVMStructs::localHotSpotVMLongConstants; |
| 1012 | JNIEXPORT VMAddressEntry* jvmciHotSpotVMAddresses = JVMCIVMStructs::localHotSpotVMAddresses; |
| 1013 | } |
| 1014 | |