--- old/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/JavaCallSiteRelocationSymbol.java 2018-03-23 16:36:11.201459915 +0000 +++ new/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/JavaCallSiteRelocationSymbol.java 2018-03-23 16:36:10.571522201 +0000 @@ -38,7 +38,19 @@ 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)); @@ -123,6 +135,7 @@ */ 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();