< prev index next >
src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/JavaCallSiteRelocationSymbol.java
Print this page
@@ -36,11 +36,23 @@
*/
final class JavaCallSiteRelocationSymbol extends CallSiteRelocationSymbol {
private static final byte[] zeroSlot = new byte[8];
// -1 represents Universe::non_oop_word() value
- private static final byte[] minusOneSlot = {-1, -1, -1, -1, -1, -1, -1, -1};
+ private static final byte[] minusOneSlot;
+
+ static {
+ String archStr = System.getProperty("os.arch").toLowerCase();
+ if (archStr.equals("aarch64")) {
+ // AArch64 is a special case: it uses 48-bit addresses.
+ byte[] non_oop_word = {-1, -1, -1, -1, -1, -1, 0, 0};
+ minusOneSlot = non_oop_word;
+ } else {
+ byte[] non_oop_word = {-1, -1, -1, -1, -1, -1, -1, -1};
+ minusOneSlot = non_oop_word;
+ }
+ }
JavaCallSiteRelocationSymbol(CompiledMethodInfo mi, Call call, CallSiteRelocationInfo callSiteRelocation, BinaryContainer binaryContainer) {
super(createPltEntrySymbol(binaryContainer, mi, call, callSiteRelocation));
StubInformation stub = getStub(mi, call);
addRelocations(mi, stub, binaryContainer, call, callSiteRelocation);
@@ -121,10 +133,11 @@
/**
* Returns the name of the resolve method for this particular call.
*/
private static String getResolveSymbolName(CompiledMethodInfo mi, Call call) {
String resolveSymbolName;
+ String name = call.target.toString();
if (CallInfo.isStaticCall(call)) {
assert mi.hasMark(call, MarkId.INVOKESTATIC);
resolveSymbolName = BinaryContainer.getResolveStaticEntrySymbolName();
} else if (CallInfo.isSpecialCall(call)) {
resolveSymbolName = BinaryContainer.getResolveOptVirtualEntrySymbolName();
< prev index next >