Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
8dbef3c
[GR-59680] Fix master-to-galahad merge conflict 2024-11-07
mur47x111 Nov 7, 2024
583bba8
Automatic merge of master into galahad
OracleLabsAutomation Nov 7, 2024
5dd0370
Automatic merge of master into galahad
OracleLabsAutomation Nov 7, 2024
9c9ba4e
Automatic merge of master into galahad
OracleLabsAutomation Nov 7, 2024
796c1f5
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
cdf9093
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
e0f0f6a
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
bbff8a3
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
1d6df70
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
30bf755
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
5f6b888
Adapt JDK-8305895: Implement JEP 450: Compact Object Headers
mur47x111 Sep 17, 2024
034c107
Update galahad jdk.
mur47x111 Sep 27, 2024
702f048
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
87505cd
[JDK-8339796] Adapt JDK-8305895: Implement JEP 450: Compact Object He…
mur47x111 Nov 8, 2024
1394aaa
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
99ac718
Automatic merge of master into galahad
OracleLabsAutomation Nov 8, 2024
b7176e6
Automatic merge of master into galahad
OracleLabsAutomation Nov 10, 2024
f26efe9
Update galahad JDK
mur47x111 Nov 11, 2024
af0ecc2
[JDK-8343897] Adapt JDK-8342650: Move getChars to DecimalDigits
mur47x111 Nov 11, 2024
22c7f9b
Automatic merge of master into galahad
OracleLabsAutomation Nov 11, 2024
6ba33ca
Automatic merge of master into galahad
OracleLabsAutomation Nov 11, 2024
f737cf8
Update galahad jdk.
mur47x111 Nov 11, 2024
9db91a4
[JDK-8343939] Adapt JDK-8343925: Test HugeToString.java crashes at ja…
mur47x111 Nov 11, 2024
b9ba23c
Automatic merge of master into galahad
OracleLabsAutomation Nov 11, 2024
8722517
Automatic merge of master into galahad
OracleLabsAutomation Nov 11, 2024
39cb93f
Automatic merge of master into galahad
OracleLabsAutomation Nov 12, 2024
5bf540a
Automatic merge of master into galahad
OracleLabsAutomation Nov 12, 2024
4ff4781
Automatic merge of master into galahad
OracleLabsAutomation Nov 12, 2024
a6fae44
Adapt JDK-8338383: Implementation of Synchronize Virtual Threads with…
mur47x111 Oct 17, 2024
7523bba
Update galahad jdk.
mur47x111 Oct 29, 2024
203bb2f
[JDK-8341645] Adapt JDK-8338383: Implementation of Synchronize Virtua…
mur47x111 Nov 12, 2024
90a0996
with the deprecation of security managers in Java 24, default.policy …
wirthi Oct 17, 2024
f82a75a
Adapt JDK-8338411: Implement JEP 486: Permanently Disable the Securit…
mur47x111 Oct 18, 2024
d0207cd
Update galahad JDK.
mur47x111 Oct 22, 2024
e419967
Automatic merge of master into galahad
OracleLabsAutomation Nov 12, 2024
a5db005
[JDK-8342212] Adapt JDK-8338411: Implement JEP 486: Permanently Disab…
mur47x111 Nov 12, 2024
d018617
Automatic merge of master into galahad
OracleLabsAutomation Nov 13, 2024
c485978
Automatic merge of master into galahad
OracleLabsAutomation Nov 13, 2024
2e1a6df
Automatic merge of master into galahad
OracleLabsAutomation Nov 13, 2024
bc83294
Automatic merge of master into galahad
OracleLabsAutomation Nov 13, 2024
681fc9a
Fix JDK21 compatibility issue after JDK-8341645.
mur47x111 Nov 13, 2024
0915cc6
[GR-59798] Fix JDK21 compatibility issue after JDK-8341645.
mur47x111 Nov 13, 2024
a2e1331
Adapt JDK-8343981: Remove usage of security manager from Thread and r…
mur47x111 Nov 13, 2024
daefe02
Update galahad jdk.
mur47x111 Nov 13, 2024
397ed73
[JDK-8344133] Adapt JDK-8343981: Remove usage of security manager fro…
mur47x111 Nov 13, 2024
9b3ae5f
update JVMCI to 24+24-jvmci-b01
OracleLabsAutomation Nov 14, 2024
c41cbf4
compiler: update JVMCIVersionCheck
zapster Nov 15, 2024
a2febde
Merge tag 'jdk-24+24'
zapster Nov 15, 2024
8285173
Merge with master
zapster Nov 15, 2024
aa641ef
svm: update @BasedOnJDKFile annotations
zapster Nov 15, 2024
68bd6ee
svm: adjust @BasedOnJDKFile line range
zapster Nov 15, 2024
2d26131
[GR-59840] Fix virtual thread migration for synchronized native calls.
peter-hofer Nov 12, 2024
acab7f3
[GR-59479] adopt JDK-8338383: Implement JEP 491: Synchronize Virtual …
peter-hofer Nov 13, 2024
da51821
compiler: remove obsolete InvocationPlugin [JDK-8338383]
zapster Nov 15, 2024
b33ac42
svm: fix style issues
zapster Nov 15, 2024
b8fa1d4
deploy snapshots
marwan-hallaoui Nov 15, 2024
3fdf168
svm: more "JDK-8338411: Implement JEP 486: Permanently Disable the Se…
zapster Nov 18, 2024
8295f0a
Fix MonitorSnippets branch probability.
mur47x111 Nov 18, 2024
faa8319
Merge in master
zapster Nov 19, 2024
b6d0234
svm: update @BasedOnJDKFile in AttachListenerThread
zapster Nov 19, 2024
0b1194a
Do not rely on jni_md from JAVA_HOME in mokapot and nespresso
gilles-duboscq Nov 19, 2024
be7cc27
Fix jni copyright header
gilles-duboscq Nov 19, 2024
fdb9fbc
Switched truffle_native_tck gate to JDK-21. JDK-24+b24 removed Securi…
tzezula Nov 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions common.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
"galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+23-2783", "platformspecific": true, "extrabundles": ["static-libs"]},
"galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+24-2950", "platformspecific": true, "extrabundles": ["static-libs"]},

