< prev index next >
src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/CodeSectionProcessor.java
Print this page
*** 30,39 ****
--- 30,41 ----
import jdk.tools.jaotc.binformat.Symbol;
import jdk.tools.jaotc.StubInformation;
import org.graalvm.compiler.code.CompilationResult;
import org.graalvm.compiler.hotspot.HotSpotForeignCallLinkage;
+ import jdk.vm.ci.aarch64.AArch64;
+ import jdk.vm.ci.amd64.AMD64;
import jdk.vm.ci.code.TargetDescription;
import jdk.vm.ci.code.site.Call;
import jdk.vm.ci.code.site.Infopoint;
import jdk.vm.ci.code.site.InfopointReason;
import jdk.vm.ci.meta.ResolvedJavaMethod;
*** 70,80 ****
// Step through all foreign calls, for every call, clear destination.
// Otherwise libelf may not patch them correctly.
for (Infopoint infopoint : compResult.getInfopoints()) {
if (infopoint.reason == InfopointReason.CALL) {
final Call callInfopoint = (Call) infopoint;
! if (callInfopoint.target instanceof HotSpotForeignCallLinkage) {
// TODO 4 is x86 size of relative displacement.
// For SPARC need something different.
int destOffset = infopoint.pcOffset + callInfopoint.size - 4;
targetCode[destOffset + 0] = 0;
targetCode[destOffset + 1] = 0;
--- 72,83 ----
// Step through all foreign calls, for every call, clear destination.
// Otherwise libelf may not patch them correctly.
for (Infopoint infopoint : compResult.getInfopoints()) {
if (infopoint.reason == InfopointReason.CALL) {
final Call callInfopoint = (Call) infopoint;
! if (callInfopoint.target instanceof HotSpotForeignCallLinkage &&
! target.arch instanceof AMD64) {
// TODO 4 is x86 size of relative displacement.
// For SPARC need something different.
int destOffset = infopoint.pcOffset + callInfopoint.size - 4;
targetCode[destOffset + 0] = 0;
targetCode[destOffset + 1] = 0;
< prev index next >