< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java
Print this page
rev 56282 : [mq]: graal
@@ -52,10 +52,11 @@
assert check();
}
private final CompressEncoding oopEncoding;
private final CompressEncoding klassEncoding;
+ private final String markWord = versioned.markWordFieldType;
public CompressEncoding getOopEncoding() {
return oopEncoding;
}
@@ -206,50 +207,22 @@
public final int stackReservedPages = getFlag("StackReservedPages", Integer.class, 0);
public final boolean useStackBanging = getFlag("UseStackBanging", Boolean.class);
public final int stackBias = getConstant("STACK_BIAS", Integer.class);
public final int vmPageSize = getFieldValue("CompilerToVM::Data::vm_page_size", Integer.class, "int");
- public final int markOffset = getFieldOffset("oopDesc::_mark", Integer.class, "markWord");
+ public final int markOffset = getFieldOffset("oopDesc::_mark", Integer.class, markWord);
public final int hubOffset = getFieldOffset("oopDesc::_metadata._klass", Integer.class, "Klass*");
- public final int prototypeMarkWordOffset = getFieldOffset("Klass::_prototype_header", Integer.class, "markWord");
+ public final int prototypeMarkWordOffset = getFieldOffset("Klass::_prototype_header", Integer.class, markWord);
public final int subklassOffset = getFieldOffset("Klass::_subklass", Integer.class, "Klass*");
public final int nextSiblingOffset = getFieldOffset("Klass::_next_sibling", Integer.class, "Klass*");
public final int superCheckOffsetOffset = getFieldOffset("Klass::_super_check_offset", Integer.class, "juint");
public final int secondarySuperCacheOffset = getFieldOffset("Klass::_secondary_super_cache", Integer.class, "Klass*");
public final int secondarySupersOffset = getFieldOffset("Klass::_secondary_supers", Integer.class, "Array<Klass*>*");
- public final boolean classMirrorIsHandle;
- public final int classMirrorOffset;
- {
- String name = "Klass::_java_mirror";
- int offset = -1;
- boolean isHandle = false;
- try {
- offset = getFieldOffset(name, Integer.class, "oop");
- } catch (JVMCIError e) {
-
- }
- if (offset == -1) {
- try {
- offset = getFieldOffset(name, Integer.class, "jobject");
- isHandle = true;
- } catch (JVMCIError e) {
- try {
- // JDK-8186777
- offset = getFieldOffset(name, Integer.class, "OopHandle");
- isHandle = true;
- } catch (JVMCIError e2) {
- }
- }
- }
- if (offset == -1) {
- throw new JVMCIError("cannot get offset of field " + name + " with type oop, jobject or OopHandle");
- }
- classMirrorOffset = offset;
- classMirrorIsHandle = isHandle;
- }
+ public final boolean classMirrorIsHandle = versioned.classMirrorIsHandle;
+ public final int classMirrorOffset = versioned.classMirrorOffset;
public final int klassSuperKlassOffset = getFieldOffset("Klass::_super", Integer.class, "Klass*");
public final int klassModifierFlagsOffset = getFieldOffset("Klass::_modifier_flags", Integer.class, "jint");
public final int klassAccessFlagsOffset = getFieldOffset("Klass::_access_flags", Integer.class, "AccessFlags");
public final int klassLayoutHelperOffset = getFieldOffset("Klass::_layout_helper", Integer.class, "jint");
@@ -274,16 +247,18 @@
public final int vtableEntrySize = getFieldValue("CompilerToVM::Data::sizeof_vtableEntry", Integer.class, "int");
public final int vtableEntryMethodOffset = getFieldOffset("vtableEntry::_method", Integer.class, "Method*");
public final int instanceKlassInitStateOffset = getFieldOffset("InstanceKlass::_init_state", Integer.class, "u1");
+ public final int instanceKlassInitThreadOffset = getFieldOffset("InstanceKlass::_init_thread", Integer.class, "Thread*", -1);
public final int instanceKlassConstantsOffset = getFieldOffset("InstanceKlass::_constants", Integer.class, "ConstantPool*");
public final int instanceKlassFieldsOffset = getFieldOffset("InstanceKlass::_fields", Integer.class, "Array<u2>*");
public final int klassVtableStartOffset = getFieldValue("CompilerToVM::Data::Klass_vtable_start_offset", Integer.class, "int");
public final int klassVtableLengthOffset = getFieldValue("CompilerToVM::Data::Klass_vtable_length_offset", Integer.class, "int");
public final int instanceKlassStateLinked = getConstant("InstanceKlass::linked", Integer.class);
+ public final int instanceKlassStateBeingInitialized = getConstant("InstanceKlass::being_initialized", Integer.class, -1);
public final int instanceKlassStateFullyInitialized = getConstant("InstanceKlass::fully_initialized", Integer.class);
public final int arrayOopDescSize = getFieldValue("CompilerToVM::Data::sizeof_arrayOopDesc", Integer.class, "int");
/**
@@ -443,57 +418,61 @@
public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);
public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, intRequiredOnAMD64);
public final int osThreadInterruptedOffset = getFieldOffset("OSThread::_interrupted", Integer.class, "jint");
- public final long markWordHashShift = getConstant("markWord::hash_shift", Long.class);
+ public final long markWordHashShift = getConstant(markWordField("hash_shift"), Long.class);
- public final int biasedLockMaskInPlace = getConstant("markWord::biased_lock_mask_in_place", Integer.class);
- public final int ageMaskInPlace = getConstant("markWord::age_mask_in_place", Integer.class);
- public final int epochMaskInPlace = getConstant("markWord::epoch_mask_in_place", Integer.class);
- public final long markWordHashMask = getConstant("markWord::hash_mask", Long.class);
- public final long markWordHashMaskInPlace = getConstant("markWord::hash_mask_in_place", Long.class);
-
- public final int unlockedMask = getConstant("markWord::unlocked_value", Integer.class);
- public final int monitorMask = getConstant("markWord::monitor_value", Integer.class, -1);
- public final int biasedLockPattern = getConstant("markWord::biased_lock_pattern", Integer.class);
+ public final int biasedLockMaskInPlace = getConstant(markWordField("biased_lock_mask_in_place"), Integer.class);
+ public final int ageMaskInPlace = getConstant(markWordField("age_mask_in_place"), Integer.class);
+ public final int epochMaskInPlace = getConstant(markWordField("epoch_mask_in_place"), Integer.class);
+ public final long markWordHashMask = getConstant(markWordField("hash_mask"), Long.class);
+ public final long markWordHashMaskInPlace = getConstant(markWordField("hash_mask_in_place"), Long.class);
+
+ public final int unlockedMask = getConstant(markWordField("unlocked_value"), Integer.class);
+ public final int monitorMask = getConstant(markWordField("monitor_value"), Integer.class, -1);
+ public final int biasedLockPattern = getConstant(markWordField("biased_lock_pattern"), Integer.class);
// This field has no type in vmStructs.cpp
public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null, -1);
public final int objectMonitorRecursions = getFieldOffset("ObjectMonitor::_recursions", Integer.class, "intptr_t", -1);
public final int objectMonitorCxq = getFieldOffset("ObjectMonitor::_cxq", Integer.class, "ObjectWaiter*", -1);
public final int objectMonitorEntryList = getFieldOffset("ObjectMonitor::_EntryList", Integer.class, "ObjectWaiter*", -1);
public final int objectMonitorSucc = getFieldOffset("ObjectMonitor::_succ", Integer.class, "Thread*", -1);
- public final int markWordNoHashInPlace = getConstant("markWord::no_hash_in_place", Integer.class);
- public final int markWordNoLockInPlace = getConstant("markWord::no_lock_in_place", Integer.class);
+ public final int markWordNoHashInPlace = getConstant(markWordField("no_hash_in_place"), Integer.class);
+ public final int markWordNoLockInPlace = getConstant(markWordField("no_lock_in_place"), Integer.class);
/**
- * See {@code markWord::prototype()}.
+ * See {@code markOopDesc::prototype()}/{@code markWord::prototype()}.
*/
public long arrayPrototypeMarkWord() {
return markWordNoHashInPlace | markWordNoLockInPlace;
}
/**
- * See {@code markWord::copy_set_hash()}.
+ * See {@code markOopDesc::copy_set_hash()}/{@code markWord::copy_set_hash()}.
*/
public long tlabIntArrayMarkWord() {
long tmp = arrayPrototypeMarkWord() & (~markWordHashMaskInPlace);
tmp |= ((0x2 & markWordHashMask) << markWordHashShift);
return tmp;
}
+ private String markWordField(String simpleName) {
+ return versioned.markWordClassName + "::" + simpleName;
+ }
+
/**
* Mark word right shift to get identity hash code.
*/
- public final int identityHashCodeShift = getConstant("markWord::hash_shift", Integer.class);
+ public final int identityHashCodeShift = getConstant(markWordField("hash_shift"), Integer.class);
/**
* Identity hash code value when uninitialized.
*/
- public final int uninitializedIdentityHashCodeValue = getConstant("markWord::no_hash", Integer.class);
+ public final int uninitializedIdentityHashCodeValue = getConstant(markWordField("no_hash"), Integer.class);
public final int methodAccessFlagsOffset = getFieldOffset("Method::_access_flags", Integer.class, "AccessFlags");
public final int methodConstMethodOffset = getFieldOffset("Method::_constMethod", Integer.class, "ConstMethod*");
public final int methodIntrinsicIdOffset = versioned.methodIntrinsicIdOffset;
public final int methodFlagsOffset = versioned.methodFlagsOffset;
@@ -563,11 +542,11 @@
public final int klassOffset = getFieldValue("java_lang_Class::_klass_offset", Integer.class, "int");
public final int arrayKlassOffset = getFieldValue("java_lang_Class::_array_klass_offset", Integer.class, "int");
public final int basicLockSize = getFieldValue("CompilerToVM::Data::sizeof_BasicLock", Integer.class, "int");
- public final int basicLockDisplacedHeaderOffset = getFieldOffset("BasicLock::_displaced_header", Integer.class, "markWord");
+ public final int basicLockDisplacedHeaderOffset = getFieldOffset("BasicLock::_displaced_header", Integer.class, markWord);
public final int threadPollingPageOffset = getFieldOffset("Thread::_polling_page", Integer.class, "address", -1);
public final int threadAllocatedBytesOffset = getFieldOffset("Thread::_allocated_bytes", Integer.class, "jlong");
public final int tlabRefillWasteIncrement = getFlag("TLABWasteIncrement", Integer.class);
@@ -620,10 +599,16 @@
public final int tlabAlignmentReserve = getFieldValue("CompilerToVM::Data::ThreadLocalAllocBuffer_alignment_reserve", Integer.class, "size_t");
public final boolean tlabStats = getFlag("TLABStats", Boolean.class);
+ // We set 0x10 as default value to disable DC ZVA if this field is not present in HotSpot.
+ // ARMv8-A architecture reference manual D12.2.35 Data Cache Zero ID register says:
+ // * BS, bits [3:0] indicate log2 of the DC ZVA block size in (4-byte) words.
+ // * DZP, bit [4] of indicates whether use of DC ZVA instruction is prohibited.
+ public final int psrInfoDczidValue = getFieldValue("VM_Version::_psr_info.dczid_el0", Integer.class, "uint32_t", 0x10);
+
// FIXME This is only temporary until the GC code is changed.
public final boolean inlineContiguousAllocationSupported = getFieldValue("CompilerToVM::Data::_supports_inline_contig_alloc", Boolean.class);
public final long heapEndAddress = getFieldValue("CompilerToVM::Data::_heap_end_addr", Long.class, "HeapWord**");
public final long heapTopAddress = versioned.heapTopAddress;
< prev index next >