"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true },
Expand Down Expand Up @@ -45,13 +45,13 @@

"oraclejdk23": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+37", "platformspecific": true, "extrabundles": ["static-libs"]},

"oraclejdk-latest": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+23", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-24+23-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-24+23-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-24+23-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-24+23-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-24+23-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-24+23-jvmci-b01-sulong", "platformspecific": true }
"oraclejdk-latest": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+24", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-24+24-jvmci-b01", "platformspecific": true },
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-24+24-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-24+24-jvmci-b01-sulong", "platformspecific": true },
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-24+24-jvmci-b01", "platformspecific": true },
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-24+24-jvmci-b01-debug", "platformspecific": true },
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-24+24-jvmci-b01-sulong", "platformspecific": true }
},

"eclipse": {
Expand Down
2 changes: 1 addition & 1 deletion compiler/mx.compiler/mx_compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ def compiler_gate_benchmark_runner(tasks, extraVMarguments=None, prefix='', task
}

# Renaissance is missing the msvc redistributable on Windows [GR-50132]
if not mx.is_windows():
if not mx.is_windows() and jdk.javaCompliance <= '21':
for name in renaissance_suite.benchmarkList(bmSuiteArgs):
iterations = renaissance_gate_iterations.get(name, -1)
with Task(prefix + 'Renaissance:' + name, tasks, tags=GraalTags.benchmarktest, report=task_report_component) as t:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ public class GraalHotSpotVMConfig extends GraalHotSpotVMConfigAccess {
GraalHotSpotVMConfig(HotSpotVMConfigStore store) {
super(store);

assert narrowKlassShift <= logKlassAlignment : Assertions.errorMessageContext("narrowKlassShift", narrowKlassShift, "logKlassAlignment", logKlassAlignment);
int logMinObjAlignment = logMinObjAlignment();
assert narrowOopShift <= logMinObjAlignment : Assertions.errorMessageContext("narrowOopShift", narrowOopShift, "logMinObjAlignment", logMinObjAlignment);
oopEncoding = new CompressEncoding(narrowOopBase, narrowOopShift);
Expand Down Expand Up @@ -201,6 +200,11 @@ public long gcTotalCollectionsAddress() {
// Compressed Oops related values.
public final boolean useCompressedOops = getFlag("UseCompressedOops", Boolean.class);
public final boolean useCompressedClassPointers = getFlag("UseCompressedClassPointers", Boolean.class);
// JDK-8305895 allows storing the compressed class pointer in the upper 22 bits of the mark
// word. This runtime optimization is guarded by the flag UseCompactObjectHeaders. It depends
// on compressed class pointers, meaning that if useCompactObjectHeaders is true,
// useCompressedClassPointers is certainly true.
public final boolean useCompactObjectHeaders = getFlag("UseCompactObjectHeaders", Boolean.class, false, JDK >= 24);

public final long narrowOopBase = getFieldValue("CompilerToVM::Data::Universe_narrow_oop_base", Long.class, "address");
public final int narrowOopShift = getFieldValue("CompilerToVM::Data::Universe_narrow_oop_shift", Integer.class, "int");
Expand All @@ -213,7 +217,6 @@ public final int logMinObjAlignment() {
public final int narrowKlassSize = getFieldValue("CompilerToVM::Data::sizeof_narrowKlass", Integer.class, "int");
public final long narrowKlassBase = getFieldValue("CompilerToVM::Data::Universe_narrow_klass_base", Long.class, "address");
public final int narrowKlassShift = getFieldValue("CompilerToVM::Data::Universe_narrow_klass_shift", Integer.class, "int");
public final int logKlassAlignment = getConstant("LogKlassAlignmentInBytes", Integer.class);

public final int stackShadowPages = getFlag("StackShadowPages", Integer.class);
public final int vmPageSize = getFieldValue("CompilerToVM::Data::vm_page_size", Integer.class, "size_t");
Expand Down Expand Up @@ -255,12 +258,17 @@ public final int logMinObjAlignment() {

public final int arrayOopDescSize = getFieldValue("CompilerToVM::Data::sizeof_arrayOopDesc", Integer.class, "int");

public final int arrayLengthOffsetInBytes = getFieldValue("CompilerToVM::Data::arrayOopDesc_length_offset_in_bytes", Integer.class, "int", -1, JDK >= 24);

/**
* The offset of the array length word in an array object's header.
* <p>
* See {@code arrayOopDesc::length_offset_in_bytes()}.
*/
public final int arrayOopDescLengthOffset() {
if (JDK >= 24) {
return arrayLengthOffsetInBytes;
}
return useCompressedClassPointers ? hubOffset + narrowKlassSize : arrayOopDescSize;
}

Expand Down Expand Up @@ -294,6 +302,8 @@ public final int arrayOopDescLengthOffset() {
public final int threadCarrierThreadObjectOffset = getFieldOffset("JavaThread::_threadObj", Integer.class, "OopHandle");
public final int threadScopedValueCacheOffset = getFieldOffset("JavaThread::_scopedValueCache", Integer.class, "OopHandle");

public final int javaThreadLockIDOffset = getFieldOffset("JavaThread::_lock_id", Integer.class, "int64_t", -1, JDK > 21);

public final int threadIsInVTMSTransitionOffset = getFieldOffset("JavaThread::_is_in_VTMS_transition", Integer.class, "bool");
public final int threadIsInTmpVTMSTransitionOffset = getFieldOffset("JavaThread::_is_in_tmp_VTMS_transition", Integer.class, "bool", -1, JDK == 21);
public final int threadIsDisableSuspendOffset = getFieldOffset("JavaThread::_is_disable_suspend", Integer.class, "bool", -1, JDK >= 22);
Expand Down Expand Up @@ -365,37 +375,35 @@ public int threadLastJavaFpOffset() {
public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, 0, osArch.equals("amd64"));
public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, 0, osArch.equals("amd64"));

public final int lockMaskInPlace = getConstant("markWord::lock_mask_in_place", Integer.class);
public final long markWordLockMaskInPlace = getConstant("markWord::lock_mask_in_place", Long.class);
public final long markWordHashMask = getConstant("markWord::hash_mask", Long.class);

public final long markWordNoHashInPlace = getConstant("markWord::no_hash_in_place", Long.class);
public final long markWordNoLockInPlace = getConstant("markWord::no_lock_in_place", Long.class);

// Mark word right shift to get identity hash code.
public final int markWordHashCodeShift = getConstant("markWord::hash_shift", Integer.class);
// Mark word right shift to get compressed klass pointer
public final int markWordKlassShift = getConstant("markWord::klass_shift", Integer.class, 0, JDK >= 24);

// The following three constants are declared as 64 bits uintptr_t, but known to be 32 bits
public final int unlockedValue = getConstant("markWord::unlocked_value", Integer.class);
public final int monitorValue = getConstant("markWord::monitor_value", Integer.class);
public final int ageMaskInPlace = getConstant("markWord::age_mask_in_place", Integer.class);
public final int unusedMark = getConstant("markWord::marked_value", Integer.class, 3, JDK > 21);
// Identity hash code value when uninitialized.
public final int uninitializedIdentityHashCodeValue = getConstant("markWord::no_hash", Integer.class);

// This field has no type in vmStructs.cpp
public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null);
public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, JDK > 21 ? "int64_t" : null);
public final int objectMonitorRecursions = getFieldOffset("ObjectMonitor::_recursions", Integer.class, "intptr_t");
public final int objectMonitorCxq = getFieldOffset("ObjectMonitor::_cxq", Integer.class, "ObjectWaiter*");
public final int objectMonitorEntryList = getFieldOffset("ObjectMonitor::_EntryList", Integer.class, "ObjectWaiter*");
public final int objectMonitorSucc = getFieldOffset("ObjectMonitor::_succ", Integer.class, "JavaThread*");

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 long defaultPrototypeMarkWord() {
return this.markWordNoHashInPlace | this.markWordNoLockInPlace;
}

/**
* Mark word right shift to get identity hash code.
*/
public final int identityHashCodeShift = getConstant("markWord::hash_shift", Integer.class);
public final int objectMonitorSucc = getFieldOffset("ObjectMonitor::_succ", Integer.class, JDK > 21 ? "int64_t" : "JavaThread*");

public final int contEntry = getFieldOffset("JavaThread::_cont_entry", Integer.class, "ContinuationEntry*", -1, JDK >= 24);
public final int pinCount = getFieldOffset("ContinuationEntry::_pin_count", Integer.class, "uint32_t", -1, JDK >= 24);

/**
* Identity hash code value when uninitialized.
*/
public final int uninitializedIdentityHashCodeValue = getConstant("markWord::no_hash", Integer.class);

public final int methodCompiledEntryOffset = getFieldOffset("Method::_from_compiled_entry", Integer.class, "address");

public final int compilationLevelFullOptimization = getConstant("CompLevel_full_optimization", Integer.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public final class JVMCIVersionCheck {
private static final Map<String, Map<String, Version>> JVMCI_MIN_VERSIONS = Map.of(
"21", Map.of(DEFAULT_VENDOR_ENTRY, createLegacyVersion(23, 1, 33)),
"24", Map.of(
"Oracle Corporation", createLabsJDKVersion("24+23", 1),
DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("24+23", 1)));
"Oracle Corporation", createLabsJDKVersion("24+24", 1),
DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("24+24", 1)));
private static final int NA = 0;
/**
* Minimum Java release supported by Graal.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -419,15 +419,18 @@ private void emitCodePrefix(CompilationResultBuilder crb, ResolvedJavaMethod ins
CallingConvention cc = regConfig.getCallingConvention(HotSpotCallingConventionType.JavaCallee, null, parameterTypes, this);
Register receiver = asRegister(cc.getArgument(0));
int size = config.useCompressedClassPointers ? 32 : 64;
AArch64Address klassAddress = masm.makeAddress(size, receiver, config.hubOffset);
if (config.icSpeculatedKlassOffset == Integer.MAX_VALUE) {
crb.recordMark(HotSpotMarkId.UNVERIFIED_ENTRY);
Register klass = rscratch1;
if (config.useCompressedClassPointers) {
masm.ldr(32, klass, klassAddress);
if (config.useCompactObjectHeaders) {
((AArch64HotSpotMacroAssembler) masm).loadCompactClassPointer(klass, receiver);
} else {
masm.ldr(size, klass, masm.makeAddress(size, receiver, config.hubOffset));
}
AArch64HotSpotMove.decodeKlassPointer(masm, klass, klass, config.getKlassEncoding());
} else {
masm.ldr(64, klass, klassAddress);
masm.ldr(size, klass, masm.makeAddress(size, receiver, config.hubOffset));
}
// c1_LIRAssembler_aarch64.cpp: const Register IC_Klass = rscratch2;
Register inlineCacheKlass = AArch64HotSpotRegisterConfig.inlineCacheRegister;
Expand All @@ -436,7 +439,6 @@ private void emitCodePrefix(CompilationResultBuilder crb, ResolvedJavaMethod ins
masm.branchConditionally(AArch64Assembler.ConditionFlag.EQ, verifiedStub);
AArch64Call.directJmp(crb, masm, getForeignCalls().lookupForeignCall(IC_MISS_HANDLER));
} else {

// JDK-8322630 (removed ICStubs)
Register data = AArch64HotSpotRegisterConfig.inlineCacheRegister;
Register tmp1 = rscratch1;
Expand All @@ -445,16 +447,24 @@ private void emitCodePrefix(CompilationResultBuilder crb, ResolvedJavaMethod ins

// Size of IC check sequence checked with a guarantee below.
int inlineCacheCheckSize = AArch64Call.isNearCall(icMissHandler) ? 20 : 32;
if (config.useCompactObjectHeaders) {
// Extra instruction for shifting
inlineCacheCheckSize += 4;
}
masm.align(config.codeEntryAlignment, masm.position() + inlineCacheCheckSize);

int startICCheck = masm.position();
crb.recordMark(HotSpotMarkId.UNVERIFIED_ENTRY);
AArch64Address icSpeculatedKlass = masm.makeAddress(size, data, config.icSpeculatedKlassOffset);

masm.ldr(size, tmp1, klassAddress);
if (config.useCompactObjectHeaders) {
((AArch64HotSpotMacroAssembler) masm).loadCompactClassPointer(tmp1, receiver);
} else {
masm.ldr(size, tmp1, masm.makeAddress(size, receiver, config.hubOffset));
}

masm.ldr(size, tmp2, icSpeculatedKlass);
masm.cmp(size, tmp1, tmp2);

masm.branchConditionally(AArch64Assembler.ConditionFlag.EQ, verifiedStub);
AArch64Call.directJmp(crb, masm, icMissHandler);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -29,6 +29,7 @@
import jdk.graal.compiler.asm.aarch64.AArch64Assembler;
import jdk.graal.compiler.asm.aarch64.AArch64MacroAssembler;
import jdk.graal.compiler.core.common.CompressEncoding;
import jdk.graal.compiler.debug.GraalError;
import jdk.graal.compiler.hotspot.GraalHotSpotVMConfig;
import jdk.graal.compiler.lir.aarch64.AArch64Move;
import jdk.vm.ci.aarch64.AArch64;
Expand Down Expand Up @@ -81,23 +82,24 @@ public void verifyOop(Register value, Register tmp, Register tmp2, boolean compr
cbz(compressed ? 32 : 64, value, ok);
}

AArch64Address hubAddress;
int hubSize = config.useCompressedClassPointers ? 32 : 64;
Register object = value;
if (compressed) {
CompressEncoding encoding = config.getOopEncoding();
mov(32, tmp, value);
AArch64Move.UncompressPointerOp.emitUncompressCode(this, tmp, tmp, encoding, true, heapBaseRegister, false);
hubAddress = makeAddress(hubSize, tmp, config.hubOffset);
} else {
hubAddress = makeAddress(hubSize, value, config.hubOffset);
object = tmp;
}

// Load the class
if (config.useCompressedClassPointers) {
ldr(32, tmp, hubAddress);
if (config.useCompactObjectHeaders) {
loadCompactClassPointer(tmp, object);
} else {
ldr(32, tmp, makeAddress(32, object, config.hubOffset));
}
AArch64HotSpotMove.decodeKlassPointer(this, tmp, tmp, config.getKlassEncoding());
} else {
ldr(64, tmp, hubAddress);
ldr(64, tmp, makeAddress(64, object, config.hubOffset));
}
// Klass::_super_check_offset
ldr(32, tmp2, makeAddress(32, tmp, config.superCheckOffsetOffset));
Expand Down Expand Up @@ -127,4 +129,9 @@ public void verifyHeapBase() {
}
}

public void loadCompactClassPointer(Register result, Register receiver) {
GraalError.guarantee(config.useCompactObjectHeaders, "Load class pointer from markWord only when UseCompactObjectHeaders is on");
ldr(64, result, makeAddress(64, receiver, config.markOffset));
lsr(64, result, result, config.markWordKlassShift);
}
}
Loading